微计算机原理第2版第三章课后习题答案潘名莲 马争 丁庆生 编著精编版Word格式.docx
《微计算机原理第2版第三章课后习题答案潘名莲 马争 丁庆生 编著精编版Word格式.docx》由会员分享,可在线阅读,更多相关《微计算机原理第2版第三章课后习题答案潘名莲 马争 丁庆生 编著精编版Word格式.docx(25页珍藏版)》请在冰豆网上搜索。
[SI[
(DS)*16+(SI)
(4)ADCZX,[BX][SI]
基址变址寻址
[BX+SI]
(DS)*16+(BX)+(SI)
(5)ANDAX,DX
(6)MOVAX,[BX+10H]
[BX+DISP]
(DS)*16+(BX)+10H
[BX]
带段超越寄存器寻址
(ES)*16+(BX)
(8)MOVAX,[BX+SI+20H]
相对基址变址寻址
[BX+SI+20H]
(DS)*16+(BX)+(SI)+20H
(9)MOV[BP],CX
[BP]
(SS)*16+(BP)
固定寻址
[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
ADCAX,4[SI]
(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
NUM1
48H
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
3、CLC
CLD
MOVAH,0
MOVCX,7
XORBH,BH
AGA:
MOVBL,1[SI]
ADCAX,BX
INCSI
DECCX
JNZAGA
4、LEASI,NUM1
LEADI,NUM2
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
AGA:
ADCAL,[SI]
DAA
LOOPAGA
MOVSUM+1,AH
2、CLC
MOVAH,0
MOVAL,NUM1
SUBAL,NUM2
DAS
MOVSUM,AL
差=0F0H=-10H,CF=1
3-10写出下列程序段完成的数学计算公式,并画出数据存放的示意图。
X
X+2
Y
Y+2
Z