8086CPU的寻址方式

来源:互联网 发布:mac系统使用视频教程 编辑:程序博客网 时间:2024/06/06 22:03

三、8086CPU的寻址方式

1、与数据有关的寻址方式(主要在数据段内找数据)

(1)立即寻址:数据在指令内以立即数形式存在

示例:MOV  AX,05H   (其中05H即为立即数)

操作限制:注意立即数的表数范围,不要超范围

         立即数不可作为目的操作数

(2)寄存器寻址:数据存放在寄存器内

示例:MOV  AX,BX   (源操作数BX和目的操作数AX均为寄存器寻址)

操作限制:注意源操作数和目的操作数的格式匹配,即均为8位或均为16位

          有些寄存器不允许作为目的操作数,例如:CS、DS、ES、SS、IP

(3)直接寻址:指令中给出数据的有效地址

示例:MOV  AX,[2000H]  (2000H即为偏移地址,加方括号和立即数区别)

     MOV  AX,TABLE  (TABLE为符号地址名,对应相应的偏移地址值)

MOV  AX,ES:[2000H] (允许段跨越形式,SS、CS亦可以,默认为DS)

操作限制:双操作数至少有一个为寄存器形式,不允许都为直接寻址

         主存操作的高高低低原则

(4)寄存器间接寻址:数据的有效地址放在寄存器中

示例:MOV  AX,[BX]  (BX内为偏移地址,加方括号和寄存器寻址区别)

     MOV  [BP] ,AX  (源和目的均可以)

操作限制:只有BX、BP、SI和DI可以使用,其它寄存器不允许

         用BX、SI和DI时,是在数据段,以DS为基地址寄存器

         用BP时,是在堆栈段,以SS为基地址寄存器

(5)寄存器相对寻址:在寄存器间址的基础上,再加上相对偏移量

示例:MOV  AX,TABLE[BX]  (符号地址TABLE即为相对偏移量)

          MOV 50H[BP] ,AX (相对量也可以是立即数,立即数为补码)

注意:寄存器的值加上相对偏移量的值,二者之和为最后的偏移地址

相对量可以是补码,位数不匹配,计算机自动完成位扩展,即正数前补0,负数前补1

操作限制:只有BX、BP、SI和DI可以使用,其它寄存器不允许

         用BX、SI和DI时,是在数据段,以DS为基地址寄存器

         用BP时,是在堆栈段,以SS为基地址寄存器

实质上可以构成一个一维数组

(6)基址变址寻址:基址寄存器和变址寄存器的值相加,和为偏移地址

示例:MOV  AX,[BX][SI]  (两寄存器均加方括号)

          MOV AX,[BX + SI]  (也可这样书写)

    注意:基址寄存器只有BX和BP,变址寄存器只有SI和DI,二者排列组合只有四种形式

操作限制:只有BX、BP、SI和DI可以使用,其SI和DI是配合使用

         用BX时,是在数据段,以DS为基地址寄存器

              用BP时,是在堆栈段,以SS为基地址寄存器

(7)相对基址变址寻址:上述(5)和(6)的组合使用

示例:MOV  AX,TABLE[BX][SI]  (基址、变址再加上相对量)

          MOV AX,[BX + SI + TABLE]  (也可这样书写)

操作限制:用BX时,是在数据段,以DS为基地址寄存器

              用BP时,是在堆栈段,以SS为基地址寄存器

    实质上可以构成一个二维数组

2、与转移地址有关的寻址方式(主要在代码段内找指令)

(1)段内直接寻址:段基址不变,指令直接给出地址偏移量(数值为补码)

注意:不是偏移地址值

汇编程序计算当前指令与目的地址之间的相对偏移量,向后跳IP加正值,向前跳IP加负值(即减值)

示例:JMP  SHORT TABLE (TABLE为跳转的目的地址,SHORT标识为短跳,即8位偏移量)

          JMP NEAR  PTR  TABLE (PTR为属性指针,NEAR标识16位偏移量)

注意:8位偏移量范围为-128—127,即IP最大加127,最小减128

     16位偏移量范围为-32768—32767,即IP最大加32767,最小减32768

      以上为IP的转移范围

操作限制:条件转移时,仅允许8位偏移量

          只用符号地址形式,不允许直接给地址值

(2)段内间接寻址:段基址不变,用其它的寻址方式找出一个地址值(16位)放入IP

示例:JMP  BX (把BX寄存器的值放入IP)

          JMP WORD  PTR  [SI] (以寄存器SI的值为地址,取出一个字放入IP)

操作限制:除立即寻址外,其它寻址方式均可以(直接寻址方式即上述的段内直接寻址)

(3)段间直接寻址:给出的符号地址与跳转指令不在一个段内,段基址需要改变

示例:JMP FAR  PTR  TABLE (FAR标识TABLE在另一个段内)

操作时把TABLE所在段的段基址放入CS,把TABLE的段内偏移地址放入IP

(4)段间间接寻址:用其它的寻址方式找出一个双字,低位放入IP,高位放入CS

示例:JMP DWORD  PTR  [SI]

以寄存器SI的值为地址,取出一个双字,低字放入IP,高字放入CS

操作限制:立即寻址、寄存器寻址和直接寻址方式除外,其它寻址方式均可以


原创粉丝点击