李伯成《微机原理》课后习题答案Word格式.docx
《李伯成《微机原理》课后习题答案Word格式.docx》由会员分享,可在线阅读,更多相关《李伯成《微机原理》课后习题答案Word格式.docx(39页珍藏版)》请在冰豆网上搜索。
1.8将下列八进制数转换成二进制数:
(1)X=760Q=111'
110'
000B
(2)X=32415Q=11'
010'
100'
001'
101B
1.9将下列二进制数转换成十六进制数:
X=101010111101101B=55EDH
X=1100110101'
1001B=11001101011001B=3359H
X=1000110001B=1000110001B=231H
1.10将下列十六进制数转换成二进制数:
X=ABCH=101010111100B
X=3A6F.FFH=0011101001101111.11111111B
X=F1C3.4B=1111000111000011.01001011B
1.11将下列二进制数转换成BCD码:
(1)X=1011011.101B=1'
011'
011.101B=91.625d=10010001.0110BCD
(2)X=1010110.001B=1’010’110.001=126.1BCD
1.12将下列十进制数转换成BCD码:
(1)X=1024D=0001000000100100BCD
(2)X=632=011000110010BCD
(3)X=103=000100000011BCD
1.13写出下列字符的ASCII码:
A41H65D01000001B
939H47D
*2AH42D
=3DH45D
!
21H33D
1.14若加上偶校验码,下列字符的ASCII码是什么?
字符原码加上偶校验码之后
B42H,01000010B42H,01000010B
434H,00110100BB4H,10110100B
737H,00110111BB7H,10110111B
=3DH,00111101BBDH,10111101B
21H,00100001B21H,00100001B
?
3FH00111111B3FH,00111111B
1.15加上奇校验,上面的结果如何?
字符原码加上奇校验码之后
B42H,01000010BC2H,11000010B
434H,00110100B34H,00110100B
737H,00110111B37H,00110111B
=3DH,00111101B3DH,00111101B
21H,00100001BA1H,10100001B
3FH00111111BBFH,10111111B
1.16计算下式:
(1)[‘B’/2+ABH-11011001B]*0.0101BCD=(42H/2+ABH-D9H)*0.21BCD=
=F3H*0.21BCD=(-DH)*0.21BCD=-2.73D
(2)3CH–[(84D)/(16Q)+’8’/8D]=60D-[84D/14D+(56/8)]=60D-[13]D=
=47D
1.17对下列十进制数,用八位二进制数写出其原码、反码和补码:
(正数的反码与原码相同,负数的反码除符号位之外其余各位按位取反。
正数的补码与原码相同;
负数的补码除符号位以外,其余各位按位取反之后再加一。
)
数据原码反码补码
+99011000110110001101100011
-99111000111001110010011101
+127011111110111111101111111
-127111111111000000010000001
+0000000000000000000000000
-0100000001111111100000000
1.188位二进制数原码可表示数的范围是+127~-128;
8位二进制数补码可表示的数的范围是+127~-127;
8位二进制数反码可表示的数的范围是:
+127~-128;
1.1916位二进制数的原码、补码、反码可表示的数的范围是多少?
+32767~-32768、+32767~-32768、+32767~-32768;
1.20至少写出3种用二进制编码状态表示十进制数字的编码方式。
8421码、5421码2421码余3码十进制数
00000000000000110
00010001000101001
00100010100001012
00110011100101103
01000100101001114
01011000101110005
01101001110010016
01111010110110107
10001011111010118
10011100111111009
李伯成《微机原理》习题第二章
④洪志全等编《现代计算机接口技术》
电子工业出版社2002年4月
⑤仇玉章主编《32位微型计算机原理与接口技术》
清华大学出版社2000年9月
2.18086CPU的RESET引脚的功能是什么?
答:
RESET引脚称为复位引脚,输入、三态、高电平有效;
RESET引脚将使CPU立即结束当前操作,处理器要求RESET信号至少要保持4个时钟周期的高电平,才能结束它正在进行的操作。
CPU复位以后,除了代码段寄存器CS的值为FFFFH外,其余所有寄存器的值均为零,指令队列为空。
当RESET回到低电平时,CPU开始执行“热启动”程序,由于此时CS的值为FFFFH,IP的值为0000H,所以CPU复位以后执行的第一条指令的物理地址为FFFF0H,该单元通常放置一条段间直接转移指令JMPSS:
OO,SS:
OO即为系统程序的实际起始地址。
2.2在8086CPU工作在最小模式时,
(1)当CPU访问存储器时,要利用哪些信号?
当CPU访问存储器时,要利用AD0~AD15、WR*、RD*、IO/M*以及A16~A19;
(2)当CPU访问外设接口时,要利用哪些信号?
当CPU访问外设接口时,同样要利用AD0---AD15、WR*、RD*以及IO/M*,但不使用高端地址线A16---A19;
(3)当HOLD有效并得到响应时,CPU哪些引脚置高阻?
当HOLD有效并得到响应时,CPU除HOLD、HOLDA引脚外其余所有的信号引脚均为高阻态。
2.3略
2.4说明8086CPUREADY信号的功能。
见P23
2.58086CPU的NMI和INTR引脚的不同有几点?
两点:
(1)INTR是可以由用户用指令禁止的,(通过中断允许标志IF的开---STI和关CLI进行);
而NMI不能由用户禁止;
(2)INTR是可以区分优先级别的,NMI是最高级的,没有中断优先级的排队。
2.6说明8086CPU内部标志寄存器各位的含义。
8086CPU的标志寄存器(PSW或FLAG)共有9个标志位,分别是:
CF(CarryFlag)---进位或借位标志;
PF(ParityFlag)---奇偶标志;
AF(auxiliaryFlag)----半进位标志;
ZF(ZeroFlag)-----结果为零标志;
SF(SignFlag)-----符号标志;
OF(OverflowFlag)-----溢出标志;
IF(InterruptEnableFlag)-----中断允许标志;
DF(DirectionFlag)----方向标志;
TF(TrapFlag)-----陷阱标志。
2.7说明8086CPU内部14个寄存器的作用。
8086内部的寄存器可以分为3类:
第一类:
通用寄存器:
AX、BX、CX、DX、SI、DI、SP、BP,共8个可以存储数据或者地址的低16位;
AX、BX、CX和DX可以分成8个8位的寄存器使用;
SI、DI又称变址寄存器,用于存储变址地址;
SP和BP存放指针变量值。
第二类:
段寄存器:
CS、DS、SS、ES,共4个寄存器,只能存放对应段的段地址;
第三类为IP和FLAG,IP在通常情况下不允许用户访问,而FLAG是用以向用户提供了解ALU工作状态或者控制CPU工作方式的标志寄存器。
2.8试画出8086CPU工作在最小模式时的总线形成示意图。
(注:
BHE*引脚为34脚---即SS0,参见P25状态编码表)
四点说明:
A、MN/MX端接+5V,决定了8086工作在最小模式。
B、有一片8234A,作为时钟发生器。
C、有三片8282或74LS373,用来作为地址锁存器。
D、当系统中所连接的存储器和外设比较多时,需要增加系统数据总线的驱动能力,这时,要用两片8286/8287(74LS244或74LS245)作为总线收发器。
2.98086/8088为什么采用地址/数据引线复用技术?
考虑到芯片成本,8086/8088采用40条引线的封装结构。
40条引线引出8086/8088的所有信号是不够用的,采用地址/数据线复用引线方法可以解决这一矛盾,从时序逻辑的角度,地址与数据信号不会同时出现,二者可以分时复用同一组引线。
2.10怎样确定8086的最大或最小工作模式?
最大、最小模式产生控制信号的方法有何不同?
引线MN/MX*的逻辑状态决定8086的工作模式,MN/MX*引线接高电平,8086被设定为最小模式;
MN/MX*引线接低电平,8086被设定为最大模式。
最小模式下所有的控制信号由CPU相关引线直接提供;
最大模式下控制信号由8288专用芯片译码后提供,8288的输入由8086的S2─S0三条状态信号引线提供。
李伯成《微机原理》习题第三章
1.周明德:
微型计算机IBM-PC系统原理与应用清华大学出版社1991
2.王永山等:
微型计算机原理与应用西安电子科大出版社1998
3.张怀莲:
IBMPC汇编语言程序设计电子工业出版社1990
注:
本习题解中的程序仅为代码片段,可在Emu8086version2.57环境下仿真运行,如果在MASM下进行汇编,需添加段设置以及相应的伪指令。
3.1
MOVAX,00H;
立即寻址
SUBAX,AX;
寄存器寻址
MOVAX,[BX];
寄存器间接寻址
MOVAX,TABLE;
直接寻址
MOVAL,ARAY1[SI];
寄存器相对寻址
MOVAX,[BX+6];
3.2若1KB的数据存放在TABLE以下,试编写程序将该数据拌到NEXT之下。
程序片段如下:
ORG100h
MOVCX,03FFH;
数据个数
LEASI,TABLE;
源区首地址
LEADI,NEXT;
目的区首地址
AGAIN:
MOVAL,[SI];
MOV[DI],AL;
搬移
INCSI
INCDI;
移动地址指针
DECCX;
循环计数器递减
JNZAGAIN;
循环未结束转
HLT;
暂停
TABLEDB1024dup('
A'
);
源数据区
NEXTDB1024dup(0);
目的数据区
3.3编写10个字(16位二进制数)之和的程序
LEASI,ADD1;
LEADI,ADD2;
LEABX,SUM;
MOVCL,CONT;
MOVCH,0;
循环初始化
CLC;
进位清零
MADD1:
MOVAX,[SI];
读加数1
ADCAX,[DI]
ADDSI,2;
移动源区地址指针
ADDDI,2;
移动目的区地址指针
MOV[BX],AX;
回存计算结果
ADDBX,2;
移动“和”存储区地址指针
LOOPMADD1;
循环控制
ADD1DB0FEH,86H,7CH,44h,56H,1FH,24H,01H,02H,33H;
加数1
ADD2DB56H,49H,4EH,0FH,9CH,22H,45H,11H,45H,21H;
加数2
SUMDB10DUP(0);
和存储单元
CONTDB5;
循环次数
3.4某16位二进制数,放在DATA连续的两个单元中,试编程求其平方根和余数,将其分别存放在ANS和REMAIN中。
ORG100h
MOVBL,2;
除数初值
AGAIN:
MOVCX,NUM;
预计最大循环次数
MOVAL,BL;
0、1的平方根除外
MULBL;
得到2的平方
CMPAX,CX;
大于原始数据么?
JGEXIT;
若原始数据小于4转EXIT
MOVAX,CX;
读数
DIVBL;
试除
INCBL;
除数递增
JMPAGAIN;
继续除
EXIT:
DECBL;
去除除数自加
MOVANS,BL;
存商
恢复余数
SUBCX,AX;
MOVREMAIN,CL;
HLT
NUMDW7;
ANSDB?
;
REMAINDB?
3.5在DATA1之下顺序存放着以ASCII码表示的千位数,将其转换成二进制数。
MOVCL,4;
移位次数
MOVCH,CL;
MOVSI,OFFSETASCBIN
CLD
XORAX,AX
XORDX,DX
ASCB1:
LODSB
ANDAL,7FH
CMPAL,'
0'
;
不大于‘0’结束转换
JLERR
9'
JGASCB2;
大于‘9’转ASCB2
SUBAL,30H;
数字形式二进制数减30H
JMPASCB3
ASCB2:
CMPAL,'
大于‘9’又小于‘A’结束转换
F'
JGERR;
大于‘F’为不合理数,结束转换
SUBAL,37H;
字符形式ASCII数减37H
ASCB3:
ORDL,AL
ROLDX,CL
DECCH
JNZASCB1
MOVBIN,DX;
存储转换结果
ERR:
NOP
ASCBINDB'
1'
'
B,'
4'
3'
BINDW?
3.7编写程序将MOLT中的一个8位数乘以20,乘积放在ANS中(用3种方式)。
解:
第一种方法:
常规乘法运算
ORG100h
MOVAL,MOLT
MOVBL,20
MULBL
MOVANS,AX
HLT
MOLTDB2
ANSDW?
第二种方法,将MOLT连加20次
MOVCX,20
MOVBX,MOLT
XORAX,AX
CLC
ADD1:
ADCAX,BX
LOOPADD1
MOVANS,AX
HLT
MOLTDW5
第三种方法,将“20”连加MOLT次
MOVCX,MOLT
MOVBX,20
3.8在DATA之下存放100个无符号的8位数,找出其最大者并将其存放在KVFF单元。
XORDL,DL
LEADI,KVFF;
NEXT0:
LEASI,BUFFER;
MOVCL,99;
比较次数为N-1次
NEXT1:
MOVAL,[SI];
INCSI;
CMPDL,AL;
JNCNEXT2;
MOVDL,AL;
DL中始终存目前最大值
NEXT2:
DECCL;
JNZNEXT1;
MOV[DI],DL;
最大值存储
BUFFERDB;
自行定义100个数据
KVFFDB?
3.9若将数据按大小顺序排序,试编写程序..
解:
此处采用“冒泡法”予以处理:
ORG100h
LEADI,BUFFER;
数据区
MOVBL,99;
外循环次数
NEXT0:
MOVSI,DI;
MOVCL,BL;
内循环次数
NEXT3:
MOVAL,[SI];
读数
INCSI;
移动指针
CMPAL,[SI];
比较
JNCNEXT5;
大于转NEXT5
MOVDL,[SI];
MOV[SI-1],DL;
MOV[SI],AL;
不大于互换
NEXT5:
DECCL;
内循环次数减一
JNZNEXT3;
DECBL;
外循环次数减一
JNZNEXT0
BUFFERDB自行定义100个字节型数据
3.10在BVFF单元中有一个BCD数A,试根据下列关系编写程序,计算结果存在DES中.
A<
20,Y=3*A;
A<
60,Y=A-20;
A>
=60,Y=80.
ORG100h
MOVAL,BVFF
CMPAL,20
JLEX1
CMPAL,60
JLEX2
MOVAL,80
JMPSTOP
EX1:
MOVBL,3
MULBL
EX2:
SUBAL,20
STOP:
MOVDES,AL
BVFFDB8
DESDB?
3.11址为DATAB开始的80个单元中,存放某班80个学生的某课程成绩,要求:
统计>
=90分、80~89分、70~79分、60~69分、60分以下的人数,结果存放在BTRX开始的5个单元中
求平均成绩,结果存放在LEVEL中。
寄存器使用分配:
90分以上在DH,80分以上在DL,70分以上在BH,60分以上在BL,60分以下在AH,总分、均分都在[DI]。
XORAH,AH
XORDX,DX;
统计结果清零
XORBX,BX;
LEASI,DATA
LEAD