计算机基础

只愿长相守 提交于 2020-02-23 03:34:33

1、基础概念

寄存器:嵌入到CPU中的内存,也可以理解为CPU里面的存储器,一个CPU有多个寄存器;

总线:连接CPU和其它芯片的导线;

总线在物理上:是一根根导线的集合;逻辑上分为:地址总线、数据总线、控制总线

地址总线:CPU通过地址总线来指定存储单元的。根据地址总线的根数来确定最大的寻址;

数据总线:CPU与内存或其它器件的数据传送;数据总线的宽度决定了CPU和外界数据的传送速度;

控制总线:用来控制外部器件;无非就是读/写;

CPU可以直接使用的信息在存储器中存放;

总结:地址总线决定CPU的寻址能力;数据总线决定一次数据传送量;控制总线决定CPU对其它器件的控制能力;

主板上有核心器件和主要器件(他们通过地址、数据、控制)总线来连接;接口卡;

存储器:(1)、读写属性分:随机存储器(RAM)、只读存储器(ROM);

(2)、功能上分类:随机存储器(RAM)、装有BIOS的ROM、接口卡上的RAM;

BIOS:主板、网卡、显卡、接口卡上都有的软件系统,通过这个可以对该硬件设备进行最基本的输入输出,

内存地址空间:最终运行程序的是CPU,所以用汇编编程的时候,必须要从CPU的角度来考虑问题;

计算机内部都是从0开始的;

任何的指令、命令、数据,在计算机中都为二进制;

2、CPU的内部工作原理

CPU由运算器、控制器、寄存器等组成;

8086CPU有14个寄存器:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。

8086CPU所有的寄存器都是16位的,可以存放2个字节;

AX、BX、CX、DX通常用来存放一般性数据,所以被称为通用寄存器;

AX可以分为:AH和AL;分高8位和低8位;BX、CX、DX也一样分高低位;

为什么划分:为了兼容以前8位寄存器;

AX寄存器模型:

wKiom1gUzKDgKt6GAAAKJSNYOxw690.png-wh_50

AH和AL寄存器是可以独立使用的8位寄存器;

3、汇编指令

一个字可以存在一个16位的寄存器中,word = 2B;

add ax, bx :将AX,BX中的内容相加,结果放到AX中;

物理地址:CPU访问内存时要给出内存单元的地址,内存是一维、线性的连续空间;

4、16位的CPU怎么理解

(1)、运算器(ALU)一次最多可以处理16位的数据;

(2)、寄存器的最大宽度为16位;

(3)、寄存器和运算器之间的通路是16位的;

5、地址加法器

8086有20位的地址总线,可传送20位地址,寻址能力1M;但是内部为16位的结构,表现寻址能力却只有64k;

原因:地址加法器合成物理地址的方法:物理地址 = 段地址*16+偏移地址(将2个16位的地址合成物理地址)

对段地址*16的理解:就是数据左移4位(对二进制);

可以得到一个规律:一个数据的X进制左移1位,相当于乘以X。

6、段

本质:内存并没有分段,段的划分来自CPU,我们自己通过(段地址*16)+偏移地址来得到内存单元的物理地址,这才使得我们用分段的方式来管理内存。

(1)、一个段的起始地址一定是16的倍数;

(2)、一个段的最大长度为64K。

结论:CPU可以用不同的段地址和偏移地址来形成同一个物理地址。

7、段寄存器

(1)、段寄存器就是提供段地址的。

(2)、8086CPU有4个段寄存器:CS、DS、SS、ES;当8086要访问内存时,由这4个段寄存器提供内存单元的段地址。

CS:代码段寄存器;

DS:数据段寄存器;

SS:堆栈段寄存器;

ES:附加段寄存器;

8、CS和IP

(1)、CS和IP是8086CPU中最关键的寄存器,它们指示了CPU当前要读取指令的地址。

CS:代码段寄存器;IP:指令指针寄存器(偏移地址的寄存器);

此时,8086PC工作过程简要:

i>、从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器;

ii>、IP = IP + 所读取指令的长度,从而指向下一条指令;(任务:索引到下一条指令)

iii>、读取指令,一次这样执行工作;

(2)、8086PC工作过程

:在8086CPU加电启动或复位后(就是CPU刚开始工作时,)CS=FFFFH, IP=0000H。

即刚启动时,CPU从内存FFFF0H单元读取指令执行。

FFFF0H单元中的指令是8086开机执行的第一条指令。

(3)、任何时候,CPU将CS、IP中的内容都当做指令的段地址和偏移地址,用他们来合成指令的物理地址,到内存中读取指令码执行。

可以这么理解:内存中的一段信息曾被CPU执行过的话,那么,它所在的内存单元必然被CS:IP指向过。

(4)、可以修改CS:IP中的值来控制CPU的执行目标指令的地址。用jmp来修改段地址和偏移地址;如:jmp 2AE3:3

9、代码段

存放代码的地方,CPU不认识代码段,怎么执行这里的代码呢?

CPU只认被CS:IP指向的内存单元中的内容为指令;

8086机器上,任意时刻,CPU将CS:IP指向的内容当作指令执行;

10、Debug汇编调试器

在winxp系统上,cmd–>debug进入即可(不区分大小写的)。

(1)、常用命令:

R:查看、改变CPU寄存器的内容;

D:查看内存中的内容;

E:改写内存中的内容;

U:将内存中的机器指令翻译成汇编指令;

T:执行一条机器指令;

A:以汇编指令的格式在内存中写入一条机器指令。

截图:

在这里插入图片描述
在这里插入图片描述
debug中的命令还的多加练习,熟悉即可!!!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!