汇编语言复习摘要二——寄存器

CPU中的主要部件是寄存器,寄存器是CPU中程序员可以用指令来读写的部件。通过改变各种寄存器中的内容来实现对CPU的控制。8086CPU有14个寄存器,这里不一一列举。

 

1. 通用寄存器:8086CPU的所有寄存器都是16位的,也就是可以存放两个字节。四个通用寄存器:AX,BX,CX,DX,通常用来存放一般性的数据。

一个16位的寄存器可以存放的最大数值是FFFFH。每个寄存器可分为两个可独立使用的8位寄存器:

AX分为AH和AL;BX分为BH和BL;CX分为CH和CL;DX分为DH和DL,H和L分别表示高8位和低8位。

 

2. 字在寄存器中存储:一个字节是8bit,即一个byte,一个字则是两个字节组成,16个bit,2个byte。所以8086CPU寄存器刚好用来存放一个字。

 

3. 几条汇编指令:太简单了,mov, add而已。要注意的是,像AL和AH这样作为独立使用的寄存器,它们之间是没有关系的。

比如说,执行:mov al, 123H;结果是al的值为23H,最高位的1被丢弃,因为存储不下了,但是并不会存储到ah中,因为要记住,ah和al是相互独立的。

在进行数据传送和运算时,要注意指令的两个操作对象的位数应该是要一致的。比如:mov ax, bx,正确;mov ax, bl,错误。前面是16位,后面的存储器是8位,不一致。

 

4. 16位CPU:这意味着什么?就是CPU一次能处理、传输、暂时存储的信息的最大长度是16位。

 

5. 8086CPU寻址方法:太重要了。8086CPU有20位地址总线,寻址能力为1MB,2^20 = 1MB。而8086CPU是16位的,如何达到20位的寻址?答案是采用两个16位地址合成的方法来形成一个20位的物理地址。这两个地址,一个被称作段地址,另外一个被称作偏移地址。处理流程大概如下:

1) 段地址和偏移地址一起送入一个称作地址加法器的部件;

2)地址加法器算出结果,得到20位的物理地址;

3)结果送入输入输出控制电路;

4)输入输出电路将结果送到地址总线;

5)结果被地址总线传送到存储器;

地址加法器采用这样的计算方法:段地址×16 + 偏移地址 = 物理地址。比如要访问地址12345H,段地址为1230H,偏移地址为0045H,地址加法器这样计算:1230H × 16 + 0045H = 12345H。为什么段地址是1230H?不可以是其他地址吗?答案是可以的:

 

6. 寻址的本质含义:太重要了。如何理解“段地址×16 + 偏移地址 = 物理地址”?内存并没有被分段,段的划分来自CPU而已。如何确定段地址和偏移地址真的不重要,只要你通过段地址和偏移地址得到了最后正确的地址,那么你用任何划分都是可以的。比如,21F60H物理地址,如何寻址?可以采用下面的划分:段地址2000H,偏移地址1F60H;段地址2100H,偏移地址0F60H;等等,只要能算出正确的结果,怎么划分都不重要。所以,这里有一个重要的结论:CPU可以用不同的段地址和偏移地址形成同一个物理地址。

在8086CPU中,存储单元的地址用两个元素来描述,即段地址和偏移地址。所以一般不说:数据在21F60H内存单元中,而是说:数据存在内存2000:1F60单元中。即要用段地址和偏移地址描述。

 

7。 CS和IP:8086CPU有4个段寄存器:CS,DS,SS,ES。CS和IP是两个最关键的寄存器,因为它们指示了CPU当前要读取指令的地址。CS为代码段寄存器,IP为指令指针寄存器。任何时刻,设CS中的内容为M,IP中的内容为N,8086CPU将从内存M × 16 + N 单元开始,读取一条指令并执行。可以说,CPU将CS:IP指向的内容当作指令执行。CPU读取执行指令的流程为:

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

2)IP = IP + 所读取的指令长度,从而指向了下一条命令的地址;

3)执行指令,这个由执行控制器来进行,然后,又回到第一步,循环执行;

 

8. 修改CS、IP指令:通过命令jmp来进行修改,不能使用mov CS,ax来修改。

posted @ 2010-09-23 21:09  Linjian  阅读(783)  评论(0编辑  收藏  举报