汇编语言sub 【si-300h】,ax的目的操作数地址

2024-12-20 15:02:49
推荐回答(2个)
回答1:

  sub [si-300h],ax

这是寻址方式中的寄存器相对寻址
所以目的操作数的地址是段地址为ds,偏移地址为si-300h的物理地址,
即目的操作数的地址为(ds*10H+si-300h)

ps:若有不明白的地址,可以追问

  寻址方式的简介
  段地址(SA)和偏移地址(EA)
  1.直接寻址
  直接寻址方式是指操作数的偏移地址在指令中直接给出,例如
  MOV AX,[1234H]
  EA = 1234H,SA=DS

  2.寄存器间接寻址
  寄存器间接寻址是指操作数的偏移地址在BX,BP,SI,DI四个寄存 器之一中
  (1) 当以BX,SI或DI寄存器进行间接寻址时,操作数的物理地址 有DS中的段地址与BX,SI或DI中的偏移地址构成

  (2) 当以BP寄存器进行间接寻址时,操作数的物理i地址有SS中的段地址与BP中的偏移地址构成
  MOV AX,[BX,SI或DI]
  EA = BX,SI或DI,SA = DS

  MOV AX,[BP] EA = BP,SA = SS
  3.寄存器相对寻址
  寄存器相对寻址是指操作数的偏移地址是BX,BP,SI,DI之一的值和一个8位或16位偏移地址之和

  (1) 当以BX,SI或DI寄存器进行间接寻址时,操作数的物理地址 有DS中的段地址与BX,SI或DI中的偏移地址构成
  (2) 当以BP寄存器进行间接寻址时,操作数的物理i地址有SS中的段地址与BP中的偏移地址构成
  MOV AX,[BP+100H] EA = BP+100H,SA = SS
  MOV AX,[BX,SI或DI + 100H] EA = BX,SI或DI + 100H,SA = DS
  [BX+100H] 等价于 200H[SI]
  4.基址变址寻址
  基址变址寻址是指操作数的偏移地址是一个基址寄存器BX,BP的值和一个变址寄存器SI,DI的值之和
  (1) 当以BX作为基址寄存器时,操作数物理地址由DS中的段地址与SI或DI中的偏移地址构成
  (2) 当以BP作为基址寄存器是,操作数物理地址由SS中的段地址与SI或DI中的偏移地址构成

  MOV AX,[BX+DI或SI] EA = BX+SI或DI,SA = DS
  MOV AX,[BP+DI或SI] EA = BP+SI或DI,SA = SS
  [BX+SI] 等价于 [BX]+[SI]
  5.相对基址变址寻址
  相对基址变址寻址是指操作数的偏移地址是一个基址寄存器BX,BP的值加上一个变址基础器SI,DI的值,再加上指令中的一个8位,16位偏移量之和
  (1) 当以BX作为基址寄存器时,操作数物理地址由DS中的段地址与SI或DI中的偏移地址构成
  (2) 当以BP作为基址寄存器是,操作数物理地址由SS中的段地址与SI或DI中的偏移地址构成

  MOV AX,[BX+100H+DI或SI] EA = BX+DI或SI+100H,SA = DS
  MOV AX,[BP+100H+DI或SI] EA = BP+DI或SI+100H,SA = SS
  [BX+SI+100H] 等价于 100H[BX+SI] 等价于 [BX]+[SI]+100H

回答2:

目的操作数的地址: DS*16+[SI+(-300H)],此时-300H要转化成补码再相加,它的补码为FD00H,所以也就是DS*16+(SI+FD00H),其中SI+FD00H为偏移地址,相加之后为16位数,如果有进位要舍弃,然后再和DS*16相加.