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

第二条指令是把立即数.2000,传送至数据段(BX的默认段)偏移量由BX规定的

字单元,地址为:21000H+1400H = 22400H。

3.16 使用堆钱操作指令时要注意什么问题?传送指令和交换指令在涉

及内存操作数时应该分别要注意什么问题?

解:使用堆栈指令可以把内存单元作为一个操作数(从内存到内存)。但堆栈固定在堆栈段且只能由SP指向。且堆栈操作要修改堆核指针。MOV指令不能实现内存单元间的数据传送。XCHG指令是交换,有一个操作数必须是寄存器。

3.17下面这些指令中哪些是正确的?哪些是错误的?若是错误的,请说明原因。

(1)XCHG CS, AX (2)MOV [BX], [1000] (3)XCHG BX, IP (4)PUSH CS (5)POP CS

16

(6)IN BX, DX (7)MOV BYTE[BX], 100O (8)MOV CS, [1000] 解:

(l)错误,CS不能交换。

(2)错误,MOV指令不能在内存间传送。 (3)错误,IP不能交换。

(4)错误,CS可以作为PUSH指令的操作数。 (5)错误,CS可以作为POP指令的操作数。 (6)错误,IN指令的目的操作数是累加器。 (7)错误,目的操作数是字节单元。

(8〉错误,CS不能作为MOV指令的目的操作数。

3.18 以下是格雷码的编码表,

O 0000 1 0001 2 0011

17

3 0010 4 0110 5 0111 6 0101 7 0100 8 1100

请用换码指令和其他指令设计一个程序段,以实现由格雷码向ASCII码的转换。 解:

MOV BX,TABLE MOV SI,ASCII_TAB MOV AL,0 MOV CX,10 TRAN: XLAT TABLE

MOV DL,AL ADD DL,30H MOV [SI],DL INC AL

18

LOOP TRAN

3.19 使用乘法指令时,特别要注意先判断是用有符号数乘法指令还是

用无符号数乘法指令,这是为什么?

解:因为有符号数和无符号数,其数的乘法是一样的。但结果的符号取决于两

个操作数的符号。

3.20 字节扩展指令和字扩展指令一般用在什么场合?举例说明。

解:主要用于字节相除和字相除之前,把被除数扩展为两倍宽度的操作数。

3.21 什么叫BCD码?什么叫组合的BCD码?什么叫非组合的BCD码?8086

汇编语言在对BCD码进行加、减、乘、除运算时,采用什么方法?

解:BCD码为十进制编码的二进制数。组合的BCD数是把两位BCD加在一个字节中,高位的在高4位。非组合的BCD码是把一位BCD数放在

19

一个字节的低4位,高4位为0。8086在BCD加、减和乘法运算以后用BCD调整指令把结果调整为正确的BCD数。在BCD除法之前先用BCD调整指令再做除法.

3.22 用普通运算指令执行BCD码运算时,为什么要进行十进制调整?具

体地讲,在进行BCD码的加、减、乘、除运算时,程序段的什么位置必须加上十进制调整指令?

解:因为8086指令把操作数作为二进制数进行二进制运算,要得到正确的BCD结果,需要进行调整。在加、减、乘法指令之后加上BCD调整指令,而在除法指令之前先用BCD调整指令再用除法指令。

第4章 作业答案

4.1 在下列程序运行后,给相应的寄存器及存储单元填入运行的结果:

MOV AL, 1OH MOV CX, 100OH MOV BX , 2000H MOV [CX],AL

20