1、完整word版微机原理及应用习题答案微机原理及应用习题答案教材: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 -11
2、1111补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=1011
3、01111CS=1,CP=0 CSCP=1有溢出 1-8 (1) x补+ y补=01001010+01100001=10101011CS=0,CP=1 CSCP=1有溢出 (2) x补- y补=x补+ -y补 =01001010- 01100001=01001010+10101010 =100010110CS=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代表 SP1-14 (1
4、) 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浮点规格数为 1111110100001.+0.00834 2.(+0.00834)10=(0
5、.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.00110011001111010111
6、000)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/MDT/RDENRDWR 读存储器0 0 001 写存储器0 1 010 2-17PA=CS x 16+IPIP的范围为0000HFFFFH 而
7、CS为A000H 因此PA的范围即现行代码段可寻址的存储空间范围为A0000HAFFFFH 2-20 1234ABCDH=00010010001101001010101111001101 B PA=SS x 16SP=A0000H+0100H=A0100H 栈顶SP0100H-4=00FCH 11001101A00FCH 10101011 00110100 00010010A0100F 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
8、 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多少取决于CP
9、U完成独立操作所需时间。 第三章80X86/Pentium指令系统 3-5 (1) 源操作数为立即寻址方式;目标操作数为寄存器寻址方式 (2) 源操作数为基址寻址方式;目标操作数为寄存器寻址方式 EA=BX+DISP PA=DS16+BX+DISP (3) 源操作数为寄存器寻址方式;目标操作数为寄存器间接寻址方式 EA=SI PA=DS16+SI (4) 源操作数为基址加变址寻址方式;目标操作数为寄存器寻址方式 EA=BX+SI PA=DS16+BX+SI (5) 源操作数、目标操作数都为寄存器寻址方式 (6) 源操作数为基址寻址方式;目标操作数为寄存器寻址方式 EA=BX+10H PA=DS
10、16+BX+10H (7) 源操作数为寄存器间接寻址方式;目标操作数为寄存器寻址方式 EA=BX PA=ES16+BX (8) 源操作数为带位移量基址加变址寻址方式;目标操作数为寄存器寻址方式 EA=BX+SI+20H PA=DS16+BX+SI+20H (9) 源操作数为寄存器寻址方式;目标操作数为寄存器间接寻址方法 A=BP PA=SS16+BP (10) 源操作数为寄存器寻址方式 3-6 (1) 源操作数为寄存器间接寻址方式 (2) 源操作数为基址加变址寻址方式 (3) 源操作数为基址加比例变址寻址方式 (4) 源操作数为比例变址寻址方式 3-7 (1) 有错。没有两个基址寄存器相加的寻
11、址方式 (2) 有错。两个操作数不能同时为存储器 (3) 有错。立即数不能直接送到段寄存器 (4) 有错。段寄存器CS不能作为目标操作数 (5) 有错。目标操作数不能为立即数 (6) 正确。 (7) 有错。两段寄存器间不能传送数据 (8) 有错。不能直接用“3”表示移3位 (9) 有错。NOT指令中只有一个目标操作数 (10) 正确。 (11) 有错。源操作数不能为立即数 (12) 有错。格式为INAL,I/O端口地址,且100H255,应放在DX中,DX在指令中出现 (13) 有错。源操作数应为存储器操作数 (14) 有错。对16位寻址时,存储器操作数应为SI、DI、BP、BX,不能为CX
12、3-8 (1) AX=3355H SP=1FFEH (2) AX=3355H DX=4466H SP=1FFEH 3-9 PA=SS16+BP+SI=2F000H+0200H+0046H=2F246H 执行XCHG BX, BP+SI后 BX=4154H 2F246H=6F30H 3-12 (1) PA=DS16+BX+SI+20H=09226HCL=F6H (2) PA=SS16+BP+DI=1E4F6H 1E4F6H=5678H (3) BX=BX+SI+20H=0056H PA=DS16+BX+2=09228H AX=1E40H (4) PA=DS16+BX+DI=09226H SI=0
13、0F6H SI=0024H (5) PA=DS16+BX+32H=09226H CX=00F6H 09226=5678H(执行XCHG CX,32HBX后) E再执行XCHG 20BXSI AX后 PA=DS16BX+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)
14、 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, 0MOV CX, 7 LEA DI, NUM1 MOV DX, 0 NEXT: INC DI MOV DL, DI ADD AX, DXDEC 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 N
15、UM2+2, AX 3-18 参考程序如下: (1) MOV AL, NUM1 MOV AH, 0 MOV CX, 7 LEA DI, NUM1NEXT: 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 CXJNZ NEXT MOV RES, AX 3-21 (1)009AH (2)0061H (3)8071H (4)10F7H (5)FF1CH 3-22 (1
16、) DX=0006HBX=0004H (2) SP=1FFEHSP=FEH(3) CX=0004HBX=0004H (4) AX=8094HCF=0 (5) AL=87H (6) AL=CCHCF=0AL=32H (7) SI=0009H (8) DI=0009H (9) DI=94H (10)AX=17C6HDX=8094H (11)AH=84HBL=04H (12)IP=17C6H 3-23 (1)将FIRST为首地址的内存单元中的10个字节传送到SECOND为首地址的内存单元。 (2)将0404H到0503H的内存单元清0。 3-25 OF SF ZF PF CF(1) 0 0 0 0
17、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
18、3-29CMP AL, 01H JZ LAB1 CMP AL, 02H JZ LAB2 CMP AL, 04H JZ LAB3TEST 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次 WVAR3 E L C O M E T O VAR36的VAR4偏移地址 VAR3的偏移 地址 VAR3的段基 地址 4-3 (1)DATA1DB86H, 27H, 23H, 00H, 24H, 1AH (2)DATA2D
19、W0B430H, 1062H 或者 (1)DATA1 LABEL BYTE 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为数据块的长度 MOVCX, Z
20、 MOVSI, OFFSET X MOVDI, OFFSET Y CLD ;设置方向标志为0 REPMOVSB 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, LENGT
21、H ARRAY ;将ARRAY用DUP重复定义的数据项总数传给CX MOV SI, 0 ;将0传给SI ADD SI, TYPE ARRAY ;将SI的内容与ARRAY的类型值相加,返回给SI指令执行后 BX:数组ARRAY的首地址 CX=100 SI=2 4-10MOV AX, WORD PTRX ADDAX, WORD PTRY MOV WORD PTR Z, AX MOVAX, WORD PTRX+2 ADC AX, WORD PTRY+2 MOV WORD PTR Z+2,AX 4-12 (1) DATA SEGMENT DATAENDS CODESEGMENT MOV AH, 01H
22、; 从键盘输入一个字符,其ASC码值在AL中 INT 21H CMP AL, 41H JZ P0 CMP AL, 42H JZ P1 CMPAL, 4AH JZ P9 JMP EXIT P1: RET P2: RET P9: RET EXIT:MOVAH, 4CH INT21H. (2) DATA SEGMENT BASEDWP0, P1, ,P9 DATAENDS CODESEGMENT MOV AH, 01H; 从键盘输入一个字符,其ASC码值在AL中 INT 21HCMPAL, A; 判别字符是否位于A到J之间JBEXITCMP AL, JJAEXIT SUBAL, A ;在正确范围之内
23、,根据表内地址分支 MOVBL, ALMOV BH, 0SHLBX, 1JMPBASEBX P1: RET P2: RET P9: RET EXIT:MOVAH, 4CH INT21H . 4-14 LEA BX, x LEA SI, y LEA DI, sum ADD BX, 7ADD 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 S
24、I, OFFSET FIRST MOV CX, 0 ;CX中存放A的个数 LOOP: MOV AL, SI CMP AL, $ JZ NEXTCMP 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 COU
25、T3 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, 0LEA SI, DATA_W MOV CX, COUT NEXT: MOV AX, SI CMP AX, 0 JG LP1 JL LP2 INC DL JMP OK
26、 LP1: INC BL JMP OK LP2: INC BH OK: ADD SI, 2LOOP NEXT RET START ENDP CODE ENDS END START 4-18 DATA SEGMENT ARRAY DW ;若干个数 COUT EQU $-ARRAY MAX DB MIN DB DATA ENDSSTACK 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 J
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1