微机原理及应用陈继红徐晨课后习题答案图文稿Word下载.docx
《微机原理及应用陈继红徐晨课后习题答案图文稿Word下载.docx》由会员分享,可在线阅读,更多相关《微机原理及应用陈继红徐晨课后习题答案图文稿Word下载.docx(76页珍藏版)》请在冰豆网上搜索。
![微机原理及应用陈继红徐晨课后习题答案图文稿Word下载.docx](https://file1.bdocx.com/fileroot1/2022-12/28/929b53bc-614f-46d6-b238-aec19725891d/929b53bc-614f-46d6-b238-aec19725891d1.gif)
291D;
000100100011B。
(4)FFFF十进制数:
65535D;
1111111111111111B。
3.6分别用
8位二进制数和
16位二进制数写出下列十进制数的原码和补码。
(1)16
(2)-16(3)+0(4)-0(5)127(6)-128(7)121(8)-9
(1)168位二进制数原码
:
00010000补码:
00010000;
16位二进制数原码
00000000
0000000000010000。
(2)-168位二进制数原码
10010000补码
11110000;
10000000
1111111111110000。
(3)+08位二进制数原码
00000000补码:
00000000;
0000000000000000。
(4)-08位二进制数原码
10000000补码:
0000000000000000。
(5)1278位二进制数原码
01111111补码:
01111111;
0000000001111111。
(6)-1288位二进制数原码:
无补码:
10000000;
16位二进制数原码:
1111111110000000。
(7)1218位二进制数原码
01111001补码
01111001;
01111001补码:
0000000001111001。
(8)-98位二进制数原码
10001001补码:
11110111;
1111111111110111。
3.7试实现下列转换。
1
(1)11000010
(2)00001101(3)11000010(4)10111101
3.8假设两个二进制数
(1)A、B两数均为带符号的补码数
(2)A、B两数均为无符号数
(1)A、B两数均为带符号的补码数:
A>B
(2)A、B两数均为无符号数
A<B
3.9下列各数均为十进制数,请用
8位二进制数补码计算下列各题,用十六进制数表示
其运算结果,并判断是否溢出,验证教材中所给的判断依据。
(1)90+71
(2)90-71(3)-90-71(4)-90+71(5)-90-(-71)
(1)90+71=161>127溢出
[90]补+[71]补=01011010+01000111=10100001=0A1H=[-91]补
(2)90-71=19<127无溢出
[90]补+[-71]补=01011010+10111001=00010011=13H=[19]补
(3)-90-71=-161<-128溢出
[-90]补+[-71]补=10100110+10111001=01011111=5FH=[95]补
(4)-90+71=-19>-128无溢出
[-90]补+[71]补=10100110+01000111=11101101=0EDH=[-19]补
(5)-90-(-71)=-19>-128无溢出
3.10完成下列
8位二进制数的逻辑运算。
∧∨
⊕∧
⊕∨
3.11以下均为
2位十六进制数,试说明当把它们分别看作无符号数或字符的
ASCII码
值,它们所表示的十进制数和字符是什么
(1)30H
(2)39H(3)42H(4)62H(5)20H(6)7H
(1)30H所表示的十进制数是:
48D;
字符是:
0。
(2)39H所表示的十进制数是:
57D;
9。
(3)42H所表示的十进制数是:
66D;
B。
(4)62H所表示的十进制数是:
98D;
b。
(5)20H所表示的十进制数是:
32D;
sp空格。
(6)7H所表示的十进制数是:
7D;
BEL报警。
3.12把以下十进制数分别以压缩
BCD码、非压缩
BCD码、ASCII码串表示。
(1)2
(2)78
(1)2压缩
BCD码:
0010、非压缩
00000010、ASCII码:
0110010
(2)78压缩
01111000、非压缩
0000011100001000、ASCII码:
0110111
011100
3.13设浮点数格式如下图所示:
阶码、尾数均以补码表示,基数为
2,求:
+25.6和-361.25的规格化浮点数。
×
25
+5=0101B,补码
规格化浮点数:
2
规格化浮点数
3.14设某计算机用
12位表示一个浮点数,该浮点数从高位到低位依次为:
阶符
1位、
阶码
3位(原码表示)、数符
1位、尾数
7位(补码表示
),则
010010110011的真值是多少
-9.625
3.158086汇编语言指令的寻址方式有哪几类
哪种寻址方式的指令执行速度最快
?
解:
寻址方式分为
立即数寻址方式、寄存器操作数寻址方式和存储器操作数寻址方式。
其中,寄存器操作数寻址方式的指令执行速度最快。
3.16在直接寻址方式中
一般只指出操作数的偏移地址
那么,段地址如何确定?
如果要用
某个段寄存器指出段地址
指令中应该如何表示
默认的数据访问
操作数在
DS段;
堆栈操作在
SS段;
串操作源操作数
(SI)在
DS
段,目的操作数
(DI)在
ES段;
用
BP作为指针在
SS段。
如果要显式地指定段地址,则在操作
数中规定段寄存器。
例如:
MOVAX,
ES:
(BX+10H)
3.178086系统中,设
DS=1000H,ES=2000H,SS=1200H,BX=0300H,SI=0200H,
BP=0100H,VAR的偏移量为
0600H,请指出下列指令的目标操作数的寻址方式,若目
标操作数为存储器操作数,计算它们的物理地址。
(1)MOVBX,12;
目标操作数为寄存器寻址
(2)MOV[BX],12;
目标操作数为寄存器间址
PA=10300H
(3)MOVES:
[SI],AX;
PA=20200H
(4)MOVVAR,8;
目标操作数为存储器直接寻址
PA=10600H
(5)MOV[BX][SI],AX;
目标操作数为基址加变址寻址
PA=10500H
(6)MOV6[BP][SI],AL;
目标操作数为相对的基址加变址寻址
PA=12306H
(7)MOV[1000H],DX;
PA=11000H
(8)MOV6[BX],CX;
目标操作数为寄存器相对寻址
PA=10306H
(9)MOVVAR+5,AX;
PA=10605H
3.18下面这些指令中哪些是正确的那些是错误的如果是错误的,请说明原因。
(1)XCHGCS,AX;
错,CS不能参与交换
(2)MOV[BX],[1000];
错,存储器之不能交换
(3)XCHGBX,IP;
错,
IP不能参与交换
(4)PUSHCS;
CS不能为
PUSH的操作数
(5)POPCS;
错,不能将数据弹到
CS中
(6)INBX,DX;
输入
/输出只能通过
AL/AX
(7)MOVBYTE[BX],1000;
1000大于
255,不能装入字节单元
(8)MOVCS,[1000];
CS不能作为目标寄存器
(9)MOVBX,OFFSETVAR[SI];
OFFSET只能取变量的偏移地址
(10)MOVAX,[SI][DI];
SI、DI不能成为基址加变址
(11)MOVCOUNT[BX][SI],ES:
AX;
AX是寄存器,不能加段前缀
3.19试述以下指令的区别:
⑴MOVAX,3000H与
MOVAX,[3000H]
⑴MOVAX,3000H指令源操作数的寻址方式为立即寻址方式,指令执行结果为:
(AX)=3000H。
而
MOVAX,[3000H]指令源操作数的寻址方式为直接寻址方式
指令执行结
果为:
DS:
3000H)AX。
⑵MOVAX,MEM与
MOVAX,OFFSETMEM
⑵MOVAX,MEM指令源操作数的寻址方式为直接寻址方式,指令执行结果为:
MEM)AX。
MOVAX,OFFSETMEM指令的执行结果是把
MEM的偏移量送
AX。
⑶MOVAX,MEM与
LEAAX,MEM
⑶MOVAX,MEM指令的执行结果是
LDS:
LEAAX,MEM
的执行结果是把
(4)JMPSHORTL1与
JMPNEARPTRL1
3
JMPSHORTL1为段内无条件短程转移,跳转的范围不得超过带符号的
8位二进
制数表示的字节范围;
JMPNEARPTRL1为段内无条件近程转移,跳转的范围不得超过带
符号的
16位二进制数表示的字节范围。
(5)CMPDX,CX与
SUBDX,CX
CMPDX,CX是比较,也是利用减法比较,但是
dx中的值不变,标志寄存器改
变。
SUBDX,CX是做减法运算,
dx中为减后的值,标志寄存器改变
(6)MOV[BP][SI],CL与
MOVDS:
[BP][SI],CL
BP默认的段基址是
SS,物理地址
PA=SS+BP+SI;
第二个重定义为
DS段基址,
物理地址
PA=DS+BP+SI
3.20设
DS=2100H,SS=5200H,BX=1400H,BP=6200H,说明下面两条指令所进行的
具体操作:
MOVBYTEPTR[BP],20H
MOVWORDPTR[BX],20H
解:
前一条指令是把立即数
20H,传送至堆栈段
(BP的默认段
)偏移量由
BP规定的字节单
元,地址为:
52000H+6200H=58200H
第二条指令是把立即数
20H,传送至数据段
(BX的默认段
BX规定的字单元
地
址为:
21000H+1400H=22400H。
3.21设当前
SS=2010H,SP=FE00H,BX=3457H,计算当前栈顶的地址为多少当执
行
PUSHBX指令后,栈顶地址和栈顶
2个字节的内容分别是什么
当前栈顶的地址
=2FF00H
当执行
PUSHBX指令后,栈顶地址
=2FEFEH
(2FEFEH)=57H
(2FEFFH)=34H
3.22设
DX=78C5H,CL=5,CF=1,确定下列各条指令执行后,
DX和
CF中的值。
(1)
SHRDX,1;
DX=3C62HCF=1
(2)
SARDX,CL;
DX=03C6HCF=0
(3)
SHLDX,CL;
DX=18A0HCF=1
(4)
RORDX,CL;
DX=2BC6HCF=0
(5)
RCLDX,CL;
DX=18B7HCF=1
(6)
RCRDH,1;
DX=BCC5HCF=0
3.23设
AX=0A69H,VALUE字变量中存放的内容为
1927H,写出下列各条指令执行
后寄存器和
CF、ZF、OF、SF、PF的值。
AXCFZFOFSFPF
(1)XORAX,VALUE;
134EH00001
(2)ANDAX,VALUE;
0821H00001
(3)SUBAX,VALUE;
F142H10011
(4)CMPAX,VALUE;
0A69H10011
(5)NOTAX;
F596HXXXXX
(6)TESTAX,VALUE;
0A69H00001
3.24设
AX和
BX中是符号数,
CX和
DX是无符号数,请分别为下列各项确定
CMP
和条件转移指令。
CX值超过
DX转移。
AX未超过
BX转移。
DX为
0转移。
CX值等于小于
CMPCX,DX
JANEXT
CMPAX,BX
JLENEXT
CMPDX,0
JZNEXT
4
JBENEXT
3.25阅读分析下列指令序列:
ADDAX,BX
JNOL1
JNCL2
SUBAX,BX
JNCL3
JNOL4
JMPL5
若
BX的初值分别为以下
5种情况,则执行该指令序列后,程序将分别转向何处
(L1~L5中的一个)。
AX=13C6H,
BX=80DCH
AX=0B568H,BX=54B7H
AX=42C8H,
BX=608DH
AX=0D023H,BX=9FD0H
AX=9FD0H,
BX=0D023H
(1)转
L1:
不溢出,转移到
L1处;
(2)转
(3)转
L2:
溢出,不转移到
L1处,进位
CF=0,转移到
L2处;
(4)转
L3:
CF=1,不转移到
L2处,减法借位
CF=0,转移
到
L3处;
(5)转
L5:
CF=1,不转
移到
L3处,不溢出
OF=0,转移到
L4处;
3.26用普通运算指令执行
BCD码运算时
为什么要进行十进制调整
具体地讲,在进行
BCD码的加、减、乘、除运算时
程序段的什么位置必须加上十进制调整指令
因为
8086指令把操作数作为二进制数进行二进制运算
要得到正确的
BCD结果,需
要进行调整。
在加、减、乘法指令之后加上
BCD调整指令
而在除法指令之前先用
BCD调
整指令再用除法指令。
3.27在编写乘除法程序时,为什么常用移位指令来代替乘除法指令编写一段程序,实
现将
BX中的数除以
10,结果仍然放在
BX中。
用移位指令时,左移
l位相当于将操作数乘
2,右移
1位相当于将操作数除
2。
用
移位指令实现一些简单的乘除法程序,比用乘法指令和除法指令进行乘、除运算要快得多。
用除法指令实现:
MOVCL0AH
MOVAX,BX
IDIVCL
MOVBX,AX
3.28串操作指令使用时特别要注意和
SI,DI这两个寄存器及方向标志
DF密切相关。
请
具体就指令
MOVSB/MOVSW、CMPSB/CMPSW、SCASB/SCASW、LODSB/LODSW、
STOSB/STOSW列表说明和
SI、DI及
DF的关系。
解答:
SIDIDF
MOVSB/MOVSW指出源地
址
指出目的地
不带
REP重复前缀时,
DF=0,每传送一次,
SI、
DI加
1或加
2,DF=1,SI、DI则减
1或减
CMPSB/CMPSW
存放源字
符串首地
存放目的字
符串首地址
DF=0,每次比较后,
SI、DI加
2,CX减
1,DF=1,SI、DI减
SCASB/SCASW无指出字符串
首址偏移量
无
LODSB/LODSW作为地址
指针
存放处理结
果
DF=1时,地址作增量修改,
DF=0时,地址作减
量修改
5
STOSB/STOSW无存放目的地
无
3.29用串操作指令设计实现以下功能的程序段:
首先将
100H个数从
2170H处搬到
1000H处,然后,从中检索相等于
VAL中字符的单元,并将此单元值换成空格符。
START:
MOVAX,DS
MOVES,AX
MOVSI,2170H
MOVDI,1000H
MOVCX,100H
CLD
REPMOVSB
ANOTHER:
MOVAL,VAL
AGE:
SCASB
JZFIN
DECCX
JNZAGE
JMPOVER
FIN:
MOVBYTEPTR[DI-1],20H
CMPCX,0
OVER:
RET
3.30求双字长数
DX∶AX的相反数。
答:
NEGDX
NEGAX
SBBDX,0
3.31试对数据段偏移地址为
101H单元中的单字节数求补后存入
102H,最高位不变,
低
7位取反存入
103H,高
4位置
1,低
4位不变,存入
104H。
MOVAX,[0101H]
MOVCX,AX
NOTAX
MOV[0102H],AX
XORBX,7FH
MOV[0103H],BX
ANDCX,0F0H
MOV[0104H]
3.32试编写一个程序,比较两个同长字符串
STRING1和
STRING2所含字符是否相同,
若相同
MATCH单元赋值
1,若不相同
6
程序段为:
;
数据定义
STRING1DB‘ABCDEFGHIJK
STRING2DB‘ABCDFGKJMATCHDB
功能代码
MOVAX,SEGSTRING1
MOVDS,AX
MOVAX,SEGSTRING2
MOVES,AX
LEASI,STRING1
LEADI,STRING2
MOVCX,STRING1-STRING2
REPECMPSB
JZEQUAL
MOVMATCH,0
EQUAL:
MOVMATCH,1
HLT
;
串
1,作为源串
2,作为目标串
定义
MATCH单元
源串段地址送
DS
目标串段地址送
ES
源串偏移地址送
SI
目标串偏移地址送
DI
重复次数送
CX
地址增
相等继续比较,不相等退出
退出时,若
ZF=1,表示两串相等
不相同,
M