慢慢冰 發表於 2020-4-27 21:27:00

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

<div>寻址方式PPT</div>
<div><img src="https://img2020.cnblogs.com/blog/1977299/202004/1977299-20200427211624563-573021881.png"></div>
<div>&nbsp;</div>
<div><hr></div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div><img src="https://img2020.cnblogs.com/blog/1977299/202004/1977299-20200427211658732-552515258.png"></div>
<div><img src="https://img2020.cnblogs.com/blog/1977299/202004/1977299-20200427211716410-123932352.png"></div>
<div>&nbsp;</div>
<div><img src="https://img2020.cnblogs.com/blog/1977299/202004/1977299-20200427211924822-2015374308.png"></div>
<div>&nbsp;</div>
<div><img src="https://img2020.cnblogs.com/blog/1977299/202004/1977299-20200427211944347-897303636.png"></div>
<div>&nbsp;</div>
<div><img src="https://img2020.cnblogs.com/blog/1977299/202004/1977299-20200427211954132-788743956.png"></div>
<div>&nbsp;</div>
<div><img src="https://img2020.cnblogs.com/blog/1977299/202004/1977299-20200427212004764-1880905503.png"></div>
<div><img src="https://img2020.cnblogs.com/blog/1977299/202004/1977299-20200427212043612-394699339.png"></div>
<div><img src="https://img2020.cnblogs.com/blog/1977299/202004/1977299-20200427212055310-1524675079.png"></div>
<div>&nbsp;</div>
<div><img src="https://img2020.cnblogs.com/blog/1977299/202004/1977299-20200427212106286-310613824.png"></div>
<div>&nbsp;</div>
<div><img src="https://img2020.cnblogs.com/blog/1977299/202004/1977299-20200427212117551-665300936.png"></div>
<div>&nbsp;</div>
<div>1 给定 (BX)=637DH ,(SI)=2A9BH ,位移量 D=7237H ,试确定在以下各种寻址方式下的有效地址是什么?(有效地址也是偏移量EA)</div>
<div>(1) 立即寻址</div>
<div>(2) 直接寻址</div>
<div>(3) 使用 BX 的寄存器寻址</div>
<div>(4) 使用 BX 的间接寻址</div>
<div>(5) 使用 BX 的寄存器相对寻址</div>
<div>(6) 基址变址寻址</div>
<div>(7) 相对基址变址寻址</div>
<div>&nbsp;</div>
<div>
<div>答:</div>
<div>(1) 操作数在指令中,即立即数;</div>
<div>(2) EA=D=7237H ;</div>
<div>(3) 无 EA ,操作数为 (BX)=637DH ;</div>
<div>(4) EA=(BX)=637DH ;</div>
<div>(5) EA=(BX)+D=0D5B4H;</div>
<div>(6) EA=(BX)+(SI)=8E18H ;</div>
<div>(7) EA=(BX)+(SI)+D=1004FH;超过了段的边界,最高进位位丢失,因此EA=004FH 。</div>
<div><hr></div>
<div>
<div>2 试根据以下要求写出相应的汇编语言指令</div>
<div>(1) 把 BX 寄存器和 DX 寄存器的内容相加,结果存入DX 寄存器中。</div>
<div>(2) 用寄存器 BX 和 SI 的基址变址寻址方式把存储器中的一个字节与AL 寄存器的内容相加,并把结果送到 AL 寄存器中。</div>
<div>(3) 用寄存器 BX 和位移量 0B2H 的寄存器相对寻址方式把存储器中的一个字和(CX) 相加,并把结果送回存储器中。</div>
<div>(4) 用位移量为 0524H 的直接寻址方式把存储器中的一个字与数2A59H 相加,并把结果送回存储单元中。</div>
<div>(5) 把数 0B5H 与 (AL) 相加,并把结果送回AL 中。</div>
<div>&nbsp;</div>
<div>
<div>答:</div>
<div>(1) ADD&nbsp;DX, BX</div>
<div>(2) ADD&nbsp;AL, </div>
<div>(3) ADD&nbsp;0B2H, CX</div>
<div>(4) ADD&nbsp;WORD PTR , 2A59H&nbsp; &nbsp; (WORD PTR相当于指定一个字)</div>
<div>(5) ADD&nbsp;AL, 0B5H</div>
<div><hr>
<div>3 写出把首地址为BLOCK 的字数组的第 6 个字送到 DX 寄存器的指令。要求使用以下几种寻址方式:</div>
<div>(1) 寄存器间接寻址</div>
<div>(2) 寄存器相对寻址</div>
<div>(3) 基址变址寻址</div>
<div>
<div>答:</div>
<div>(1) MOV&nbsp;BX, OFFSET&nbsp;BLOCK</div>
<div>&nbsp; &nbsp; &nbsp; ADD&nbsp;BX, (6 – 1)*2</div>
</div>
</div>
</div>
</div>
<div>
<div>&nbsp; &nbsp; &nbsp; MOV&nbsp;DX, </div>
<div>&nbsp;</div>
<div>补充OFFSET的用法:</div>
<div><img src="https://img2020.cnblogs.com/blog/1977299/202004/1977299-20200429131225794-1909115529.png"></div>
<div>&nbsp;</div>
<div>(2) MOV&nbsp;&nbsp;BX, OFFSET&nbsp;&nbsp;BLOCK&nbsp; &nbsp; &nbsp; 改为:MOV&nbsp;&nbsp;BX, (6-1)*2</div>
<div>&nbsp; &nbsp; &nbsp;MOV&nbsp;&nbsp;DX, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 也可&nbsp;&nbsp;MOV&nbsp;&nbsp;DX, BLOCK</div>
<div>&nbsp;</div>
<div>(3) MOV&nbsp;&nbsp;BX, OFFSET&nbsp;&nbsp;BLOCK</div>
<div>&nbsp; &nbsp; &nbsp;MOV&nbsp; &nbsp;SI, (6–1)* 2</div>
<div>&nbsp; &nbsp; &nbsp;MOV&nbsp; &nbsp;DX, </div>
<div><hr></div>
</div>
<div>
<div>4.现有 (DS)=2000H ,(BX)=0100H ,(SI)=0002H ,(20100H)=12H , (20101H)=34H ,(20102H)=56H ,(20103H)=78H ,(21200H)=2AH , (21201H)=4CH,(21202H)=B7H ,(21203H)=65H ,试说明下列各条指令执行完后 AX 寄存器的内容。</div>
<div>&nbsp;</div>
<div>
<div>(1) MOV&nbsp;&nbsp;AX, 1200H</div>
<div>(2) MOV&nbsp;&nbsp;AX, BX</div>
<div>(3) MOV&nbsp;&nbsp;AX, </div>
<div>(4) MOV&nbsp;&nbsp;AX, </div>
<div>(5) MOV&nbsp;&nbsp;AX, 1100</div>
<div>(6) MOV&nbsp;&nbsp;AX, </div>
<div>(7) MOV&nbsp;&nbsp;AX, 1100</div>
</div>
</div>
<div>&nbsp;</div>
<div>
<div>答:</div>
<div> (1) (AX)=1200H</div>
<div>(2) (AX)=0100H</div>
<div>(3) (AX)=4C2AH</div>
<div>(4) (AX)=3412H</div>
<div>(5) (AX)=4C2AH</div>
<div>(6) (AX)=7856H</div>
<div>(7) (AX)=65B7H</div>
</div>
<div><hr>5. 给定 (IP)=2BC0H ,(CS)=0200H ,位移量 D=5119H ,(BX)=1200H ,(DS)=212AH ,(224A0H)=0600H , (275B9H)=098AH ,试为以下的转移指令找出转移的偏移地址。</div>
<div> (1) 段内直接寻址</div>
<div> (2) 使用 BX 及寄存器间接寻址方式的段内间接寻址</div>
<div> (3) 使用 BX 及寄存器相对寻址方式的段内间接寻址&nbsp;</div>
<div>答: (1) JMP NEAR PTR 5119H ;(IP)=5119H+((IP)+03H)=7CDCH ,物理地址 PA=09CDCH (IP)+03H 是 JMP NEAR PTR 5119H 指令的下一条指令的首地址。 (2) JMP WORD PTR ;(IP)=((DS)*10H+(BX))=0600H ,PA=02600H (3) JMP D ;(IP)=((DS)*10H+(BX)+D)=098AH ,PA=0298AH</div>
<div><hr>6.设当前数据段寄存器的内容为 1B00H,在数据段的偏移地址 2000H 单元内,含有一个内容为 0FF10H 和 8000H 的指针,它们是一个 16 位变量的偏移地址和段地址,画图表示出来。&nbsp;</div>
<div><img src="https://img2020.cnblogs.com/blog/1977299/202004/1977299-20200429133046285-1157480970.png"></div>
<div><hr>
<p>7.在 0624H 单元内有一条二字节 JMP SHORT OBJ 指令,如其中位移量为 (1) 27H,(2) 6BH,(3) 0C6H,试问转向地址 OBJ 的值是多少?</p>
<p>答: (1) OBJ=0624H+02H+27H=064DH </p>
<p>  (2) OBJ=0624H+02H+6BH=0691H </p>
<p>  (3) OBJ=0624H+02H+0C6H=05ECH ;C6H 对应的负数为 -3AH (向上转移,负位移量)</p>
<hr>
<p>8.假定 (DS)=2000H ,(ES)=2100H ,(SS)=1500H,(SI)=00A0H ,(BX)=0100H ,(BP)=0010H ,数据段 中变量名 VAL 的偏移地址为 0050H,试指出下列源操作数字段的寻址方式是什么?其物理地址值 是多少?</p>
<p> (1) MOV&nbsp; AX, 0ABH </p>
<p>(2) MOV&nbsp; AX, BX </p>
<p>(3) MOV AX, </p>
<p>(4) MOV AX, VAL </p>
<p>(5) MOV AX, </p>
<p>(6) MOV AX, ES: </p>
<p>(7) MOV AX, &nbsp; </p>
<p>(8) MOV AX, </p>
<p>(9) MOV AX, </p>
<p>(10) MOV AX, VAL </p>
<p>(11) MOV AX, </p>
<p> (12) MOV AX, VAL&nbsp;</p>
<p>答: (1) 立即方式; 操作数在本条指令中</p>
<p>(2) 寄存器寻址方式; 操作数为 (BX)=0100H </p>
<p>(3) 直接寻址方式; PA=20100H </p>
<p>(4) 直接寻址方式; PA=20050H </p>
<p>(5) BX 寄存器间接寻址方式; PA=20100H </p>
<p>(6) 附加段 BX 寄存器间接寻址方式; PA=21100H </p>
<p>(7) BP 寄存器间接寻址方式; PA=15010H </p>
<p>(8) SI 寄存器间接寻址方式; PA=200A0H </p>
<p>(9) BX 寄存器相对寻址方式; PA=20110H </p>
<p>(10) BX 寄存器相对寻址方式; PA=20150H </p>
<p>(11) BX 和 SI 寄存器基址变址寻址方式; PA=201A0H </p>
<p>(12) BX 和 SI 寄存器相对基址变址寻址方式; PA=201F0H&nbsp;</p>
<hr>
<p>9 在 ARRAY 数组中依次存储了七个字数据,紧接着是名为 ZERO 的字单元,表示如下: ARRAY DW 23, 36, 2, 100, 32000, 54, 0 ZERO DW ? </p>
<p>(1) 如果 BX 包含数组 ARRAY 的初始地址,请编写指令将数据 0 传送给 ZERO 单元。 </p>
<p>(2) 如果 BX 包含数据 0 在数组中的位移量,请编写指令将数据 0 传送给 ZERO 单元。 </p>
<p>答: (1) MOV AX, </p>
<p>  MOV , AX </p>
<p>  (2) MOV AX, ARRAY </p>
<p>  MOV ARRAY , AX&nbsp;</p>
<hr>
<p>10.如 TABLE 为数据段中 0032 单元的符号名,其中存放的内容为 1234H,试问以下两条指令有什么 区别?指令执行完后 AX 寄存器的内容是什么?&nbsp;</p>
<p>MOV AX, TABLE </p>
<p>LEA AX, TABLE&nbsp;</p>
<p>答:</p>
<p> MOV AX, TABLE 是将 TABLE 单元的内容送到 AX ,(AX)=1234H </p>
<p>LEA AX,TABLE 是将 TABLE 单元的有效地址送到 AX ,(AX)=0032H&nbsp;</p>
</div>
<div><hr></div>
<div>&nbsp;</div>
</div><br><br>
来源:https://www.cnblogs.com/lintianxiajun/p/12790301.html
頁: [1]
查看完整版本: 《IBM —PC 汇编语言程序设计》 第三章习题