现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,试说明下列各条指令执行完后AX寄存器的内容。
首先要知道AL,AH合并起来是AX。其中,AX是一个16位寄存器,AH就是AX的高字节(高8位),AL是AX的低字节(低8位)。
(1) MOV AX, 1200H
(2) MOV AX, BX
(3) MOV AX, [1200H]
(4) MOV AX, [BX]
(5) MOV AX, 1100[BX]
(6) MOV AX, [BX][SI]
(7) MOV AX, 1100[BX][SI]
加了[ ]的BX是指BX所指向的存储单元的内容
不加[ ]的BX就是BX寄存器的内容。
答 :
(1) (AX)=( 1200H )
(2) (AX)=( 0100H )
(3) (AX)=( 4C2AH )
(4) (AX)=(3412H )
(5) (AX)=( 4C2AH )
(6) (AX)=( 7856H )
(7) (AX)=(65B7H)
注:下面的16 * DS,DS为16进制,所以在直接表现上为在DS后加一个零如16 * DS=20000H
段地址*16的意思是:让段地址左移4位,比如2000H左移4位,成为20000H。再加上一个16位的偏移地址。这样就是20位的物理地地址了。
(3)开始的寻址计算中,获得AL后,+1H的内容为AH,合起来后为AX
(1) MOV AX, 1200H:
立即寻址,直接把1200H赋给AX
(2) MOV AX, BX:
寄存器寻址,把BX赋给AX
AX=BX=0100H
(3) MOV AX, [1200H]:
直接寻址方式,AL=16 * DS+1200H=21200H= 2AH
AH=AL+1H=21201H=4CH
AX=4C2AH。下面几题计算方法一样。
(4) MOV AX, [BX]
寄存器间接寻址,AL=16 * DS+BX=20100H=12H
(5) MOV AX, 1100[BX]
寄存器相对寻址,AL=16 * DS+BX+1100=21200H=
2AH
(6) MOV AX, [BX] [SI]
基址变址寻址,AL=16 * DS+BX+SI=20102H=56H
(7) MOV AX, 1100[BX][SI]
相对基址变址寻址,AL=16 * DS+1100+[BX]+[SI]=21202H=B7H
来源:CSDN
作者:恋霏雨
链接:https://blog.csdn.net/z2431435/article/details/104826425