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

寻址方式PPT
 

 
 
 
 
 
 
 
 
 
 
 
 
 
1 给定 (BX)=637DH ,(SI)=2A9BH ,位移量 D=7237H ,试确定在以下各种寻址方式下的有效地址是什么?(有效地址也是偏移量EA)
(1) 立即寻址
(2) 直接寻址
(3) 使用 BX 的寄存器寻址
(4) 使用 BX 的间接寻址
(5) 使用 BX 的寄存器相对寻址
(6) 基址变址寻址
(7) 相对基址变址寻址
 
答:
(1) 操作数在指令中,即立即数;
(2) EA=D=7237H ;
(3) 无 EA ,操作数为 (BX)=637DH ;
(4) EA=(BX)=637DH ;
(5) EA=(BX)+D=0D5B4H;
(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 0B2H[BX], CX
(4) ADD WORD PTR [0524H], 2A59H    (WORD PTR相当于指定一个字)
(5) ADD AL, 0B5H

3 写出把首地址为BLOCK 的字数组的第 6 个字送到 DX 寄存器的指令。要求使用以下几种寻址方式:
(1) 寄存器间接寻址
(2) 寄存器相对寻址
(3) 基址变址寻址
答:
(1) MOV BX, OFFSET BLOCK
      ADD BX, (6 – 1)*2
      MOV DX, [BX]
 
补充OFFSET的用法:
 
(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

5. 给定 (IP)=2BC0H ,(CS)=0200H ,位移量 D=5119H ,(BX)=1200H ,(DS)=212AH ,(224A0H)=0600H , (275B9H)=098AH ,试为以下的转移指令找出转移的偏移地址。
(1) 段内直接寻址
(2) 使用 BX 及寄存器间接寻址方式的段内间接寻址
(3) 使用 BX 及寄存器相对寻址方式的段内间接寻址 
答: (1) JMP NEAR PTR 5119H ;(IP)=5119H+((IP)+03H)=7CDCH ,物理地址 PA=09CDCH (IP)+03H 是 JMP NEAR PTR 5119H 指令的下一条指令的首地址。 (2) JMP WORD PTR [BX] ;(IP)=((DS)*10H+(BX))=0600H ,PA=02600H (3) JMP D[BX] ;(IP)=((DS)*10H+(BX)+D)=098AH ,PA=0298AH

6.设当前数据段寄存器的内容为 1B00H,在数据段的偏移地址 2000H 单元内,含有一个内容为 0FF10H 和 8000H 的指针,它们是一个 16 位变量的偏移地址和段地址,画图表示出来。 

7.在 0624H 单元内有一条二字节 JMP SHORT OBJ 指令,如其中位移量为 (1) 27H,(2) 6BH,(3) 0C6H,试问转向地址 OBJ 的值是多少?

答: (1) OBJ=0624H+02H+27H=064DH

  (2) OBJ=0624H+02H+6BH=0691H

  (3) OBJ=0624H+02H+0C6H=05ECH ;C6H 对应的负数为 -3AH (向上转移,负位移量)


8.假定 (DS)=2000H ,(ES)=2100H ,(SS)=1500H,(SI)=00A0H ,(BX)=0100H ,(BP)=0010H ,数据段 中变量名 VAL 的偏移地址为 0050H,试指出下列源操作数字段的寻址方式是什么?其物理地址值 是多少?

(1) MOV  AX, 0ABH

(2) MOV  AX, BX

(3) MOV AX, [100H]

(4) MOV AX, VAL

(5) MOV AX, [BX]

(6) MOV AX, ES:[BX]

(7) MOV AX, [BP] 

(8) MOV AX, [SI]

(9) MOV AX, [BX+10]

(10) MOV AX, VAL[BX]

(11) MOV AX, [BX][SI]

(12) MOV AX, VAL[BX][SI] 

答: (1) 立即方式; 操作数在本条指令中

(2) 寄存器寻址方式; 操作数为 (BX)=0100H

(3) 直接寻址方式; PA=20100H

(4) 直接寻址方式; PA=20050H

(5) BX 寄存器间接寻址方式; PA=20100H

(6) 附加段 BX 寄存器间接寻址方式; PA=21100H

(7) BP 寄存器间接寻址方式; PA=15010H

(8) SI 寄存器间接寻址方式; PA=200A0H

(9) BX 寄存器相对寻址方式; PA=20110H

(10) BX 寄存器相对寻址方式; PA=20150H

(11) BX 和 SI 寄存器基址变址寻址方式; PA=201A0H

(12) BX 和 SI 寄存器相对基址变址寻址方式; PA=201F0H 


9 在 ARRAY 数组中依次存储了七个字数据,紧接着是名为 ZERO 的字单元,表示如下: ARRAY DW 23, 36, 2, 100, 32000, 54, 0 ZERO DW ?

(1) 如果 BX 包含数组 ARRAY 的初始地址,请编写指令将数据 0 传送给 ZERO 单元。

(2) 如果 BX 包含数据 0 在数组中的位移量,请编写指令将数据 0 传送给 ZERO 单元。

答: (1) MOV AX, [BX+(7-1)*2]

  MOV [BX+(7)*2], AX

  (2) MOV AX, ARRAY [BX]

  MOV ARRAY [BX+2], AX 


10.如 TABLE 为数据段中 0032 单元的符号名,其中存放的内容为 1234H,试问以下两条指令有什么 区别?指令执行完后 AX 寄存器的内容是什么? 

MOV AX, TABLE

LEA AX, TABLE 

答:

MOV AX, TABLE 是将 TABLE 单元的内容送到 AX ,(AX)=1234H

LEA AX,TABLE 是将 TABLE 单元的有效地址送到 AX ,(AX)=0032H 


 
posted @ 2020-04-27 21:27  军临天下jyj  阅读(2145)  评论(0编辑  收藏  举报