微机原理与接口技术(第二版)课后习题答案 下载本文

3.10 若要使AL×10,有哪几种方法,试编写出各自的程序段? 解:

(1)使用乘法指令:

MOV BL,10 MUL BI,

(2)使用移位指令:

SHL AL,1 MOV BL,AL SHL AL, 2 ADD AL,BL

(3)使用加法指令:

ADD AL,AL MOV BL, AL ADD AL, AL ADD AL, AL

11

ADD AL, BL

3.11 8086汇编语言指令的寻址方式有哪几类?哪种寻址方式的指令执行速度最快?

解:寻址方式分为:立即数寻址方式、寄存器操作数寻址方式和存储器操作数寻

址方式。其中,寄存器操作数寻址方式的指令执行速度最快。

3.12 在直接寻址方式中,一般只指出操作数的偏移地址,那么,段地址

如何确定?如果要用某个段寄存器指出段地址,指令中应该如何表示? 解:

默认的数据访问,操作数在DS段;堆栈操作在SS段;串操作源操作数(SI)在DS段,目的操作数(DI)在ES段;用BP作为指针在SS段。如果要显式地指定段地址,则在操作数中规定段寄存器。例如:

12

MOV AX, ES:(BX+10H)

3.13 在寄存器间接寻址方式中,如果指令中没有具体指明段寄存器,那

么如何确定段地址? 解:

在寄存器间接寻址方式中,如果指令中没有具体指明段寄存器,

段地址是

隐含约定的,也就是隐含地选择段寄存器。如操作类型为指令,则指定代码段寄

存器CS,如操作类型为堆栈操作,则指定堆找段寄存器SS,…,如表3-1中所示。

当需要超越约定时,通常用段替代前缀加冒号\来表示段超越,它允许程序设计者偏离任何约定的段。 例如:

13

MOV ES:〔BX],AX

这时数据将从寄存器EAX传送至附加段中由EBX寻址的存储单元,而不是传送 到数据段中。

3.14 采用寄存器间接寻址方式时,BX、BP、SI、DI分别针对什么情况来

使用?这4个寄存器组合间接寻址时,地址是怎样计算的?请举例说明。

解: 在寄存器间接寻址方式下,BX和BP作为间址寄存器使用,而SI、DI作为

变址寄存器使用。除BP间址默认的段为堆栈段,其他的都默认为数据段。它们

14

都可以单独使用,或加上偏移量或组合使用。如: [BX +n] LBP +n] [SI +n] [DI +n] [BX +SI +n] [BX +DI +n] [BP +SI +n] [BP +DI +n]

3.15 设DS=2100H,SS=5200H,BX=1400H,BP=6200H,说明下面两条指令所进行

的具体操作:

MOV BYTE PTR[BP],200 MOV WORD PTR[BX],2000

解:前一条指令是把立即数(应是字节)200,传送至堆栈段(BP的默认段〉偏移

量由BP规定的字节单元,地址为:52000H+620OH=58200H

15