《IBM —PC 汇编语言程序设计》 第三章习题

寻址方式PPT
 
 
 
 
 
 
 
 
 
1 给定 (BX)=637DH ,(SI)=2A9BH ,位移量 D=7237H ,试确定在以下各种寻址方式下的有效地址是什么?
(1) 立即寻址
(2) 直接寻址
(3) 使用 BX 的寄存器寻址
(4) 使用 BX 的间接寻址
(5) 使用 BX 的寄存器相对寻址
(6) 基址变址寻址
(7) 相对基址变址寻址
 
答:
(1) 操作数在指令中,即立即数;
立即寻址:类似:MOV AH,20H    操作数和操作码都在指令当中。
(2) EA=D=7237H ;
直接寻址:操作数在内存当中,指令中有操作码和操作数偏移地址,段寄存中的值与EA相加之后才是在内存中的物理地址。
(3) 无 EA ,操作数为 (BX)=637DH ;
寄存器寻址:指令中的操作数在某个寄存器中。例:MOV AX,BX
(4) EA=(BX)=637DH ;
寄存器间接寻址:偏移量EA在BX BP或SI DI 中获得,如果用BP则隐含使用SS段寄存器,其余的隐含使用DS段寄存器。
(5) EA=(BX)+D=0D5B4H;
EA = 偏移量+BX/BP/SI/DI
(6) EA=(BX)+(SI)=8E18H ;
(7) EA=(BX)+(SI)+D=1004FH;超过了段的边界,最高进位位丢失,因此EA=004FH 。

2 试根据以下要求写出相应的汇编语言指令
(1) 把 BX 寄存器和 DX 寄存器的内容相加,结果存入DX 寄存器中。
(2) 用寄存器 BX 和 SI 的基址变址寻址方式把存储器中的一个字节与AL 寄存器的内容相加,并把结果送到 AL 寄存器中。
(3) 用寄存器 BX 和位移量 0B2H 的寄存器相对寻址方式把存储器中的一个字和(CX) 相加,并把结果送回存储器中。
(4) 用位移量为 0524H 的直接寻址方式把存储器中的一个字与数2A59H 相加,并把结果送回存储单元中。
(5) 把数 0B5H 与 (AL) 相加,并把结果送回AL 中。
 
答:
(1) ADD DX, BX
(2) ADD AL, [BX][SI]
(3) ADD [BX+0B2H], CX
(4) ADD WORD PTR [0524H], 2A59H
(5) ADD AL, 0B5H

3 写出把首地址为BLOCK 的字数组的第 6 个字送到 DX 寄存器的指令。要求使用以下几种寻址方式:
(1) 寄存器间接寻址
(2) 寄存器相对寻址
(3) 基址变址寻址
答:
(1) MOV BX, OFFSET BLOCK
      ADD BX, (6 – 1)*2
      MOV DX, [BX]
 
(2) MOV  BX, OFFSET  BLOCK      改为:MOV  BX, (6-1)*2
     MOV  DX, [BX+(6 –1)* 2]            也可  MOV  DX, BLOCK[BX]
 
(3) MOV  BX, OFFSET  BLOCK
     MOV   SI, (6–1)* 2
     MOV   DX, [BX][SI]

4.现有 (DS)=2000H ,(BX)=0100H ,(SI)=0002H ,(20100H)=12H , (20101H)=34H ,(20102H)=56H ,(20103H)=78H ,(21200H)=2AH , (21201H)=4CH,(21202H)=B7H ,(21203H)=65H ,试说明下列各条指令执行完后 AX 寄存器的内容。
 
(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]
答: (1) (AX)=1200H
(2) (AX)=0100H
(3) (AX)=4C2AH
(4) (AX)=3412H
(5) (AX)=4C2AH
(6) (AX)=7856H
(7) (AX)=65B7H

未完待续....

猜你喜欢

转载自www.cnblogs.com/lintianxiajun/p/12790301.html