《微机原理与接口技术》 洪永强习题答案

41564736.doc集 - 7 - 编者:喻其山

3.9

设标志寄存器值原为0401H,AX=3272H,BX=42A2H。执行下列减法指令SBB AL,BH之后,AX和标志寄存器的值分别是多少? 答: (AX)= 322FH,(FR)= 0410H。

3.10 设若标志寄存器原值为0A11H,SP=0060H,AL=4。下列几条指令执行后,

标志寄存器、AX、SP的值分别是多少? PUSHF LAHF

XCHG AH,AL PUSH AX SAHF POPF

答:(FR)= 0411H,(AX)= 0411H, (SP)= 005EH。 3.11 指出下列指令的错误

(1) ADD SI,CL (2) MOV 50,AL (3) MOV CS, AX (4) MOV DS,1234H (5) SHL AX,05H (6) XCHG 200,AL (7) IN AX,378H (8) JNZ BX (9) MOV AH,CX (10) MOV 33H,AL (11) MOV AX,[SI][DI] (12) MOV [BX],[SI]

(13) ADD BYTE PTR [BP],256 (14) MOV DATA[SI],ES:AX (15) JMP BYTE PTR [BX] (16) OUT 230H,AX (17) MOV DS,BP (18) MUL 39H 答:(1)、SI,CL字长不同。

(2)、DEST不能为立即数50。 (3)、DEST为CS段寄存器寻址。 (4)、立即数不能直接送段寄存器。 (5)、多次移位必须要用CL指出来。

(6)、DEST不能为立即数200(交换指令不能有立即数寻址)。 (7)、端口地址超过0FFH必须要用DX寄存器间接寻址。

(8)、条件转移指令只能用短内直接短转移寻址,不能用寄存器寻址。 (9)、AH,CX字长不同。

(10)、DEST不能为立即数33H。

(11)、SRC可为基址变址寻址。但不能为变址变址寻址。 (12)、双操作数指令不能同时为存储器寻址方式。 (13)、字长不同:256不是字节长度了。

(14)、段跨越前缀应放在存储器操作数或整个指令的前面。 (15)、JMP指令的寻址方式不能为字节属性。

(16)、端口地址超过0FFH必须要用DX寄存器间接寻址。 (17)、指令正确。

(18)、8086的乘法指令不能为立即数。

41564736.doc集 - 8 - 编者:喻其山

3.12 若内存单元DATA在数据段中偏移量为24C0H处,24C0~24C3H单元中依

次存放着55H、66H、77H、88H。下列几条指令执行后,寄存器AX、BX、CL、SI、DS的值分别是多少? MOV AX, DATA LEA SI, DATA MOV CL, [SI] LDS BX, DATA 3.13 条件转移指令均为相对转移指令,请解释“相对转移”含义,试问若须往较

远的地方进行条件转移,该怎么办? 3.14 假设(DS)=212AH,(CS)=0200H,(IP)=1200H,(BX)=0500H,(DI)=2600H,

位移量DATA=40H (217A0H)=2300H,(217E0H)=0400H,(217E2H)=9000H。 试确定下列转移指令的转移地址。 (1) JMP 2300H (2)JMP WORD PTR[BX] (3) JMP DWORD PTR [BX+DATA] (4)JMP BX (5) JMP DWORD PTR [BX][DI] 答:(1)、0200H: 2300H。CS不变

(2)、0200H: 2300H。CS不变 (3)、9000H: 0400H

(4)、0200H: 0500H CS不变 (5)、(23DA2H): (23DA0H) 3.15 若32位二进制数存放于DX和AX中,试利用移位与循环指令实现以下操

作:

(1) DX和AX中存放的无符号数,将其分别乘2除2。 (2) 若DX和AX中为有符号数,将其分别乘2和除2。 答:(1)、SHL AX, 1 ;AX乘2

RCL DX, 1 ;DX乘2 SHR DX, 1 ;DX除2 RCR AX, 1 ;AX除2 (2)、SAL AX, 1 ;AX乘2

RCL DX, 1 ;DX乘2 SAR DX, 1 ;DX除2 RCR AX, 1 ;AX除2 3.16 下段程序完成什么工作?

DATX1 DB 300DUP(?) DATX2 DB 100DUP(?)

MOV CX,100 MOV BX,200 MOV SI,0 MOV DI,0

41564736.doc集 - 9 - 编者:喻其山

NEST: MOV AL,DATX1 [BX] [SI]

MOV DATX2 [DI],AL INC SI INC DI LOOP NEXT

3.17 执行下列指令后,AX寄存器的内容是什么?

TABLE DW 10,20,30,40,50 ;000AH, 0014H, 001EH, 0028H, 0032H ENTRY DW 3

TABLE 0AH ……

00H MOV BX,OFFSET TABLE

14H ADD BX,ENTRY

TABLE+3 00H

MOV AX,[BX]

1EH

答:(AX)=1E00H。存储方式如右图所示:

00H 28H 3.18 分析下面的程序段完成什么功能?

00H MOV CL,04

32H SHL DX,CL

00H MOV BL,AH

3.17题的TABLESHL AX,CL

存储方式 SHR BL,CL

OR DL,BL

答:程序段将 ((DX),(AX)) 的双字同时左移4位,即将此双字乘以10H (16)。 3.19 试写出程序段把DX、AX中的双字右移四位。

3.20 当执行中断指令时,堆栈的内容有什么变化?如何求得子程序的入口地址? 3.21 试述中断指令IRET与RET指令的区别。

3.22 根据给定的条件写出指令或指令序列:

(1)将一个字节的立即数送到地址为NUM的存储单元中? (2)将一个8位立即数与地址为BUF的存储单元内容相加? (3)将地址为ARRAY的存储单元中的字数据循环右移一位? (4)将16位立即数与地址为MEM的存储单元中的数比较? (5)测试地址为BUFFER的字数据的符号位? (6)将AX寄存器及CF标志位同时清零?

(7)用直接寻址方式将首地址为ARRAY的字数组中第5个数送往寄存器BX中?

(8)用寄存器寻址方式将首地址为ARRAY的字数组中第5个数送往寄存器BX中?

(9)用相对寻址方式将首地址为ARRAY的字数组中第8个数送往寄存器BX

41564736.doc集 - 10 - 编者:喻其山

中?

(10)用基址变址寻址方式将首地址为ARRAY的字数组中第N个数送往寄存器BX中?

(11)将首地址为BCD_BUF存储单元中的两个压缩BCD码相加,并送到第三个存储单元中?

第 4 章 汇编语言程序设计

4.1 4.2 4.3 4.4 4.5

什么是汇编语言?什么是汇编语言程序?什么是汇编?什么是汇编程序? 一个完整的汇编语言程序结构上有什么特点? 汇编语言有哪三种基本语句?它们各自的作用是什么?

逻辑运算符与逻辑运算指令中的助记符有完全相同的符号,如何区别它们?作用有何不同?

下面两条语句汇编后,两个字节存储单元NUM1和NUM2中的内容分别是什么?

NUM1 DB (12 OR 4 AND 2) GE 0EH NUM2 DB (12 XOR 4 AND 2) LE 0EH

答:(1)、NUM1中的内容是00H;因为12不大于等于0EH

(2)、NUM2中的内容是0FFH;因为12小于等于0EH 下列指令执行后,字存储单元DA1中的内容是多少? DA1 EQU BYTE PTR DA2 DA2 DW 0ABCDH

……

SHL DA1,1 SHR DA2,1

答:DA1中的内容是55CDH

对下面的数据定义,各条MOV指令单独执行后,有关寄存器的内容是什么?

NUMB1 DB ?

NUMB2 DW 20 DUP(?) NUMB3 DB ?USB?

1) MOV AX, TYPE NUMB1 2) MOV AX, TYPE NUMB2 3) MOV CX, LENGTH NUMB2 4) MOV DX, SIZE NUMB2 5) MOV CX, LENGTH NUMB3

4.6

4.7

联系客服:779662525#qq.com(#替换为@)