微计算机原理第2版第三章课后习题答案潘名莲马争丁庆生编著.docx
- 文档编号:23421765
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:28
- 大小:63.50KB
微计算机原理第2版第三章课后习题答案潘名莲马争丁庆生编著.docx
《微计算机原理第2版第三章课后习题答案潘名莲马争丁庆生编著.docx》由会员分享,可在线阅读,更多相关《微计算机原理第2版第三章课后习题答案潘名莲马争丁庆生编著.docx(28页珍藏版)》请在冰豆网上搜索。
微计算机原理第2版第三章课后习题答案潘名莲马争丁庆生编著
微计算机原理(第2版)第三章课后习题答案--潘名莲-马争-丁庆生-编著
(10)PUSHDS
固定寻址
寄存器
[SP]
(SS)*16+(SP)
3-3已知8086中一些寄存器的内容和一些存储器单元的内容如图3-1所示,试指出下列各条指令执行后,AX中的内容。
(1)MOVAX,2010H
(2)MOVAX,BX(3)MOVAX,[1200H]
(4)MOVAX,[BX](5)MOVAX,1100H[BX](6)MOVAX,[BX][SI]
(7)MOVAX,1100H[BX+SI](8)MOVLEAAX,[SI]
解:
(1)(AX)=2010H
(2)(AX)=0100H(3)(AX)=4C2AH(4)(AX)=3412H
(5)(AX)=4C2AH(6)(AX)=7856H(7)(AX)=65B7H(8)(AX)=0002H
M
30100H
12H
30101H
34H
30102H
56H
30103H
78H
……
……
31200H
2AH
31201H
4CH
31202H
B7H
31203H
65H
CPU
BX
0100H
SI
0002H
DS
3000H
图3-1
3-4已知(AX)=2040H,(DX)=380H,端口(PORT)=(80H)=1FH,(PORT+1)=45H,执行下列指令后,指出结果等于多少?
解:
(1)OUTDX,AL(0380H)=40H
(2)OUTDX,AX(380H)=40H(381h)=20H
(3)INAL,PORT(AL)=1FH
(4)INAX,80H(AX)=451FH
(5)OUTPORT1,AL(PORT1)=40H
(6)OUTPORT1,AX(PORT1)=2040H
3-5已知:
(SS)=0A2F0H,(SP)=00C0H,(AX)=8B31H,(CX)=0F213,试画出下列指令执行到位置1和位置2时堆栈区和SP指针内容的变化示意图。
图中应标出存储单元的实际地址PA。
PUSHAX
PUSHCX;位置1
POPF;位置2
解:
已知(SS)=0A2F0H,指令顺序依次编号为①、②、,示意图如图所示:
(SS)=0A2F0H
0A2FBCH
13H
←②(SP)-4=00BCH(位置1)
F2H
0A2FBEH
31H
←①(SP)-2=00BEH③(SP)+2=00BCH+0002H=00BEH(位置2)
8BH
0A2FC0H
(SP)=00C0H
3-6识别下列指令的正确性,对错误的指令,说明出错的原因。
(1)MOVDS,100
(2)MOV[1000H],23H
(3)MOV[1000H],[2000H]
(4)MOVDATA,1133H
(5)MOV1020H,DX
(6)MOVAX,[0100H+BX+BP]
(7)MOVCS,AX
(8)PUSHAL
(9)PUSHWORDPTR[SI]
(10)INAL,[80H]
(11)OUTCX,AL
(12)INAX,380H
(13)MOVCL,3300H
(14)MOVAX,2100H[BP]
(15)MOVDS,ES
(16)MOVIP,2000H
(17)PUSHCS
(18)POPCS
(19)LDSCS,[BX]
(20)MOVGAMMA,CS√
解:
(1)×,不能对段寄存器送立即数
(2)×,存储单元类型不正确
(3)×,MOV不能实现两个存储单元间
直接传送
(4)×,段名不能作目的操作数
(5)×,立即数不能作目的操作数
(6)×,基址寄存器BX和BP只能使用其
中一个
(7)×,CS不能用作目的操作数
(8)×,堆栈操作作为字操作AL应改为
AX
(9)√
(10)×,80H为输入端口号不加方括号
(11)×,应输出到端口而不是通用寄存器
(12)×,用DX做间址寄存器380H应存
DX
(13)×,类型不匹配
(14)√
(15)×,两个段寄存器间不能直接传送
(16)×,IP不能直接用作目的操作数
(17)√
(18)×,CS不能做目的操作数
(19)×,目的操作数应是通用寄存器而不
能是段寄存器CS
(20)×,符号名不能作为目的操作数
3-7已知存储器数据段中的数据如图3-3所示。
阅读下列的两个程序段后,回答:
1.每个程序段的运行结果是什么?
2.两个程序段各占多少字节的内容,执行时间是多少?
(1)LESSI,NUM1
MOVAX,[SI]
ADDAX,4[SI]
MOV8[SI],AX
ADDSI,2
MOVAX,[SI]
ADCAX,4[SI]
MOV8[SI],AX
(2)
MOVAX,NUM1
ADDAX,NUM2
MOVSUM,AX
MOVAX,NUM1+2
ADCAX,NUM2+2
MOVSUM+2,AX
解:
1、运行结果如下:
(1)0AC6863A0H
(2)0AC6863A0
2、时钟周期字节数
(1)LESSI,NUM12+EA2~4
MOVAX,[SI]103
ADDAX,4[SI]9+EA2~4
M
NUM1
48H
DS
41H
16H
28H
NUM2
58H
22H
52H
84H
SUM
MOV8[SI],AX103
ADDSI,243~4
MOVAX,[SI]103
ADCAX,4[SI]9+EA2~4
MOV8[SI],AX102~4
(2)MOVAX,NUM1103
ADDAX,NUM29+EA2~4
MOVSUM,AX9+EA2~4
MOVAX,NUM1+29+EA2~4
ADCAX,NUM2+29+EA2~4
MOVSUM+2,AX9+EA2~4
图3-3
3-8已知数据如图3-3所示,数据的低位在前,按下列要求编写程序段:
1.完成NUM1和单元NUM2两个字数据相加,和存放在NUM1中。
2.完成NUM1单元开始的连续4个字节数据相加,和不超过一字节,存放SUM单元。
3.完成NUM1单元开始的连续8个字节数据相加,和16位数,放在SUM和SUM+1两个单元(用循环)。
4.完成NUM1和NUM2的双倍精度字数据相加,和放在NUM2开始的字单元中。
解:
1、CLC
LEASI,NUM1
MOVAX,WORDPTR[SI]
ADDAX,WORDPTRNUM2
MOVWORDPTR[SI],AX
MOVAX,WORDPTR[SI+2]
ADCAX,WORDPTRNUM2+2
MOVWORDPTR[SI+2],AX
HLT
2、LEASI,NUM1
MOVAL,[SI]
ADDAL,1[SI]
ADDAL,2[SI]
ADDAL,3[SI]
MOVSUM,AL
HLT
3、CLC
CLD
LEASI,NUM1
MOVAL,[SI]
MOVAH,0
MOVCX,7
XORBH,BH
AGA:
MOVBL,1[SI]
ADCAX,BX
INCSI
DECCX
JNZAGA
MOVSUM,AX
HLT
4、LEASI,NUM1
LEADI,NUM2
MOVAX,[SI]
ADDAX,[DI]
MOV[DI],AX
MOVAX,2[SI]
ADCAX,2[DI]
MOV2[DI],AX
3-9已知的BCD数如图3-3所示,低位在前,按下列要求编写计算BCD数据(为组合型BCD)的程序段。
1.完成从NUM1单元开始的连续8个组合型BCD数相加,和(超过一字节)放在SUM和SUM+1两个单元中。
2.完成NUM1单元和NUM2单元的两个BCD数相减,其差存入SUM单元,差=?
,
(CF)=?
解:
1、CLC
CLD
LEASI,NUM1
MOVCX,7
MOVAH,0
MOVAL,[SI]
AGA:
INCSI
ADCAL,[SI]
DAA
LOOPAGA
MOVSUM,AL
MOVSUM+1,AH
HLT
2、CLC
MOVAH,0
MOVAL,NUM1
SUBAL,NUM2
DAS
MOVSUM,AL
差=0F0H=-10H,CF=1
3-10写出下列程序段完成的数学计算公式,并画出数据存放的示意图。
X
X+2
Y
Y+2
Z
Z+2
W
W+2
MOVAX,X
MOVDX,X+2
ADDAX,Y
ADCDX,Y+2
SUBAX,Z
SBBDX,Z+2
MOVW,AX
MOVW+2,DX
解:
W=X+Y-Z,数据存放如图所示:
3-11已知数据如图3-3所示,低位在前,按下列要求编写程序段
1.NUM1和NUM2两个数据相乘(均为无符号数),乘积放在SUM开始的单元。
2.NUM1和NUM2两个字数据相乘(均为无符号数),乘积放在SUM开始的单元。
3.NUM1单元的字节数据除以13(均为无符号数),商和余数依次放入SUM开始的两个字节单元。
4.NUM1单元的字节数据除以NUM2字单元的字,商和余数依次放入SUM开始的两个字节单元。
解:
1.为32位×32位,极为64位
2.MOVAX,NUM1
IMULNUM2;积在(DX)(AX)中
MOVSUM,AX
MOVSUM+2,DX
3.MOVAL,NUM1
CBW
MOVCL,0DH
DIVCL
MOVSUM,AL
MOVSUM+1,AH
4.MOVAX,NUM1
CWD
IDIVNUM2
MOVSUM,AX
MOVSUM+2,DX
3-12(L略)
3-13已知(AL)=0C4H,DATA单元中的内容为5AH,写出下列每条指令单独执行后的结果。
1.ANDAL,DATA
2.ORAL,DATA
3.XORAL,DATA
4.NOTDATA
5.ANDAL,0FH
6.ORAL,01H
7.XORAL,0FFH
8.TESTAL,80H
解;
1.(AL)=01000000B=40H
2.(AL)=0DEH
3.(AL)=10011110B=9EH
4.(DATA)=0A5H
5.(AL)=04H
6.(AL)=0C5H
7.(AL)=3BH
8.(AL)=0C4H,OF=0,CF=0
3-14用移位循环指令,编写完成以下功能的程序段(结果放回原处)
1.将无符号数83D分别乘2和处2.
2.将带符号数-47D分别乘2和除2.
3.将图3-3中NUM1双字乘2和除2.
4.将图3-3中从NUM1开始的4个字乘2.
解:
1.MOVAL,53H
SHLAL,1
MOVAL,53H
SHRAL,1
2.MOVAL,0D1H
SALAL,1
MOVAL,0D1H
SARAL,1
3.MOVAX,NUM1
MOVDX,NUM1+2
SHLAX,1
RCLDX,1
MOVAX,NUM1
MOVDX,NUM1+2
SARDX,1
RCRAX,1
4.SALNUM1,1
RCLNUM1+2,1
RCLNUM1+4,1
RCLNUM1+6,1
3-15编写完成以下功能的程序段,并指出运行后,其标志CF、ZF、SF和OF的状态是什么?
1.BCD数58—32
2.无符号数3AH—3AH
3.带符号数79—(—57)
4.带符号数—32+(42)
解:
1.MOVAL,58H
SUBAL,32H
DAS
CF=0,ZF=0,SF=0,OF=0
2.MOVAL,3AH
SUBAL,3AH
CF=0,ZF=1,SF=0,OF=0
3.已知X=79D,Y=57D则【X】补=01001111,【Y】补=11000111
所以[X]补—[Y]补=[X]补+[-Y]补=10001000
MOVAL,79
MOVBL,-57
SUBAL,BL
CF=0,ZF=0,SF=1,OF=1
4.MOVAL,0F3H
MOVBL,2AH
ADDAL,BL
或者
MOVAL,0F3H
ADDAL,2AH
CF=0,ZF=0,SF=0,OF=0
3-16用循环移位指令实现下列功能,设(AX)=0C3H
1.设(CL)=8,移位前、后AX内容不变
2.设(CL)=9,移位前、后AX内容不变
3.将AX中高4位和低4位交换位置
4.将AX中高4位放到低4位上,而高4位置0
解:
1.MOVCL,8
ROLAL,CL(或者RORAL,CL)
2.MOVCL,9
RCLAL,CL(或者RCRAL,CL)
3.MOVBX,AX
ANDAX,0FF0H
XCHGBH,BL
MOVCL,4
ROLBH,CL
ROLBL,CL
ANDBH,0F0H
ANDBL,0FH
ORAX,BX
4.本小题可以多种解法:
解1:
5.MOVBX,AX
ANDAX,0FF0H
XCHGBH,BL
MOVCL,4
ROLBH,CL
ROLBL,CL
ANDBH,0
ANDBL,0FH
ORAX,BX
解2:
MOVBX,AX
XCHGAH,AL
MOVCL,4
RORAX,CL
SHRAH,CL
ANDAL,0FH
ANDBL,0FOH
ORAL,BL
3-17写出下列程序段执行后的结果:
(AL)=?
(DL)=?
完成的是什么功能?
MOVCL,4
MOVAL,87
MOVDL,AL
MOVAL,0FH
ORAL,30H
SHRDL,CL
ORDL,30H
解:
完成与、或、移位等逻辑运算,运算结果:
(AL)=37H;(DL)=35H
3-18用乘法指令和用传送、移位、相加指令分别实现Y=10X的运算,设X=12H,分别编写这两个程序段。
解:
(1)MOVAL,X
MOVCL,10
NULCL
(2)MOVAL,X
SALAL,1;(AL)=2*X
MOVBL,AL;(BL)=X*2
SALAL,1;(AL)=4*X
SALAL,1;(AL)=8*X
ADDAL,BL;(AL)=8*X+2*X=10*X
3-19写出下面指令序列完成的数学计算是什么?
MOVCL,3
SHLAX,CL
SHLBL,CL
SHLCX,CL
SHLDH,CL
解:
将一多精度数(6字节)乘以8
3-20写出下列能代替重复串操作指令完成同样功能的指令序列。
(1)REPMOVSW
(2)REPCMPSB
(3)REPSCASB
(4)REPLODSW
(5)REPSTOSB
解:
(1)LEASI,AREA1
LEADI,AREA2
MOVCX,N
CLD
AGA:
MOVAX,DS:
[SI]
MOVES:
[DI],AX
INCSI
INCSI
INCDI
INCDI
DECCX
JNZAGA
RET
(2)LEASI,VAR1
LEADI,VAR2
MOVCX,N
CLD
NEXT:
CMPSB
JNZFIN
LOOPNEXT
RET
(3)MOVDI,OFFSETCOMMAND
MOVAL,‘’
MOVCX,N
CLD
NEXT:
SCASB
JZFOUND
LOOPNEXT
RET
(4)MOVSI,OFFSETBUF
MOVCX,N
CLD
NEXT:
LODSW
MOVRES,AX
LOOPNEXT
RET
(5)MOVDI,OFFSETBUF
MOVCX,N
CLD
NEXT:
STOSB
DECCX
JNZNEXT
RET
3-21欲将数据段中自AREA1中的100个字数据搬到附加段中以AREA2开始的区中,用下面的3种传送指令编写程序段:
1.用MOV指令;2.用基本串传送指令;3.用重复串传送指令
解:
1.LEASI,AREA1
LEADI,AREA2
MOVCX,100
CLD
AGAIN:
MOVAX,[SI]
MOVES:
[DI],AX
INCSI
INCSI
INCDI
INCDI
DECCX
JNZAGAIN
RET
2.MOVSI,OFFSETAREA1
MOVDI,OFFSETAREA2
MOVCX,100
CLD
AGAIN:
MOVSAREA2,AREA1
DECCX
JNZAGAIN
RET
3.MOVSI,OFFSETAREA1
MOVDI,OFFSETAREAA2
CLD
MOVCX,100
REPMOVSB
RET
3-22假定在数据段中已知字符串和未知字符串的定义如下:
STRING1DB‘MESSAGEANDPROCCESS’
STRING2DB20DUP(?
)
用串操作指令编写完成下列功能的程序段(设DS和ES重叠);
1.从左到右把STRING1中的字符串搬到STRING2中;
2.从右到左把STRING1中的字符串搬到STRING2中;
3.搜索STRING1字符串中是否有空格。
如有,记下第一个空格的地址,并放入BX中;
4.比较STRING1和STRING2字符串是否相同。
解:
1.MOVSI,OFFSETSTRING1
MOVDI,OFFSETSTRING2
MOVCX,20;共20个字符
CLD;从左到右就是增址方向,设置DF←0
REPMOVSSTRING2,STRING1
2.MOVSI,OFFSETSTRING1+13H
MOVDI,OFFSETSTRING2+13H
MOVCX,20
STD;从右到左为减址方向,设置DF←0
REPMOVSSTRING2+13H,STRING1+13H
3.MOVDI,OFFSETSTRING1
MOVCX,20
MOVAL,20H;空格字符的ASCII码
CLD
REPNZSCASB
JZFOUND
MOVDI,0
JMPDONE
FOUND;DECDI;因SCASB的功能是:
(1)(AL)——[DI]
(2)DI←[DI]+1
MOVBX,DI
DENE:
HLT
4.MOVSI,OFFSETSTRING1
MOVDI,OFFSETSTRING2
MOVCX,20
CLD
REPZCMPSB
JNZUMMAT
MOVAL,0
JMPOUTPUT
UMMAT:
MOVAL,0FFH
OUTPUT:
MOVRESULT,AL
RET
3-23下面两条短转移指令的转移地址ADDR1和ADDR2分别是多少(用十六进制表示)?
1.0220EB0AJMPADDR1
2.0230EBF7JMPADDR2
解:
1.e为当前IP与目的地址的距离。
已知位移量e的计算公式:
e=目的地址—(IP源+2),即
0AH=目的地址—(IP源+23)=ADDR1—0222H
所以,ADDR1=0AH+0222H=022CH(正向转移)
2.e=目的地址—(IP源+2)
0F7H=ADDR2—0232H
所以,ADDR2=0F7H+0232H=0229H(负向转移)
3-24NEARJMP,SHORTJMP,LOOP和条件转移指令的转移范围是多少?
解:
(1)NEARJMP:
目标地址距JMP指令+32767~—32768字节范围以内。
(2)SHORTJMP:
目标地址距JMP指令+127~—128字节范围以内。
(3)LOOP:
所转去的目标地址在+127~—128字节范围以内,为LOOPSHORT_LABEL
(4)条件转移指令:
目的地址OPRD为近标号,即转向的目标地址必须在转移指令的+127~—128字节范围以内。
2-25设AX和CX中的内容为无符号数,BX和DX中的内容为带符号数,试用CMP指令和条件转移指令实现以下判断:
1.若(AX)超过(CX),则转至BIGER。
2.若(BX)>(DX),则转至BIGE。
3.若(CX)低于(AX),则转至LESS。
4.若(DX)>(BX),则转至LESS。
5.若(AX)=(CX),则转至EQUAL。
解:
1.CMPAX,CX
JABIGER
2.CMPBX,DX
JGBIGER
3.CMPCX,AX
JBLESS
4.CMPDX,BX
JLLESS
5.CMPAX,CX
JZEQUAL
3-26(略)
3-27试编写一个程序段,能完成下列数学表达式的功能
解1:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 原理 第三 课后 习题 答案 潘名莲马争丁 庆生 编著
![提示](https://static.bdocx.com/images/bang_tan.gif)