微机原理及应用习题答案.docx
《微机原理及应用习题答案.docx》由会员分享,可在线阅读,更多相关《微机原理及应用习题答案.docx(34页珍藏版)》请在冰豆网上搜索。
微机原理及应用习题答案
《微机原理及应用》习题答案
教材:
《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=0CS®CP=1有溢出
1-8
(1)[x]补+[y]补=01001010+01100001=10101011
CS=0,CP=1CS®CP=1有溢出
⑵[X]补-[y]补=[x]补+[-y]补
=01001010-01100001=01001010+10101010
=100010110
CS=1,CP=1CS®CP=0无溢出
1-9
(1)(127)10=(000100100111)BCD
(2)(74)H=(116)10=(000100010110)BCD
(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.100110011x
2110
浮点规格数为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.100010
001)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.单精度浮点数为
010*********
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
DENRD
WR
读存储器
0
0
0
0
1
写存储器
0
1
0
1
0
2-17
PA=CSx16+IPIP的范围为OOOOH〜FFFFH而CS为
A000H
因此PA的范围即现行代码段可寻址的存储空间范围为
AOOOOH〜AFFFFH
2-2O
1234ABCDH=OOO1OO1OOO11O1OO1O1O1O1111OO11O1B
PA=SSx16+SP=AOOOOH+O1OOH=AO1OOH
栈顶SP=0100H-4=00FCH
11OO11O1AOOFCH
10101011
00110100
00010010A0100F
2-21
(1)1278H+3469H=0001001001111000+001101000110
1001
=0100011011100001
SF=0ZF=0AF=1PF=1CF=0OF=0
(2)54E3H-27A0H=0101010011100011+110110000110
0000
=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=DSX16+SI
(4)源操作数为基址加变址寻址方式;目标操作数为寄存器寻址方式
EA=BX+SIPA=DS<16+BX+SI
(5)源操作数、目标操作数都为寄存器寻址方式
(6)源操作数为基址寻址方式;目标操作数为寄存器寻址方式
EA=BX+10HPA=D(7)源操作数为寄存器间接寻址方式;目标操作数为寄存器寻址方式
EA=BXPA=ES<16+BX
(8)源操作数为带位移量基址加变址寻址方式;目标操作数为寄存器寻址方式
EA=BX+SI+20HPA=D(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)有错。
格式为INAL,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
⑵PA=SSX16+BP+DI=1E4F6H
[1E4F6H]=5678H
(3)BX=BX+SI+20H=0056H
PA=DSX16+BX+2=09228H
/•AX=1E40H
(4)PA=DSX16+BX+DI=09226H
SI=00F6H
[SI]=0024H
(5)PA=DSX16+BX+32H=09226H
CX=00F6H[09226]=5678H(执行XCHGCX,32H[BX后)
E再执行XCHG20[BX][SI]AX后
PA=DSX16+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=0AL=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个字节传送到
VAR4
DB86H,27H,23H,00H,24H,
DW0B430H,1062H
SECONDS首地址的内存单元。
(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
12VAR1
-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'
CC
‘T'
‘O'VAR3+6的
偏移地址
VAR3的偏移地址
VAR3的段基地址
4-3
(1)DATA1
1AH
(2)DATA2
或者
(1)DATA1LABELBYTE
ARRAYDW2786H,23H,1A24H
(2)DATA2LABELWORD
ARRAYDB30H,0B4H,62H,10H
4-5
⑴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为数据块的长度
MOVCX,Z
MOVSI,OFFSETX
MOVDI,OFFSETY
CLD;设置方向标志为0
REPMOVSB
ENDM
4-8
(1)错源操作数和目标操作数长度不匹配
(2)对
(3)错两个存储器操作数之间不可直接传送
⑷错CS不可作为MOV旨令的目标操作数
(3)对
(4)错没有[SI][DI]的寻址方式
(5)错[BX-SI]不是正确的寻址方式
(6)错操作数没指明类型
(7)错立即数不可作为MOV旨令的目标操作数
(8)错[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
Y
X+2
SI=2
4-10
MOVAX,WORDPTRX
ADDAX,WORDPTR
MOVWORDPTRZ,AX
MOVAX,WORDPTR
ADCAX,WORDPTRY+2
MOVWORDPTRZ+2,AX
4-12
(1)
DATASEGMENT
DATAENDS
CODESEGMENT
MOVAH,01H
码值在AL中INT21H
CMPAL,41H
JZP0
CMPAL,42H
JZP1
CMPAL,4AH
JZP9
JMPEXIT
P1:
…
RET
P2:
…
RET
P9:
…
RET
EXIT:
MOVAH,4CH
INT21H
(2)
DATASEGMENT
BASEDWP0,P1,……,P9
DATAENDS
CODESEGMENT
MOVAH,01H;从键盘输入一个字符,其ASC
码值在AL中INT21H
CMPAL,'A';判别字符是否位
于‘A'到’J'之间
JBEXIT
从键盘输入一个字符,其ASC
CMPAL,'J'
JA
EXIT
JMPLOOP
SUBAL,'A';在正确范围之内,根据表内地址分支MOVBL,AL
MOVBH,0
SHLBX,1
JMPBASE[BX]
P1:
…
RET
P2:
…
RET
P9:
…
RET
EXIT:
MOVAH,4CH
INT21H
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
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
STACKSEGMENTPARASTAC‘KSTACK'
DB100DUP(0)
STACKENDS
CODESEGMENT
ASSAUMCS:
CODE,DS:
DATA
STARTPROCFAR
PUSHDS
MOVAX,0
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVDX,0;正数、负数、0暂时分别存在BL、BHDL中
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
STARTENDPCODEENDSENDSTART
4-18DATASEGMENT
ARRAYDW;若干个数
COUTEQU$-ARRAYMAXDBMINDB
DATAENDS
STACKSEGMENTPARASTAC‘KSTACK'DB100DUP(0)
STACKENDSCODESEGMENT
ASSAUMCS:
CODE,DS:
DATA
STARTPROCFAR
PUSHDS
MOVAX,0
PUSHAX
MOVAX,DATAMOVDS,AX
LEABX,ARRAY
MOVCX,COUT
MOVAH,[BX]
MOVAL,[BX]DECCXINCBX
LOP:
CMPAH,[BX]
JANEXT1MOVAH,[BX]
JMPNEXT2
NEXT1:
CMPAL,[BX]
JBNEXT2MOVAL,[BX]
NEXT2:
INCBX
LOOPLOP
MOVMAXAH
MOVMINAL
RET
STARTENDPCODEENDSENDSTART
4-22
LEABX,STRINGMOVCX,80
NEXT:
CMP[BX],20H
JZOK
INCBX
LOOPNEXT
MOVCL,-1
JMPFIN
OK:
NEGCX
ADDCX,80
FIN:
4-24
(1)LEASI,STRING1
LEADI,STRING2
MOVCX,20
CLD
REPMOVSB
(2)
LEASI,STRING1
LEADI,STRING2
ADDSI,19
ADDDI,19
MOVCX,20
STD
REPMOVSB
(3)
MOVAL,20H
LEADI,STRING1
MOVCX,20
CLD
REPNZSCASB
JZFOUND
MOVDL,0;未找到
JMPEXIT
FOUND:
DECDI
MOVBX,DI
MOVDL,01H
找到
EXIT:
(4)LEASI,STRING1
LEADI,STRING2
MOVCX,20
CLD
REPCMPSB
JNZNEQ
MOVBL,0;相同
JMPEXIT
NEQ:
MOVBL,01H;不相同
4-27
EXIT:
DS
DISPLAY:
FAR;
4-25
;MODULE_1
EXTRNVAR3:
DWORD
PUBLICVAR1,LABEL_1
;MODULE_2
EXTRNVAR1:
WORD,LABEL_1:
FAR,LABEL_3:
FAR
PUBLICVAR3,LABEL_2
;MODULE_3
EXTRNVAR1:
WORD,LABEL_1:
FAR,LABEL_2:
FAR
PUBLICLABEL_3