李伯成《微型计算机原理及应用》课后习题答案.docx
《李伯成《微型计算机原理及应用》课后习题答案.docx》由会员分享,可在线阅读,更多相关《李伯成《微型计算机原理及应用》课后习题答案.docx(27页珍藏版)》请在冰豆网上搜索。
李伯成《微型计算机原理及应用》课后习题答案
李伯成《微机原理》习题第一章
本章作业参考书目:
①薛钧义主编《微型计算机原理与应用——Intel80X86系列》
机械工业出版社2002年2月第一版
②陆一倩编《微型计算机原理及其应用(十六位微型机)》
哈尔滨工业大学出版社1994年8月第四版
③王永山等编《微型计算机原理与应用》
西安电子科技大学出版社2000年9月
1.1将下列二进制数转换成十进制数:
1*27+0*26+0*25+1*24+0*23+1*22+1*21+0*21
=128D+0D+0D+16D+0D+0D+4D+2D=150D
=1*28+0*27+1*26+1*25+0*24+1*23+1*22+0*21+0*20
=256D+0D+64D+32D+0D+16D+4D+0D=364D
X=1101101B=
1*26+1*25+0*24+1*23+1*22+0*21+1*20
=64D+32D+0D+8D+4D+0D+1D=109D
1.2将下列二进制小数转换成十进制数:
(1)X=0.00111B=
0*2-1+0*2-2+1*2-3+1*2-4+1*2-5=
0D+0D+0.125D+0.0625D+0.03125D=0.21875D
(2)X=0.11011B=
1*2-1+1*2-2+0*2-3+1*2-4+1*2-5=
0.5D+0.25D+0D+0.0625D+0.03125D=0.84375D
(3)X=0.101101B=
1*2-1+0*2-2+1*2-3+1*2-4+0*2-5+1*2-6=
0.5D+0D+0.125D+0.0625D+0D+0.015625D=0.703125D
1.3将下列十进制整数转换成二进制数:
1.4将下列十进制小数转换成二进制数:
(1)X=0.75D=0.11B
(2)X=0.102D=0.0001101B
1.5将下列十进制数转换成二进制数
(1)100.25D=01100100.01H
(2)680.75D=001010101000.11B
1.6将下列二进制数转换成十进制数
(1)X=1001101.1011B=77.6875D
(2)X=111010.00101B=58.15625D
1.7将下列二进制数转换成八进制数
101’011’101B=535Q
1’101’111’010’010B=15722Q
(3)X=110B=6Q
1.8将下列八进制数转换成二进制数:
(1)X=760Q=111'110'000B
(2)X=32415Q=11'010'100'001'101B
1.9将下列二进制数转换成十六进制数:
X=101010111101101B=55EDH
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计算下式:
BCD=(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
李伯成《微机原理》习题第二章
①薛钧义主编《微型计算机原理与应用——Intel80X86系列》
机械工业出版社2002年2月第一版
②陆一倩编《微型计算机原理及其应用(十六位微型机)》
哈尔滨工业大学出版社1994年8月第四版
③王永山等编《微型计算机原理与应用》
西安电子科技大学出版社2000年9月
④洪志全等编《现代计算机接口技术》
电子工业出版社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下进行汇编,需添加段设置以及相应的伪指令。
MOVAX,00H;立即寻址
SUBAX,AX;寄存器寻址
MOVAX,[BX];寄存器间接寻址
MOVAX,TABLE;直接寻址
MOVAL,ARAY1[SI];寄存器相对寻址
MOVAX,[BX+6];寄存器相对寻址
3.1若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.2编写10个字(16位二进制数)之和的程序
ORG100h
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;循环控制
HLT;暂停
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;存商
MOVAL,BL;恢复余数
MULBL;
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
CMPAL,'9'
JGASCB2;大于‘9’转ASCB2
SUBAL,30H;数字形式二进制数减30H
JMPASCB3
ASCB2:
CMPAL,'A';大于‘9’又小于‘A’结束转换
JLERR
CMPAL,'F'
JGERR;大于‘F’为不合理数,结束转换
SUBAL,37H;字符形式ASCII数减37H
ASCB3:
ORDL,AL
ROLDX,CL
DECCH
JNZASCB1
ROLDX,CL
MOVBIN,DX;存储转换结果
ERR:
NOP
HLT
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次
ORG100h
MOVCX,20
MOVBX,MOLT
XORAX,AX
CLC
ADD1:
ADCAX,BX
LOOPADD1
MOVANS,AX
HLT
MOLTDW5
ANSDW
第三种方法,将“20”连加MOLT次
ORG100h
MOVCX,MOLT
MOVBX,20
XORAX,AX
CLC
ADD1:
ADCAX,BX
LOOPADD1
MOVANS,AX
HLT
MOLTDW5
ANSDW
3.8在DATA之下存放100个无符号的8位数,找出其最大者并将其存放在KVFF单元。
ORG100h
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;最大值存储
HLT
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
HLT
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
JMPSTOP
EX2:
SUBAL,20
STOP:
MOVDES,AL
HLT
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]。
ORG100h
XORAH,AH
XORDX,DX;统计结果清零
XORBX,BX;统计结果清零
LEASI,DATA
LEADI,LEVEL
MOVCL,CONT;总人数送循环计数器CX
goon:
MOVAL,[SI];读原始数据
ADC[DI],AL;累加总分
ADC[DI+1],0;计算进位
CMPAL,90
JLPP8;不高于90分者转PP8
INCDH;90--100分的人数加一
JMPSTOR
PP8:
CMPAL,80
JLPP7;不高于80分转PP7
INCDL;80----89分的人数加一
JMPSTOR
PP7:
CMPAL,70
JLPP6;不高于70分者转PP6
INCBH;70---79分的人数加一
JMPSTOR
PP6:
CMPAL,60
JLPP5;不高于60分者转PP5
INCBL;60---69分的人数加一
JMPSTO