汇编读书笔记 -- 第二章

来源:互联网 发布:选择网络项目的标准 编辑:程序博客网 时间:2024/05/22 17:12

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

通用寄存器:

AX、BX、CX、DX称为数据寄存器:

AX: 累加寄存器

BX: 基地址寄存器

CX: 计数器寄存器

DX: 数据寄存器

SP和BP称为指针寄存器:

SP: 堆栈指针寄存器

BP: 基指针寄存器

SI和DI又称为变址寄存器:

SI: 源变址寄存器

DI: 目的变址寄存器

        

         段寄存器:

                   CS:代码段寄存器

                   DS:数据段寄存器

                   SS:堆栈段寄存器

                   ES:附加段寄存器

                    

         控制寄存器:

                   IP:指令指针寄存器

                   FLAG:标志寄存器

 

2、8086CPU采用一种在内部用两个16位地址合成的方法来形成一个20位的物理地址:

                                    物理地址 = 短地址*16 + 偏移地址

   本质含义:CPU在访问内存时,用一个基础地址(段地址*16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址。



段的长度:偏移地址为16位,16位地址的寻址能力为64KB,所以一个段的长度最大为64KB。

3、8086CPU的工作过程:

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

  2)、IP = IP + 所读指令的长度,从而指向下一条指令。

  3)、执行指令。 转到步骤1),重复这个过程。

 

4、  修改CS、IP的指令

jmp  段地址:偏移地址

jmp  某一合法的寄存器

举例:jmp  1000:3    ===========>     CS = 1000, IP = 3

      mov  ax, 100

jmp ax        ===========>     CS 值不变,  IP = 100

 

5、  寄存器、内存单元、立即数之间的相互赋值规则:

只有通用寄存器才能操作立即数,其它段寄存器以及内存单元都要通过通用寄存器来中转。


0 0
原创粉丝点击