2023年《微机原理及应用》习题超详细解析超详细解析超详细解析答案.pdf
1 微机原理及应用习题答案 教材:80X86/Pentium 微型计算机原理及应用答案 第一章 计算机基础 1-3(1)01101110 真值110 (2)10001101 真值-13 1-4(1)010111+010111 原+010111 反+010111 补00010111 (2)+101011 +101011 原+101011 反+101011 补00101011(3)101000 -101000 原10101000 -101000 反11010111-101000 补11011000(4)-111111-111111 原10111111 -111111 反11000000 -111111 补11000001 1-6 (1)x1+y1补=x1 补+y1 补=00010100+00100001=00110101(2)x2-y2补=x2 补+-y2 补=11101100+00100001=00001101 1-7 (1)85+60 解:-85 补=10101011 60 补=00111100 -85 补+60 补=10101011+00111100=11100111(11100111)补10011001 真值 25 CS0,CP=0,CSCP0 无溢出 (4)-85-60 -85 补=10101011 -60 补=11000100-85 补+-60 补=10101011+11000100=101101111 CS=1,CP=0 CSCP=1 有溢出 1-8 (1)x补+y 补=01001010+01100001=10101011 CS=0,CP=1 CSCP=1 有溢出 (2)x补-y 补=x 补+-y 补 =01001010-01100001=01001010+10101010 =100010110 CS=1,CP=1 CSCP=0 无溢出 1-9 (1)(127)10=(000100100111)BCD(2)(74)H=(116)10=(000100010110)BCD 1-10 (1)41H 代表 A (2)72H 代表 r (3)65H 代表 e (4)20H 代表 SP 1-14 (1)69.57 (69.57)10=(1000101.100)B=0.1000101100 X 27=0.1000101100 X 2+111 浮点规格数为 011101000101 (2)-38.405 (-38.405)10=(-100110.011)B -100110.011=-0.100110011 x 26 =-0.100110011 x 2110 浮点规格数为 011011001100 (3)-0.3125(-0.3125)10=(-0.0101)2=(-0.101)2 x 2-001 浮点规格数为 111111010000 1.+0.00834 2.(+0.00834)10=(0.000000100010001)2=(0.100010001)2 x 2-110 3.浮点规格数为 101001000100 4.1-15 5.(1)(69.57)10=(1000101.10010001111010111)2 6.=(1.00010110010001111010111)2 x 2110 7.p=6+127=133=(10000101)2 8.单精度浮点数为01000010100010110010001111010111 9.(2)(-38.405)10=(-100110.011001111010111000)2 10.=-(1.00110011001111010111000)2 x 2101 11.p=5+127=132=(10000100)2 12.单精度浮点数为11000010000110011001111010111000 13.(3)(-0.3125)10=(-0.0101)2=(-1.01)2 x 2-10 14.p=-2+127=125=(1111101)2 15.单精度浮点数为10111110101000000000000000000000 第二章 80X86/Pentium 微处理器 2-3 IO/M DT/R DEN RD WR 读存储器 0 0 0 0 1 写存储器 0 1 0 1 0 2 2-17 PA=CS x 16+IP IP 的范围为 0000HFFFFH 而 CS为A000H 因此 PA的范围即现行代码段可寻址的存储空间范围为A0000HAFFFFH 2-20 1234ABCDH=00010010001101001010101111001101 B PA=SS x 16 SP=A0000H+0100H=A0100H 栈顶 SP0100H-4=00FCH 11001101 A00FCH 10101011 00110100 00010010 A0100F 2-21 (1)1278H+3469H=0001 0010 0111 1000+0011 0100 0110 1001=0100 0110 1110 0001 SF=0 ZF=0 AF=1 PF=1 CF=0 OF=0 (2)54E3H-27A0H=0101 0100 1110 0011+1101 1000 0110 0000 =1 0010 1101 0100 0011 SF=0 ZF=0 AF=1 PF=0 CF=0 OF=0 当进行 16 位或 8 位加或减运算时,若最高位产生进位或借位时,将 CF置 1,否则为 0,当进行带符号数补码运算时,运算结果超出了机器所能表示的数值范围,就产生溢出,将OF置 1,否则 OF置 0,即 OF用来表示有符号数运算的溢出,而 CF则用来表示无符号数运算的溢出。2-29 答:存储慢速设备(存储器或 I/O 设备)的数据时,必须插入等待周期 TW来延长总线周期,插入 TW多少取决于 CPU完成独立操作所需时间。第三章 80X86/Pentium 指令系统 3-5 (1)源操作数为立即寻址方式;目标操作数为寄存器寻址方式 (2)源操作数为基址寻址方式;目标操作数为寄存器寻址方式 EA=BX+DISP PA=DS16+BX+DISP (3)源操作数为寄存器寻址方式;目标操作数为寄存器间接寻址方式 EA=SI PA=DS 16+SI (4)源操作数为基址加变址寻址方式;目标操作数为寄存器寻址方式 EA=BX+SI PA=DS 16+BX+SI (5)源操作数、目标操作数都为寄存器寻址方式 (6)源操作数为基址寻址方式;目标操作数为寄存器寻址方式 EA=BX+10H PA=DS16+BX+10H (7)源操作数为寄存器间接寻址方式;目标操作数为寄存器寻址方式 EA=BX PA=ES 16+BX (8)源操作数为带位移量基址加变址寻址方式;目标操作数为寄存器寻址方式 EA=BX+SI+20H PA=DS16+BX+SI+20H (9)源操作数为寄存器寻址方式;目标操作数为寄存器间接寻址方法 A=BP PA=SS 16+BP (10)源操作数为寄存器寻址方式 3-6 (1)源操作数为寄存器间接寻址方式 (2)源操作数为基址加变址寻址方式 (3)源操作数为基址加比例变址寻址方式 (4)源操作数为比例变址寻址方式 3-7 (1)有错。没有两个基址寄存器相加的寻址方式 (2)有错。两个操作数不能同时为存储器 (3)有错。立即数不能直接送到段寄存器 (4)有错。段寄存器 CS不能作为目标操作数 (5)有错。目标操作数不能为立即数 (6)正确。(7)有错。两段寄存器间不能传送数据 (8)有错。不能直接用“3”表示移 3 位 (9)有错。NOT指令中只有一个目标操作数 (10)正确。(11)有错。源操作数不能为立即数 (12)有错。格式为 IN AL,I/O 端口地址,且100H255,应放在 DX中,DX在指令中出现 (13)有错。源操作数应为存储器操作数 (14)有错。对 16 位寻址时,存储器操作数应为 SI、DI、BP、BX,不能为 CX 3-8 (1)AX=3355H SP=1FFEH (2)AX=3355H DX=4466H SP=1FFEH 3-9 PA=SS 16+BP+SI=2F000H+0200H+0046H=2F246H 执行 XCHG BX,BP+SI 后 BX=4154H 2F246H=6F30H 3-12 (1)PA=DS 16+BX+SI+20H=09226H 3 CL=F6H (2)PA=SS 16+BP+DI=1E4F6H 1E4F6H=5678H (3)BX=BX+SI+20H=0056H PA=DS 16+BX+2=09228H AX=1E40H (4)PA=DS 16+BX+DI=09226H SI=00F6H SI=0024H (5)PA=DS 16+BX+32H=09226H CX=00F6H 09226=5678H(执行 XCHG CX,32HBX 后)E再执行 XCHG 20BXSI AX 后 PA=DS 16BX+SI+20H=09226 AX=5678H 09226H=1234H 3-14 (2)MOV CL,4 ROL BL,CL (4)AND BX,0F7AFH (6)TEST DX,0201H 3-16 (2)端口,(580H)=60H(581H)=80H (4)寄存器,AL=4FH AH=(41H)(5)端口,(45H)=60H 3-17 参考程序如下:(1)MOV AX,NUM2 ADD NUM1,AX (2)MOV AL,NUM1 ADD AL,NUM1+1 ADD AL,NUM1+2 ADD AL,NUM1+3 MOV RES,AL (3)MOV AL,NUM1 MOV AH,0 MOV CX,7 LEA DI,NUM1 MOV DX,0 NEXT:INC DI MOV DL,DI ADD AX,DX DEC CX JNZ NEXT MOV RES,AX (4)MOV AX,NUM1 ADD AX,NUM2 MOV NUM2,AX MOV AX,NUM1+2 ADC AX,NUM2+2 MOV NUM2+2,AX 3-18 参考程序如下:(1)MOV AL,NUM1 MOV AH,0 MOV CX,7 LEA DI,NUM1 NEXT:INC DI MOV DL,DI ADD AL,DL DAA MOV DH,AL;DAA只能对 AL中数加以调整,DH为暂存用 MOV AL,AH ADC AL,0 DAA;题目中只有 8 个数相加,所以这里也可以不作调整 MOV AH,AL MOV AL,DH DEC CX JNZ NEXT MOV RES,AX 3-21 (1)009AH (2)0061H (3)8071H (4)10F7H (5)FF1CH 3-22 (1)DX=0006H BX=0004H (2)SP=1FFEH SP=FEH(3)CX=0004H BX=0004H (4)AX=8094H CF=0 (5)AL=87H (6)AL=CCH CF=0 AL=32H (7)SI=0009H (8)DI=0009H (9)DI=94H (10)AX=17C6H DX=8094H (11)AH=84H BL=04H (12)IP=17C6H 3-23 (1)将 FIRST为首地址的内存单元中的 10 个字节传送到4 SECOND 为首地址的内存单元。(2)将 0404H到 0503H的内存单元清 0。3-25 OF SF ZF PF CF(1)0 0 0 0 1 (2)0 0 0 0 无影响 (3)0 0 0 0 1 (4)0 1 0 0 1 (5)0 0 0 0 1 (6)1 不定 不定 不定 1 (7)0 0 0 1 0 (8)0 不定 不定 不定 0 (9)0 1 0 1 0 (10)0 0 0 1 0 (11)0 0 1 1 0 (12)0 1 0 1 1 (13)1 0 0 0 1 3-27 (1)IP=1256H (2)IP=3208H (3)IP=2450H 3-28 IP=009AH,CS=2000H,SP=0F178H,SP=8FH,SP+1=3DH SP+2=50H,SP+3=40H 3-29 CMP AL,01H JZ LAB1 CMP AL,02H JZ LAB2 CMP AL,04H JZ LAB3 TEST AL,07H JNZ LAB4 LAB1:LAB2:LAB3:LAB4:1.汇编语言程序设计 4-2 12 VAR1-12H 0 FFH 0 FFH 0 FFH 0 VAR2 1 2 1 2 0 3 .重复上面0到3部分内容 99 次 W VAR3 E L C O M E T O VAR3 6的 VAR4 偏移地址 VAR3 的偏移 地址 VAR3 的段基 地址 4-3 (1)DATA1 DB 86H,27H,23H,00H,24H,1AH (2)DATA2 DW 0B430H,1062H 或者 (1)DATA1 LABEL BYTE 5 ARRAY DW 2786H,23H,1A24H (2)DATA2 LABEL WORD ARRAY DB 30H,0B4H,62H,10H 4-5 (1)VAR1 的偏移量是 30H,VAR2 的偏移量是 3AH (2)CNT=10H (3)VAR2+2 单元的内容为 02H 4-6 AAA MACRO PUSH DS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX ENDM 4-7 TRAN MACRO X,Y,Z ;X,Y 为源、目标数据块的首地址,Z 为数据块的长度 MOV CX,Z MOV SI,OFFSET X MOV DI,OFFSET Y CLD ;设置方向标志为 0 REP MOVSB ENDM 4-8 (1)错 源操作数和目标操作数长度不匹配 (2)对 (3)错 两个存储器操作数之间不可直接传送 (4)错 CS 不可作为 MOV 指令的目标操作数 (5)对 (6)错 没有SIDI的寻址方式 (7)错 BX-SI 不是正确的寻址方式 (8)错 操作数没指明类型 (9)错 立即数不可作为 MOV 指令的目标操作数 (10)错 8-BX 不是正确的寻址方式 4-9 MOV BX,OFFSET ARRAY;将 ARRAY 的偏移地址传给 BX MOV CX,LENGTH ARRAY;将 ARRAY 用 DUP重复定义的数据项总数传给 CX MOV SI,0;将 0 传给 SI ADD SI,TYPE ARRAY;将 SI 的内容与 ARRAY 的类型值相加,返回给 SI 指令执行后 BX:数组 ARRAY 的首地址 CX=100 SI=2 4-10 MOV AX,WORD PTR X ADD AX,WORD PTR Y MOV WORD PTR Z,AX MOV AX,WORD PTR X+2 ADC AX,WORD PTR Y+2 MOV WORD PTR Z+2,AX 4-12 (1)DATA SEGMENT DATA ENDS CODE SEGMENT MOV AH,01H ;从键盘输入一个字符,其 ASC码值在 AL中 INT 21H CMP AL,41H JZ P0 CMP AL,42H JZ P1 CMP AL,4AH JZ P9 JMP EXIT P1:RET P2:RET P9:RET EXIT:MOV AH,4CH INT 21H .(2)DATA SEGMENT BASE DW P0,P1,P9 DATA ENDS CODE SEGMENT MOV AH,01H ;从键盘输入一个字符,其 ASC码值在 AL中 INT 21H CMP AL,A ;判别字符是否位于A到J之间 JB EXIT CMP AL,J 6 JA EXIT SUB AL,A ;在正确范围之内,根据表内地址分支 MOV BL,AL MOV BH,0 SHL BX,1 JMP BASEBX P1:RET P2:RET P9:RET EXIT:MOV AH,4CH INT 21H .4-14 LEA BX,x LEA SI,y LEA DI,sum ADD BX,7 ADD SI,7 ADD DI,8;和可能要 9 个字节 MOV CX,8 LOP:MOV AL,BX ADC AL,SI DAA MOV DI,AL DEC BX DEC SI DEC DI DEC CX JNZ LOP MOV AL,0 ADC AL,0 MOV DI,AL 4-15 MOV SI,OFFSET FIRST MOV CX,0;CX 中存放 A的个数 LOOP:MOV AL,SI CMP AL,$JZ NEXT CMP AL,A JNE LP INC CX LP:INC SI JMP LOOP NEXT:4-16 MOV BX,0 MOV CX,16 NEXT:RCL AX,1 JC P1 INC BH JMP OK P1:INC BL OK:LOOP NEXT MOV CX,BX 4-17 DATA SEGMENT DATA_W DW ;若干个数 COUT EQU($-DATA_W)/2 COUT1 DB 0 COUT2 DB 0 COUT3 DB 0 DATA ENDS STACK SEGMENT PARA STACK STACK DB 100 DUP(0)STACK ENDS CODE SEGMENT ASSAUM CS:CODE,DS:DATA START PROC FAR PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV DX,0;正数、负数、0 暂时分别存在 BL、BH、DL中 MOV BX,0 LEA SI,DATA_W MOV CX,COUT NEXT:MOV AX,SI CMP AX,0 JG LP1 JL LP2 INC DL JMP OK LP1:INC BL JMP OK LP2:INC BH OK:ADD SI,2 LOOP NEXT 7 RET START ENDP CODE ENDS END START 4-18 DATA SEGMENT ARRAY DW ;若干个数 COUT EQU$-ARRAY MAX DB MIN DB DATA ENDS STACK SEGMENT PARA STACK STACK DB 100 DUP(0)STACK ENDS CODE SEGMENT ASSAUM CS:CODE,DS:DATA START PROC FAR PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX LEA BX,ARRAY MOV CX,COUT MOV AH,BX MOV AL,BX DEC CX INC BX LOP:CMP AH,BX JA NEXT1 MOV AH,BX JMP NEXT2 NEXT1:CMP AL,BX JB NEXT2 MOV AL,BX NEXT2:INC BX LOOP LOP MOV MAX AH MOV MIN AL RET START ENDP CODE ENDS END START 4-22 LEA BX,STRING MOV CX,80 NEXT:CMP BX,20H JZ OK INC BX LOOP NEXT MOV CL,-1 JMP FIN OK:NEG CX ADD CX,80 FIN:4-24 (1)LEA SI,STRING1 LEA DI,STRING2 MOV CX,20 CLD REP MOVSB (2)LEA SI,STRING1 LEA DI,STRING2 ADD SI,19 ADD DI,19 MOV CX,20 STD REP MOVSB (3)MOV AL,20H LEA DI,STRING1 MOV CX,20 CLD REPNZ SCASB JZ FOUND MOV DL,0;未找到 JMP EXIT FOUND:DEC DI MOV BX,DI MOV DL,01H ;找到 EXIT:(4)LEA SI,STRING1 LEA DI,STRING2 MOV CX,20 CLD REP CMPSB JNZ NEQ MOV BL,0 ;相同 JMP EXIT NEQ:MOV BL,01H ;不相同 8 EXIT:4-25 ;MODULE_1 EXTRN VAR3:DWORD PUBLIC VAR1,LABEL_1 ;MODULE_2 EXTRN VAR1:WORD,LABEL_1:FAR,LABEL_3:FAR PUBLIC VAR3,LABEL_2;MODULE_3 EXTRN VAR1:WORD,LABEL_1:FAR,LABEL_2:FAR PUBLIC LABEL_3 4-26;模块 1,文件名 MAIN.ASM EXTRN DISPLAY:FAR;引用外部符号 PUBLIC MESG;定义外部符号 DATA1 SEGMENT MESG DB ASSEMBLER$DATA1 ENDS CODE1 SEGMENT ASSUME CS:CODE1,DS:DATA1 MAIN:MOV AX,DATA1 MOV DS,AX;装入段基址 PUSH DS CALL DISPLAY MV AH,4CH INT 21H CODE1 ENDS END MAIN ;模块 2,文件名 DISPLAY.ASM EXTRN MESG PUBLIC DISPLAY;定义外部符号 DATA2 SEGMENT DB 100UP()DATA2 ENDS CODE2 SEGMENT ASSUME CS:CODE2,DS:DATA2 DISPLAY PROC FAR MOV AX,DATA2 MOV DS,AX;装入段基址 MOV DX,OFFSET MESG MOV AH,9;屏幕显示 INT 21H RET DISPLAY ENDP CODE2 ENDS 4-27 STACK SEGMENT PARA STACK STACK DB 100 DUP(0)STACK ENDS CODE SEGMENT ASSAUM CS:CODE START PROC FAR PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV CX,4 MOV DX,0.MOV BL,2 LOP1:MOV AH,1 INT 21H CMP AL,46H JA EXIT;字符 ASCII 码不在 09,AF之间 CMP AL,40H JA LOP2 CMP AL,39H JA EXIT;字符 ASCII 码不在 09,AF之间 CMP AL,30H JB EXIT;字符 ASCII 码不在 09,AF之间 SUB AL,30H JMP NEXT LOP2:SUB AL,37H NEXT:OR DL,AL MOV AL,CL MOV CL,4 ROL DX,CL MOV CL,AL LOOP LOP1 EXIT:RET START ENDP CODE ENDS END START 1.半导体存储器 9 5-4 1K X 8:末地址=1000H+3FFH=13FFH 2K X 8:末地址=1000H+7FFH=17FFH 4K X 8:末地址=1000H+FFFH=1FFFH 8K X 8:末地址=1000H+1FFFH=2FFFH 5-5 所占地址空间为:20000H27FFFH 5-6 1#8000H87FFH 2#8800H8FFFH 3#9000H97FFH 4#A000HA3FFH 5#A400HA7FFH 6#A800HABFFH 7#AC00HAFFFH 5-7 10 1.输入/输出和中断技术 6-4 IN AL,PORT_T CMP AL,0FEH ;k0 单独被按下,即最低位为 0,其余位为高 JZ NEXT1 CMP AL,0FDH JZ NEXT2 MOV AL,00H ;其他的情况,将灯全部不点亮 OUT PORT_T,AL JMP EXIT NEXT1:MOV AL,01H ;K0 被按下,LED0LED7 顺次点亮,送 1 则对应的灯亮 MOV CX,8 LOOP1:OUT PORT_T,AL CALL DELAY ROL AL,1 LOOP LOOP1 JMP EXIT NEXT2:MOV AL,80H ;K1 被按下,LED0LED7 反序点亮,送 1 则对应的灯亮 MOV CX,8 LOOP2:OUT PORT_T,AL CALL DELAY ROR AL,1 LOOP LOOP2 EXIT:.1.解:MOV BX,OFFSET STRING WAIT:IN AL,STATUS AND AL,80H JNZ WAIT MOV AL,BX OUT DATAS,AL CMP AL,0DH JZ END INC BX JMP WAIT END:11 1.解:MOV CX,100 MOV BX,OFFSET DATABUF IN-TEST:IN AL,STATUS TEST AL,80H JZ,IN-TEST IN AL,DATAS MOV BX,AL INC BX LOOP IN-TEST 6-13 执行 INT 8 后 CPU将 PSW,IP,CS压入堆栈,堆栈的情况如下图:A2H 00H 00H 09H 40H 02H SP 00FAH 00FBH 00FCH 00FDH 00FEH 00FFH SP=00FAH,SS=0300H,IP=0040H,CS=0100H 因为 IF,.TF 进入中断后自动为零,所以 PSW=0040H.6-15 IRR中断请求寄存器用来寄存所有要求服务的中断请求 IMR中断屏蔽寄存器用来存放须屏蔽的中断请求 ISR 中断服务寄存器用来寄存所有正在被服务的中断请求 6-16 IRQ3申请中断,IRQ3 正在被服务,20H,05H 6-18 CLI MOV DX,FFDCH MOV AL,00010011B ;ICW1 OUT DX,AL MOV DX,FFDDH MOV AL,90H ;ICW2 OUT DX,AL MOV AL,00000001B ;ICW4 OUT DX,AL STI 6-21 RRREG DB SRREG DB IMREG DB MOV AL,00001010B ;读 IRR OUT 20H,AL IN AL,20H MOV RRREG,AL MOV AL,00001011B ;读 ISR OUT 20H,AL IN AL,20H MOV SRREG,AL IN AL,21H ;读 IMR MOV IMREG,AL 第七章 习题解答 7-1 MOV AL,00110111B OUT 83H,AL MOV AL,0DH OUT 80H,AL MOV AL,07H OUT 80H,AL 7-2 见习题课内容(电子教案)7-5 见习题课内容(电子教案)7-6 见习题课内容(电子教案)7-7、79 见习题课内容(电子教案)