完整word版《微机原理及应用》习题答案.docx
《完整word版《微机原理及应用》习题答案.docx》由会员分享,可在线阅读,更多相关《完整word版《微机原理及应用》习题答案.docx(33页珍藏版)》请在冰豆网上搜索。
![完整word版《微机原理及应用》习题答案.docx](https://file1.bdocx.com/fileroot1/2023-4/19/46d9e5eb-ce5a-4f16-b922-5ce8ccd9fff2/46d9e5eb-ce5a-4f16-b922-5ce8ccd9fff21.gif)
完整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
[-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
CS=0,CP=0, CS⊕CP=0 无溢出
(4)-85-60
[-85]补=10101011 [-60]补=11000100
[-85]补+[-60]补=10101011+11000100=101101111
CS=1, CP=0 CS⊕CP=1 有溢出
1-8
(1)[x]补+[y]补=01001010+01100001=10101011
CS=0, CP=1 CS⊕CP=1 有溢出
(2)[x]补-[y]补=[x]补+[-y]补
=01001010-01100001=01001010+10101010
=100010110
CS=1, CP=1 CS⊕CP=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.1000101100X27
=0.1000101100X2+111
浮点规格数为011101000101
(2)-38.405
(-38.405)10=(-100110.011)B
-100110.011=-0.100110011x26 =-0.100110011x2110
浮点规格数为011011001100
(3) -0.3125
(-0.3125)10=(-0.0101)2=(-0.101)2x2-001
浮点规格数为111111010000
1.+0.00834
2.(+0.00834)10=(0.000000100010001)2=(0.100010001)2x2-110
3.浮点规格数为101001000100
4.1-15
5.
(1)(69.57)10=(1000101.10010001111010111)2
6. =(1.00010110010001111010111)2x2110
7. p=6+127=133=(10000101)2
8.单精度浮点数为01000010100010110010001111010111
9.
(2)(-38.405)10=(-100110.011001111010111000)2
10. =-(1.00110011001111010111000)2x2101
11. p=5+127=132=(10000100)2
12.单精度浮点数为11000010000110011001111010111000
13.(3)(-0.3125)10=(-0.0101)2=(-1.01)2x2-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-17
PA=CSx16+IP IP的范围为0000H~FFFFH而CS为A000H
因此PA的范围即现行代码段可寻址的存储空间范围为A0000H~AFFFFH
2-20
1234ABCDH=00010010001101001010101111001101B
PA=SSx16+SP=A0000H+0100H=A0100H
栈顶SP=0100H-4=00FCH
11001101 A00FCH
10101011
00110100
00010010 A0100F
2-21
(1)1278H+3469H=0001001001111000+0011010001101001
=0100011011100001
SF=0ZF=0AF=1PF=1CF=0OF=0
(2)54E3H-27A0H=0101010011100011+1101100001100000
=10010110101000011
SF=0ZF=0AF=1PF=0CF=0OF=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+DISPPA=DS×16+BX+DISP
(3)源操作数为寄存器寻址方式;目标操作数为寄存器间接寻址方式
EA=SIPA=DS×16+SI
(4)源操作数为基址加变址寻址方式;目标操作数为寄存器寻址方式
EA=BX+SIPA=DS×16+BX+SI
(5)源操作数、目标操作数都为寄存器寻址方式
(6)源操作数为基址寻址方式;目标操作数为寄存器寻址方式
EA=BX+10HPA=DS×16+BX+10H
(7)源操作数为寄存器间接寻址方式;目标操作数为寄存器寻址方式
EA=BXPA=ES×16+BX
(8)源操作数为带位移量基址加变址寻址方式;目标操作数为寄存器寻址方式
EA=BX+SI+20HPA=DS×16+BX+SI+20H
(9)源操作数为寄存器寻址方式;目标操作数为寄存器间接寻址方法
A=BPPA=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端口地址,且100H>255,应放在DX中,DX在指令中出现
(13)有错。
源操作数应为存储器操作数
(14)有错。
对16位寻址时,存储器操作数应为SI、DI、BP、BX,不能为CX
3-8
(1)AX=3355HSP=1FFEH
(2)AX=3355HDX=4466HSP=1FFEH
3-9
PA=SS×16+BP+SI=2F000H+0200H+0046H=2F246H
执行XCHGBX,[BP+SI]后
BX=4154H[2F246H]=6F30H
3-12
(1)PA=DS×16+BX+SI+20H=09226H
∴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(执行XCHGCX,32H[BX]后)
E再执行XCHG20[BX][SI]AX后
PA=DS×16+BX+SI+20H=09226
∴AX=5678H[09226H]=1234H
3-14
(2)MOVCL,4
ROLBL,CL
(4)ANDBX,0F7AFH
(6)TESTDX,0201H
3-16
(2)端口,(580H)=60H(581H)=80H
(4)寄存器,AL=4FHAH=(41H)
(5)端口,(45H)=60H
3-17参考程序如下:
(1)
MOVAX,NUM2
ADDNUM1,AX
(2)
MOVAL,NUM1
ADDAL,NUM1+1
ADDAL,NUM1+2
ADDAL,NUM1+3
MOVRES,AL
(3)
MOVAL,NUM1
MOVAH,0
MOVCX,7
LEADI,NUM1
MOVDX,0
NEXT:
INCDI
MOVDL,[DI]
ADDAX,DX
DECCX
JNZNEXT
MOVRES,AX
(4)
MOVAX,NUM1
ADDAX,NUM2
MOVNUM2,AX
MOVAX,NUM1+2
ADCAX,NUM2+2
MOVNUM2+2,AX
3-18参考程序如下:
(1)
MOVAL,NUM1
MOVAH,0
MOVCX,7
LEADI,NUM1
NEXT:
INCDI
MOVDL,[DI]
ADDAL,DL
DAA
MOVDH,AL;DAA只能对AL中数加以调整,DH为暂存用
MOVAL,AH
ADCAL,0
DAA;题目中只有8个数相加,所以这里也可以不作调整
MOVAH,AL
MOVAL,DH
DECCX
JNZNEXT
MOVRES,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个字节传送到SECOND为首地址的内存单元。
(2)将0404H到0503H的内存单元清0。
3-25
OFSFZFPFCF
(1)00001
(2)0000无影响
(3)00001
(4)01001
(5)00001
(6)1不定不定不定1
(7)00010
(8)0不定不定不定0
(9)01010
(10)00010
(11)00110
(12)01011
(13)10001
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
CMPAL,01H
JZLAB1
CMPAL,02H
JZLAB2
CMPAL,04H
JZLAB3
TESTAL,07H
JNZLAB4
……
……
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)DATA1LABELBYTE
ARRAYDW2786H,23H,1A24H
(2)DATA2LABELWORD
ARRAYDB30H,0B4H,62H,10H
4-5
(1)VAR1的偏移量是30H,VAR2的偏移量是3AH
(2)CNT=10H
(3)VAR2+2单元的内容为02H
4-6
AAAMACRO
PUSHDS
SUBAX,AX
PUSHAX
MOVAX,DATA
MOVDS,AX
ENDM
4-7
TRANMACROX,Y,Z ;X,Y为源、目标数据块的首地址,Z为数据块的长度
MOV CX,Z
MOV SI,OFFSETX
MOV DI,OFFSETY
CLD ;设置方向标志为0
REP MOVSB
ENDM
4-8
(1) 错 源操作数和目标操作数长度不匹配
(2)对
(3)错 两个存储器操作数之间不可直接传送
(4)错 CS不可作为MOV指令的目标操作数
(5)对
(6)错 没有[SI][DI]的寻址方式
(7)错 [BX-SI]不是正确的寻址方式
(8)错 操作数没指明类型
(9)错 立即数不可作为MOV指令的目标操作数
(10)错 [8-BX]不是正确的寻址方式
4-9
MOVBX,OFFSETARRAY;将ARRAY的偏移地址传给BX
MOVCX,LENGTHARRAY;将ARRAY用DUP重复定义的数据项总数传给CX
MOVSI,0;将0传给SI
……
ADDSI,TYPEARRAY;将SI的内容与ARRAY的类型值相加,返回给SI
指令执行后
BX:
数组ARRAY的首地址
CX=100
SI=2
4-10
MOVAX,WORDPTR X
ADD AX,WORDPTR Y
MOVWORDPTRZ,AX
MOV AX,WORDPTR X+2
ADCAX,WORDPTR Y+2
MOVWORDPTRZ+2, AX
4-12
(1)
DATASEGMENT
DATA ENDS
CODE SEGMENT
…
MOVAH,01H ;从键盘输入一个字符,其ASC码值在AL中INT21H
CMPAL,41H
JZP0
CMPAL,42H
JZP1
…
CMP AL,4AH
JZP9
JMPEXIT
P1:
…
RET
P2:
…
RET
… …
P9:
…
RET
EXIT:
MOV AH,4CH
INT 21H
….
(2)
DATASEGMENT
BASE DW P0,P1,……,P9
DATA ENDS
CODE SEGMENT
…
MOVAH,01H ;从键盘输入一个字符,其ASC码值在AL中INT21H
CMP AL,'A' ;判别字符是否位于‘A’到‘J’之间
JB EXIT
CMPAL,'J'
JA EXIT
SUB AL,'A' ;在正确范围之内,根据表内地址分支MOV BL,AL
MOVBH,0
SHL BX,1
JMP BASE[BX]
P1:
…
RET
P2:
…
RET
… …
P9:
…
RET
EXIT:
MOV AH,4CH
INT 21H
….
4-14
LEABX,x
LEASI,y
LEADI,sum
ADDBX,7
ADDSI,7
ADDDI,8;和可能要9个字节
MOVCX,8
LOP:
MOVAL,[BX]
ADCAL,[SI]
DAA
MOV[DI],AL
DECBX
DECSI
DECDI
DECCX
JNZLOP
MOVAL,0
ADCAL,0
MOV[DI],AL
4-15
MOVSI,OFFSETFIRST
MOVCX,0;CX中存放A的个数
LOOP:
MOVAL,[SI]
CMPAL,‘$’
JZNEXT
CMPAL,‘A’
JNELP
INCCX
LP:
INCSI
JMPLOOP
NEXT:
……
4-16
MOVBX,0
MOVCX,16
NEXT:
RCLAX,1
JCP1
INCBH
JMPOK
P1:
INCBL
OK:
LOOPNEXT
MOVCX,BX
4-17
DATASEGMENT
DATA_WDW…………;若干个数
COUTEQU($-DATA_W)/2
COUT1DB0
COUT2DB0
COUT3DB0
DATAENDS
STACKSEGMENTPARASTACK‘STACK’
DB100DUP(0)
STACKENDS
CODESEGMENT
ASSAUMCS:
CODE,DS:
DATA
STARTPROCFAR
PUSHDS
MOVAX,0
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVDX,0;正数、负数、0暂时分别存在BL、BH、DL中
MOVBX,0
LEASI,DATA_W
MOVCX,COUT
NEXT:
MOVAX,[SI]
CMPAX,0
JGLP1
JLLP2
INCDL
JMPOK
LP1:
INCBL
JMPOK
LP2:
INCBH
OK:
ADDSI,2
LOOPNEXT
RET
STARTENDP
CODEENDS
ENDSTART
4-18
DATASEGMENT
ARRAYDW…………;若干个数
COUTEQU$-ARRAY
MAXDB
MINDB
DATAENDS
STACKSEGMENTPARASTACK‘STACK’
DB100DUP(0)
STACKENDS
CODESEGMENT
ASSAUMCS:
CODE,DS:
DATA
STARTPROCFAR
PUSHDS
MOVAX,0
PUSHAX
MOVAX,DATA
MOVDS,AX
LEABX,ARRAY
MOVCX,COUT
MOVAH,[BX]
MOVAL,[BX]
DECCX
INCBX
LOP:
CMPAH,[BX]
J