微机原理课后参考解答.docx
《微机原理课后参考解答.docx》由会员分享,可在线阅读,更多相关《微机原理课后参考解答.docx(20页珍藏版)》请在冰点文库上搜索。
微机原理课后参考解答
第一章习题
✓1.2请简述机器数和真值的概念。
✓1.3将下列十进制数分别转化为二进制数、八进制数、十六进制数和压缩BCD数。
✓(1125.74(=7D.BCH(2513.85(3742.24(469.357✓1.4将下列二进制数分别转化为十进制数、八进制数和十六进制数。
✓(1101011.101B(=43.625(2110110.1101B
✓(31001.11001B(4100111.0101B
✓1.5将下列十六进制数分别转化为二进制数、八进制数、十进制数和压缩BCD数。
✓(15A.26H(2143.B5H
✓(36CB.24H(4E2F3.2CH
✓1.68位和16位二进制数的原码、补码和反码可表示的数的范围分别是多少?
✓1.7写出下列十进制数的原码、反码、补码表示(采用八位二进制,最高位为符号位。
✓(1120(78H(262(3-26(E6H补码(4-127✓1.8已知补码求出其真值。
✓(146H(=70(29EH(=-98(3B6H(=-74(46C20H本章作业点评
注意正数的原码、反吗和补码相同,而负数不同。
作业解答请看书
第2章微处理器习题
✓2.18086/8088CPU由哪两部分组成?
它们的主要功能各是什么?
✓2.28086/8088CPU为什么要采用地址/数据线分时复用?
有何好处?
✓2.38086/8088CPU中的标志寄存器分为哪两类标志?
二者有何区别?
✓2.4设段寄存器CS=2400H,指令寄存器IP=6F30H,此时指令的物理地址PA是多少?
指向这一物理地址的CS值和IP值是否是唯一的?
答:
PA=2AF30H,不唯一。
✓2.5什么叫总线周期?
8086/8088系统中的总线周期由几个时钟周期组成?
如果CPU的主时钟频率为25MHz,一个时钟周期是多少?
一个基本总线周期是多少时间?
答:
4个T周期,1个T周期为1/25MHZ=4*10-8S
✓2.10什么是指令周期?
什么是时钟周期?
什么是总线周期?
三者有何关系?
2.15什么是总线?
简述微机总线的分类。
✓2.16简述PCI总线的特点。
✓2.17简述USB总线的特点。
本章作业点评
作业解答请看书
习题
3.1请解释名词:
操作码、操作数、立即数、寄存器操作数、存储器操作数。
3.2什么叫寻址方式?
8086指令系统有哪几种寻址方式?
3.3指出下列指令中源操作数的寻址方式
点评:
根据指令格式,仅给出源操作数的寻址方式
(1MOVSI,200
(2MOVAL,[2000H]
(3MOVCX,DATA[SI]
(4ADDAX,[BX+DI]
(5ANDAX,BX
(6MOV[SI],AX
(7MOVAX,DATA[BP+SI]
(8PUSHF
(9MOVAX,ES:
[BX]
(10JMPFARPTRPROCS_1(答:
直接寻址
3.4设DS=1000H,ES=2000H,BX=2865H,SI=0120H,偏移量D=
47A8H,试问下列各指令中源操作数所在位置,若有物理地址请计算出其物理地址值。
点评:
题目要求给出物理地址,仅(3(4(5(7(8(10计算物理地址
(1MOVAL,D(代码段中
(2MOVAX,BX(cpu寄存器中
(3MOVAL,[BX+D]内存数据段
(4MOVAL,[BX+SI+D]内存数据段
(5MOVBX,[BX+SI+2]内存数据段
(6MOV[BX+5],AX(cpu寄存器中
(7INCBYTEPTR[SI+3]内存数据段
(8MOVDL,ES:
[BX+SI]内存附加数据段
(9MOVAX,2010H(代码段中
(10MOVAX,DS:
[2010H]内存数据段
3.5现有DS=2000H,BX=0100H,SI=0002H,20100H=12H,20101H=34H,20102H=56H,20103H=78H,21200H=2AH,21201H=4CH,21202H=B7H,21203H=65H,试说明下列指令执行后,AX寄存器中的内容。
(1MOVAX,1200H(AX=1200H
(2MOVAX,BX(AX=0100H
(3MOVAX,[1200H](AX=4C2AH
(4MOVAX,[BX](AX=3412H
(5MOVAX,1100H[BX](AX=4C2AH
(6MOVAX,[BX+SI](AX=7856H
(7MOVAX,[1100H+BX+SI](AX=65B7H
3.9假设下列程序执行前SS=8000H,SP=2000H,AX=7A6CH,DX=3158H。
执行下列程序段,画出每条指令执行后,寄存器AX,BX,CX,DX的内容和堆栈存储的内容的变化情况,执行完毕后,SP=?
PUSHAX(答:
AX不变
PUSHDX(答:
DX不变
POPBX(答:
BX=DX
POPCX(答:
CX=AX
3.10编程序段分别完成如下功能:
(1AX寄存器低4位清零。
(答:
ANDAX,FFF0H
(2BX寄存器低4位置“1”。
(答:
ORBX,000FH
(3CX寄存器低4位变反。
(答:
XORCX,000FH
(4测试DL寄存器位3,位6是否同时为0,若是,将0送DL;否则1送DH。
(答:
TESTDL,48H
JZNEXT
MOVDH,01H
JMPDONE
NEXT:
MOVDL,00H
3.11写出三种不同类型的指令将寄存器BX清零。
答:
MOVBX,0
XORBX,BX
SUBBX,BX
3.12已知从DS:
2200H,ES:
3200H单元起分别存放20个ASCII的字符。
找出这两个字符串中第一个不同字符的位置(段内偏地址,并放入DS:
22A0H开始的连续两个单元中。
请设计完成此任务的程序段。
(1使用通常用的比较指令(CMP实现;
(2使用数据串比较指令(CMPSB实现。
答(1
MOVSI,2200H;
MOVDI,3200H;
MOVCX,20;
NEXT:
MOVAL,[SI]
CMPAL,ES:
[DI];
JNZSTOP
INCSI
INCDI;
DECCX;
JNZNEXT
JMPDONE;
STOP:
MOV[22A0H],SI;
DONE:
HLT
答(2
MOVSI,2200H;
MOVDI,3200H;
MOVCX,20;
NEXT:
REPZCMPSB;
JCXZDONE;如果CX=0,表示所有的字符都相同
DECSI
STOP:
MOV[22A0H],SI;
DONE:
HLT
3.13读下面程序段,请问:
在什么情况下,本段程序的执行结果是AH=0?
BEGIN:
INAL,5FH
TESTAL,80H
JZBRCH1
MOVAH,0
JMPSTOP
BRCH1:
MOVAH,0FFH
STOP:
HLT
答端口地址5FH的内容为负数时,AH=0
3.16阅读下列程序:
NEXT:
MOVAL,[SI]
MOVES:
[DI],AL
INCSI
INCDI
LOOPNEXT
写出用串指令完成上述功能的程序段。
答:
REPMOVSB
3.18假设寄存器AX=1234H,DX=0A000H,阅读下列程序段:
MOVBX,0
MOVCX,BX
SUBCX,AX
SBBBX,DX
MOVAX,CX
MOVDX,BX
上述程序执行后AX=?
DX=?
程序功能是什么?
答:
AX=EDCCH
DX=5FFFH
功能:
0-A0001234H
3.19比较AX,BX,CX中带符号数的大小,将最大的数放在AX中,请编程。
CMPAX,BX
JGNEXT
MOVAX,BX
NEXT:
CMPAX,CX
JGNEXT
MOVAX,CX
3.21编写程序段,在数据区0000H:
2000H开始100字节范围内,查找字符'A',若找到,则将偏移地址送入DX,没有找到,则结束。
答:
DATASEGMENT
ORG2000H
STRINGDB„1222677ASS…..‟共100个字符
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,ES:
DATA
MOVAX,DATA
MOVES,AX
CLD;置DF=0,地址增量方向
MOVDI,OFFSETSTRING;
MOVCX,100;
MOVAL,‘A’;
NEXT:
SCASB;
JZSTOP;ZF=1,找到“A”相同的字符,转STOPDEXCX;没找到(ZF=0,长度减1
JNZNEXT;
JMPDONE;
STOP:
DECDI;字符A所在偏移地址→BX
MOVDX,DI
DONE:
HLT
CODEENDS
ENDSTART
3.28已知数据段DATA从存储器实际地址02000H开始,作如下定义:
DATASEGMENT
VAR1DB2DUP(0,1,?
VAR2DW50DUP(?
VAR3DB10DUP(0,1,2DUP(4,5
DATAENDS
求出3个变量的SEG、OFFSET、TYPE、LENGTH和SIZE。
答:
SEGOFFSETTYPELENGTHSIZE。
VAR1DATA0000H122
VAR2DATA0006H250100
VAR3DATA0037H11010
3.29已知数据区定义了下列语句,采用图示说明变量在内存单元的分配情况以及数据的预置情况。
DATASEGMENT
A1DB20H,52H,2DUP(0,?
A2DB2DUP(2,3DUP(1,2,0,8
A3DB’GOOD!
’
A4DW1020H,3050H
DATAENDS
答:
相当于:
A1DB20H,52H,0,?
0,?
A2DB(2,1,2,1,2,1,2,0,8,(2,1,2,1,2,1,2,0,8
A3DB’GOOD!
’,字符在内存用ASCII码表示
A4DB20H,10H,50H,30H
3.30采用示意图来说明下列变量在内存单元的分配以及数据的预置。
DATASEGMENT
ORG4
VAR1DW9
VAR2DW2DUP(0
CONTEQU2
VAR3DBCONTDUP(?
8
VAR4DB2DUP(?
CONTDUP(0,′AB′
DATAENDS
答:
与题3.29类似
3.32执行下列指令后,AX寄存器中的内容是什么?
TABLEDW10,20,30,40,50
ENTRYDW3
.
MOVBX,OFFSETTABLE
ADDBX,ENTRY
MOVAX,[BX]
答:
AX=1E00H
3.34在数据区中,以TABLE开始连续存放0~6的立方值(称为立方表,设任给一数x(0≤x≤6,x在TAB1单元,查表求x的立方值,并把结果存入TAB2单元。
DSEGSEGMENT
TABLEDB0,1,8,27,64,125,…..;定义立方表
TAB1DB4;定义要查表的数X
TAB2DB?
;定义结果存放单元
DSEGENDS
COSEGSEGMENT
ASSUMECS:
COSEG,DS:
DSEG,SS:
SSEG
BEGIN:
MOVAX,DSEG
MOVDS,AX
MOVBX,OFFSETTAB1;置数据指针
MOVAH,0
MOVAL,DATA;取待查数
ADDBX,AX;求得查表地址
MOVAL,[BX];查表
MOVTAB2,AL;平方数送RUSULT单元
MOVAH,4CH
INT21H
COSEGENDS
ENDBEGIN
3.36编写程序,计算下面函数的值。
DATASEGMENT
XDB-10⎪⎩
⎪⎨⎧><=<=<=104100(30(2xxxx
xx
s
SDW?
DATAENDS
CODESEGMENT
ASSUMEDS:
DATA,CS:
CODE
START:
MOVAX,DATA;给相关段寄存器赋值
MOVDS,AX
MOVAL,X
CMPAL,0
JLA1
CMPX,10
JGA2
MOVBL,3
IMULBL
MOVS,AX
JMPEXIT
A1:
MOVBL,2
IMULBL
MOVS,AX
JMPEXIT
A2:
MOVBL,4
IMULBL
MOVS,AX
EXIT:
MOVAH,4CH;返回DOS
INT21H
CODEENDS
ENDSTART
3.39现有两个多字节压缩BCD码数9876543219H和1234567891H,它们分别按低位字节在前高位字节在后存放在变量A1和A2中,求它们的和与差,并将结果放在变量SUM和DEF中。
DATASEGMENT
A1DB19H,32H,54H,76H,98H
A2DB91H,78H,56H,34H,12H
SUMDB6DUP(?
DEFDB5DUP(?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA
MAINPROCFAR
START:
MOVAX,DATA
MOVDS,AX
MOVSI,OFFSETA1
MOVDI,OFFSETA2
MOVBX,OFFSETSUM
MOVCX,05
CLC
ADDF:
MOVAL,[SI]
ADCAL,[DI]
MOV[BX],AL
INCSI
INCDI
INCBX
DECCX
JNZADDF
MOVAL,0
ADCAL,AL
MOV[BX],AL(该三条指令用来处理最高位的进位MOVSI,OFFSETA1
MOVDI,OFFSETA2
MOVBX,OFFSETDEF
MOVCX,05
CLC
SUBF:
MOVAL,[SI]
SBBAL,[DI]
MOV[BX],AL
INCSI
INCDI
INCBX
DECCX
JNZSUBF
CODEENDS
ENDSTART
3.40设变量K中存放了由100个有符号整数组成的数组,编写程序段找出其中最大的一个,放到AX中.(注意:
编程时只用于10个数DSEGSEGMENT
KDW23,45,87,„„,98
COUNTEQU$-BUFFER
MAXDW?
DSEGENDS
CSEGSEGMENT
ASSUMECS:
CSEG,DS:
DSEG,SS:
SSEG
START:
MOVAX,DSEG
MOVDS,AX
MOVCX,COUNT/2;除2是字节数
LEABX,BUFFER
MOVAX,[BX]
INCBX
INCBX
DECCX
AGAIN:
CMPAX,[BX]
JGENEXT
MOVAX,[BX]
NEXT:
INCBX
INCBX
LOOPAGAIN
MOVMAX,AX
CSEGENDS
ENDSTART
3.43在数据段中有一个字节数组,编程统计其中正数的个数,放入A单元,负数的个数,放入B单元。
DSEGSEGMENT
DATDB23,45,87,„„,98
COUNTEQU$-BUFFER
ADB?
BDB?
DSEGENDS
CSEGSEGMENT
ASSUMECS:
CSEG,DS:
DSEG,SS:
SSEG
START:
MOVAX,DSEG
MOVDS,AX
MOVDX,0
MOVCX,COUNT
LEABX,DAT
AGAIN:
MOVAL,[BX]
CMPAL,0
JGEPLUS
INCDL;统计负数个数
JMPXEXT
PLUS:
INCDH
NEXT:
INCBX
LOOPAGAIN
MOVA,DH
MOVB,DL
CSEGENDS
ENDSTART
习题
1.分析半导体随机存储器和只读存储器的特点和分类。
静态存储器和动态存储器的最大区别是什么?
它们各有什么优缺点?
3.存储器的寻址范围是怎样确定的?
举例说明它的确定方法。
5用下列芯片构成存储系统,各需要多少个RAM芯片?
需要多少位地址作为片外地址译码?
设系统为20位地址线,采用全译码方式。
(1512×4位RAM构成16KB的存储系统;
(答:
64片,11根,芯片上有9根地址线,片外有11根,全部参加译码
(21024×1位RAM构成128KB的存储系统;
(答:
128*8片,10根
(32K×4位RAM构成64KB的存储系统;
(答:
64片,9根
(464K×1位RAM构成256KB的存储系统;
7.有一个6264SRAM芯片的译码电路,如下图所示,请计算该芯片的地址范围及存储容量。
习题7图
8088系统
BUS
答:
容量为8KB
本题图中A14和A17没有使用,为部分地址译码法,共有4组重叠地址;
假设A14=0和A17=0,地址范围为DA000H~DB000H
9.使用4K×8位的EPROM2732和2K×8位的静态RAM6116以及LS138译码器,构成一个8KB.的ROM、地址范围为:
FE000H~FFFFFH;4KB的RAM存储器系统,地址范围为:
00000H~0FFFH。
系统CPU8088工作于最小模式。
画出系统连接图。
提示:
本题中两个存储空间相差较远,使用两个138译码器分别完成译码EPROM2732两片
第1片,地址空间从FE000H~FEFFFH
第2片,地址空间从FF000H~FFFFFH
RAM61162片
第1片,地址空间从00000H~007FFH
第2片,地址空间从00800H~00FFFH
10.试为某8位微机系统设计一个具有16KBROM和40KBRAM的存储器。
(1选用EPROM芯片2764组成只读存储器(ROM,从0000H地址开始;
(2选用SRAM芯片6264组成随机存取存储器(RAM,从4000H地址开始;
(3分析出每个存储芯片的地址范围。
答:
提示题目中给出的8位CPU其地址总线总计为16条
EPROM芯片2764共两片;
第1片,地址空间从0000H~1FFFH
第2片,地址空间从2000H~3FFFH
SRAM芯片6264共5片;
第1片,地址空间从4000H~5FFFH
第2片,地址空间从6000H~7FFFH
第3片,地址空间从8000H~9FFFH
第4片,地址空间从A000H~BFFFH第5片,地址空间从C000H~DFFFH
第5章习题
5.3计算机与外设之间的数据传送控制方式有哪些?
它们各有什么特点?
5.5CPU与外设采用查询方式传送数据的过程是怎样的?
现有一输入设备,其数据端口的地址为FFE0H,并于端口FFE2H提供状态,当其D0位为1时表明输入数据备好。
请编写采用查询方式进行数据传送的程序段,要求从该设备读取100个字节并输入到从2000H:
2000H开始的内存中。
DSEGSEGMENT
ORG2000H
DATADB100DUP(?
DSEGENDS
CSEGSEGMENT
ASSUMECS:
CSEG,DS:
DSEG,SS:
SSEG
START:
MOVAX,2000H
MOVAX,2000H
MOVDS,AX
MOVBX,2000H
MOVCX,100;
NEXT:
MOVDX,FFE2H
INAL,DX
ANDAL,01H
JZNEXT
MOVDX,FFE0H
INAL,DX
MOV[BX],AL;
INCBX
DECCX;
JNZNEXT
HLT
CSEGENDS
ENDSTART
第6章习题
6.1.什么是中断?
计算机采用中断有什么好处?
简述中断的响应和处理过程。
6.6.简述中断向量、中断向量表、中断类型码之间的关系。
在基于8086/8088的微机系统中,中断类型码和中断向量之间有什么关系?
若某中断类型码是12H,则其中断向量存于何处?
若软中断指令INT30H,其中的中断类型号为多少,该中断的服务程序的入口地址在内存单元什么位置?
答;中断类型码是12H,12H*4=48H
则其中断向量存于内存0000:
0048H开始的4个单元中
若软中断指令INT30H,其中的中断类型号为30H,30H*4=C0H该中断的服务程序的入口地址在内存单元0000:
00C0H开始的4个单元中
6.7简述8259A的内部结构和主要功能。
8259A的中断屏蔽寄存器IMR与8086中断允许标志IF有什么区别?
答:
8259A的中断屏蔽寄存器IMR,是对8259的中断请求IR输入端进行屏蔽控制,8086中断允许标志IF是对CPU的中断请求输入端INTR允许或不允许进行控制。
第7章习题
7.28253有几个独立的计数器?
各有几种工作方式?
各种工作方式的名称是什么?
7.8设8