【例3.4】指令 MOV AX,[BX] 若(Ds)=2000H,(BX)=1000H, 物理地址=20000H+1000H=21000H。 指令执行前,(AX)=2030H,(21000H)=0A0H, (21001H)=50H, 指令执行后,(AX)=50A0H,(21000H)=0AOH (21001H)=50H。 AX 指令执行情况如下 AH AL 数据段物理地址 AOH 21000H 2000lH 56H 20002H BYCK
AX AH AL 数据段 物理地址 A0H 21000H 50H 20001H 56H 20002H 【例3.4】指令 MOV AX,[BX] 若(DS)=2000H,(BX)=1000H, 物理地址=20000H+1000H=21000H。 指 令 执 行前,(AX)=2030H,(21000H)=0A0H, (21001H)=50H, 指令执 行后,(AX)=50A0H,(21000H)=0A0H, (21001H)=50H。 指令执行情况如下:
3.1.5寄存器相对寻址(直接变址寻址、变址寻址) 寄存器相对寻址方式是在指令中给定一个基址寄存器(或变址 寄存器)名和一个8位或16位的相对偏移量,两者之和作为操作数 的有效地址EA。对BX、SI、D这三个间址寄存器,指示的是数据 段中的数据,而用BP作间址寄存器,则指示的是堆栈段中的数据。 汇编格式:Ⅺ[R](X表示位移量,是8位或16位二进制补码表示的 有符号数,R表示寄存器)。 功能:操作数存放在存储器,寄存器R的内容加位移量X为操作数 的偏移地址EA。 有效地址EA计算方法如右: S]+xSI作变址寄存器 kA丿D+XD作变址寄存器 B+XB作变址寄存器。 門]+XBP作变址寄存器
3.1.5 寄存器相对寻址(直接变址寻址、变址寻址) 寄存器相对寻址方式是在指令中给定一个基址寄存器(或变址 寄存器)名和一个8位或16位的相对偏移量,两者之和作为操作数 的有效地址EA。对BX、SI、DI这三个间址寄存器,指示的是数据 段中的数据,而用BP作间址寄存器,则指示的是堆栈段中的数据。 汇编格式:X[R](X表示位移量,是8位或16位二进制补码表示的 有符号数, R表示寄存器)。 功能:操作数存放在存储器,寄存器R的内容加位移量X为操作数 的偏移地址EA。 有效地址EA计算方法如右:
特点: (1)SI、DI、BX默认的段寄存器为DS,BP默认的段寄存器为 (2)可以使用段寄存器超越前缀来寻址其他段。 (3)寄存器相对寻址方式适用于表格处理。表首的地址可设置 为偏移量指针,利用修改基址或变址寄存器的内容来获得表格中 的内容。 【例3.5】设执行前:(AX)=0040H,(BX)=0030H (DS)=2000H,(20036H)=0050H 执行指令:ADD6[Bx],AX 执行后:(AX)=?,(BX)=?,(DS)=?,(20036H)=? 图形表示如下:
特点: (1)SI、DI、BX默认的段寄存器为DS,BP默认的段寄存器为 SS。 (2)可以使用段寄存器超越前缀来寻址其他段。 (3)寄存器相对寻址方式适用于表格处理。表首的地址可设置 为偏移量指针,利用修改基址或变址寄存器的内容来获得表格中 的内容。 【例3.5】设执行前: (AX)=0040H,(BX)=0030H, (DS)=2000H,(20036H)=0050H 执行指令:ADD 6[BX],AX 执行后:(AX)=?,(BX)=?,(DS)=?,(20036H)=? 图形表示如下:
执行前:(AX)=0040H,(BX)=0030H,(Ds) =2000H,(20036H)=0050H 执行指令:ADD6[BⅪ],AX 执行:(20036H)+(AX)→(20036H) 执行后:(AX)=0040H, (BX)=0030H,,R BX DS (Ds)=2000H, 指 0030H 2000H 左移4位 (20036=0098 图形表示如右: 0036H BUCK 20036Hp05mH
执行前: (AX)=0040H,(BX)=0030H,(DS) =2000H,(20036H)=0050H 执行指令:ADD 6[BX],AX 执行:(20036H)+(AX) →(20036H) 执行后:(AX)=0040H, (BX)=0030H, (DS)=2000H, (20036H)=0090H。 图形表示如右:
3.1.6基址变址寻址 把BX和BP看成是基址寄存器,把SI、D看成是变址寄存器 把一个基址寄存器(BX或BP)的内容加上一个变址寄存器(SI 或D)的内容作为操作数的偏移地址。但指令中不能同时出现两 个基址寄存器或两个变址寄存器。 操作数在存储器中,其有效地址EA由(基址寄存器)+ (变址寄存器)形成。 特点 (1)基址寄存器为BX时,默认为数据段Ds、基址寄存器为BP 时默认为堆栈段SS;变址寄存器为SI、DI (2)可以使用段寄存器超越前缀来寻址其他段。 (3)基址变址寻址方式适用于数组或表格处理。首地址可设置 在基址寄存器中,变址寄存器用于访问数组中的元素或表格中的 内容。基址寄存器和变址寄存器均可以修改,非常灵活
3.1.6 基址变址寻址 把BX和BP看成是基址寄存器,把SI、DI看成是变址寄存器, 把一个基址寄存器(BX或BP)的内容加上一个变址寄存器(SI 或DI)的内容作为操作数的偏移地址。但指令中不能同时出现两 个基址寄存器或两个变址寄存器。 操作数在存储器中,其有效地址EA由(基址寄存器)+ (变址寄存器)形成。 特点: (1)基址寄存器为BX时,默认为数据段DS、基址寄存器为BP 时,默认为堆栈段SS;变址寄存器为SI、DI。 (2)可以使用段寄存器超越前缀来寻址其他段。 (3)基址变址寻址方式适用于数组或表格处理。首地址可设置 在基址寄存器中,变址寄存器用于访问数组中的元素或表格中的 内容。基址寄存器和变址寄存器均可以修改,非常灵活