微机原理及接口技术习题答案 下载本文

微机原理及接口技术习题及答案 ·5·

第三章习题及答案

1. 什么叫寻址方式?8086指令系统中有哪几种寻址方式?

解:寻址方式,即获得地址的方法,主要指获得段内偏移地址的方法,段基址常采用默认方式获得。8086CPU指令系统的寻址方式有两类:获得指令中操作数地址的方法。获得要执行的下一条指令的地址的方法。

8086指令系统中有8种操作数寻址方式,立即寻址。。。。。。。

2. 下列指令中BUFF为字节类型变量,DATA为常量,指出下列指令中源操作数的寻址方式:

(1)MOV AX, 1200 (2)MOV AL, BUFF (3)SUB BX, [2000H] (4)MOV CX, [SI]

(5)MOV DX, DATA[SI] (6)MOV BL, [SI][BX] (7)MOV [DI], AX

(8)ADD AX, DATA[DI+BP] (9)PUSHF

(10)MOV BX, ES:[SI]

解: (1)MOV AX, 1200 ;立即寻址

(2)MOV AL, BUFF ;直接寻址 (3)SUB BX, [2000H] ;直接寻址 (4)MOV CX, [SI] ;寄存器间接寻址 (5)MOV DX, DATA[SI] ;寄存器相对寻址 (6)MOV BL, [SI][BX] ;基址变址寻址 (7)MOV [DI], AX ;寄存器寻址

(8)ADD AX, DATA[DI+BP] ;基址变址相对寻址 (9)PUSHF ;隐含寻址 (10)MOV BX, ES:[SI] ;寄存器间接寻址

3. 指出下列指令的错误并改正。

(1)MOV DS, 1200 (2)MOV AL, BX (3)SUB 33H, AL (4)PUSH AL (5)MUL 45H (6)MOV [BX], [SI]

(7)MOVS BYTE PTRDS:[DI], BYTE PTR DS:[SI] (8)ADD DATA[DI+BP], ES:[CX] (9)JMP BYTE PTR[SI] (10)OUT 3F8H, AL 解:

(1)MOV DS, 1200 ;不能用立即数给段基址寄存器赋值 (2)MOV AL, BX ;操作数类型不一致

·6· 微机原理及接口技术习题及答案

(3)SUB 33H, AL ;立即数不能作为目的操作数 (4)PUSH AL ;压栈指令的操作数必须是字类型 (5)MUL 45H ;乘法指令中的操作数不能是立即数 (6)MOV [BX], [SI] ;源和目的操作数不能同时为内存操作数 (7)MOVS BYTE PTR DS:[DI], BYTE PTR DS:[SI] ; 目的操作数应该在ES段。 (8)ADD DATA[DI+BP], ES:[CX] ;CX不能做间址寄存器使用 (9)JMP BYTE PTR[SI] ;操作数必须是字类型 (10)OUT 3F8H, AL ;16位的端口地址不能直接在输入输出指令中使用。

4. 根据要求写出一条(或几条)汇编语言指令。

(1)将立即数4000H送入寄存器BX。 (2)将立即数4000H送入段寄存器DS。

(3)将变址寄存器DI的内容送入数据段中2000H的存储单元。 (4)把数据段中2000H存储单元的内容送段寄存器ES。 (5)将立即数3DH与AL相加,结果送回AL。 (6)把BX与CX寄存器内容相加,结果送入BX。

(7)寄存器BX中的低4位内容保持不变,其他位按位取反,结果仍在BX中。 (8)实现AX与-128的乘积运算。

(9)实现CX中高、低8位内容的交换。

(10)将DX中D0、D4、D8位置1,其余位保持不变。 解:

(1)将立即数4000H送入寄存器BX。

MOV BX,4000H

(2)将立即数4000H送入段寄存器DS。

MOV AX, 4000H MOV DS, AX

(3)将变址寄存器DI的内容送入数据段中2000H的存储单元。

MOV [2000H],DI

(4)把数据段中2000H存储单元的内容送段寄存器ES。

MOV AX,[2000H] MOV ES,AX

(5)将立即数3DH与AL相加,结果送回AL。

ADD AL,3DH

(6)把BX与CX寄存器内容相加,结果送入BX。

ADD BX,CX

(7)寄存器BX中的低4位内容保持不变,其他位按位取反,结果仍在BX中。

MOV AX, BX, NOT AX

AND AX,0FFF0H AND BX,000FH OR BX,AX

(8)实现AX与-128的乘积运算。

MOV BX,-128 IMUL BX

(9)实现CX中高、低8位内容的交换。

MOV AL,8

微机原理及接口技术习题及答案 ·7·

ROL CX AL

(10)将DX中D0、D4、D8位置1,其余位保持不变。

0R DX,0111H

5. 设SS=2000H,SP=1000H,SI=2300,DI=7800,BX=9A00H。说明执行下面每条指令时,堆栈内容的变化和堆栈指针的值。

PUSH SI PUSH DI POP BX

解:PUSH SI

(0FFFH)=23H (0FFEH)=00H SP=0FFEH PUSH DI

(0FFDH)=78H (0FFCH)=00H SP=0FFCH POP BX BX=7800H SP=0FFEH

6. 内存中18FC0H、18FC1H、18FC2H单元的内容分别为23H、55、5AH,DS=1000H,BX=8FC0H,SI=1,执行下面两条指令后AX=?DX=?

MOV AX, [BX+SI] LEA DX, [BX+SI] 解:AX=5A55H

DX=8FC1H

7. 回答下列问题:

(1)设AL=7FH,执行CBW指令后,AX=?

(2)设AX=8A9CH,执行CWD指令后,AX=?DX=? 解:(1)设AL=7FH,执行CBW指令后,AX=007FH

(2)设AX=8A9CH,执行CWD指令后,AX=8A9CH DX=FFFFH

8. 执行以下两条指令后,FLAGS的6个状态标志位的值是什么?

MOV AX, 847BH ADD AX, 9438H 结果为118B3H

解:CF=1 PF=0(为运算结果的低8位奇偶) AF=1 ZF=0 SF=0 OF=1

9. 下面程序段将03E8H转换成十进制数并显示,填写指令后的空格。

MOV AX, 03E8H ;AH= 03H , AL= E8H MOV CX, 4

MOV DI, 2000H ;DI= 2000H

MOV BX, 10 ;BH= 00 , BL= 0AH GO0: SUB DX, DX ;CF= 0 , ZF= 1

·8· 微机原理及接口技术习题及答案

DIV BX ;AX= 64H , DX= 0 MOV [DI], DL ;[DI]= 0 INC DI

LOOP GO0 ;CX= 3 MOV CX, 4 GO1: DEC DI ;DI= 2003H

MOV DL, [DI] ;DL=01 OR DL, 30H ;DL= 31H

MOV AH, 02 ;显示1位十进制数1 INT 21H LOOP GO1

10. 用串操作指令替换以下程序段:

ABC:MOV AL, [SI] MOV ES:[DI], AL INC SI INC DI LOOP ABC 解:REP MOVSB

11. 设AX=AAH,顺序执行下列各条指令,填写空格。

(1)XOR AX, 0FFFFH ;AX= (2)AND AX, 13A0H ;AX= (3)OR AX, 25C9H ;AX= (4)TEST AX, 0004H ;AX= 解: (1)XOR AX, 0FFFFH ;AX= FF55H

(2)AND AX, 13A0H ;AX= 00A0H (3)OR AX, 25C9H ;AX= 25EBH (4)TEST AX, 0004H ;AX= 00AAH

12. 试写出执行下列3条指令后BX寄存器的内容。

MOV CL,2H MOV BX,CO2DH SHR BX,CL 解: BX=300BH

13. 执行下列程序段后,AX、BX的内容各是什么?

(1) MOV AX,0001H

MOV BX,8000H

NEG AX ;0-0001H MOV CX,4 AA:SHL AX,1 RCL BX,1 LOOP AA HLT

解:AX=FFF0H BX=000FH