微机原理第二版+田辉+课后答案1.docx
《微机原理第二版+田辉+课后答案1.docx》由会员分享,可在线阅读,更多相关《微机原理第二版+田辉+课后答案1.docx(64页珍藏版)》请在冰豆网上搜索。
微机原理第二版+田辉+课后答案1
微机原理第二版+田辉+课后答案
(1)
课后答案网,用心为你服务!
大学答案---中学答案---考研答案---考试答案
最全最多的课后习题参考答案,尽在课后答案网()!
Khdaw团队一直秉承用心为大家服务的宗旨,以关注学生的学习生活为出发点,
旨在为广大学生朋友的自主学习提供一个分享和交流的平台。
爱校园()课后答案网()淘答案()
第1章微型计算机系统概述
习
题
1-1.微型计算机包括哪几个主要组成部分,各部分的基本功能是什么?
答:
微型计算机由CPU、存储器、输入/输出接口及系统总线组成。
CPU是微型计算机的核心部件,一般具有下列功能:
进行算术和逻辑运算。
暂存少量
数据。
对指令译码并执行指令所规定的操作。
与存储器和外设进行数据交换的能力。
提供整
个系统所需要的定时和控制信号。
响应其他部件发出的中断请求;总线是计算机系统各功能
模块间传递信息的公共通道,一般由总线控制器、总线发送器、总线接收器以及一组导线组
成;存储器是用来存储数据、程序的部件;I/O接口是微型计算机的重要组成部件,在CPU
和外设之间起适配作用。
1-2.CPU执行指令的工作过程。
答:
取指令、执行指令。
指令执行的基本过程:
(1)开始执行程序时,程序计数器中保存第一条指令的地址,指明当前将要执行的指令
存放在存储器的哪个单元。
(2)控制器:
将程序计数器中的地址送至地址寄存器MAR,并发出读命令。
存储器根
据此地址取出一条指令,经过数据总线进入指令寄存器IR。
(3)指令译码器译码,控制逻辑阵列发操作命令,执行指令操作码规定的操作。
(4)修改程序计数器的内容。
1-3.果微处理器的地址总线为20位,它的最大寻址空间为多少?
20
1-4.处理器、微型计算机和微型计算机系统之间有什么关系?
答:
微处理器是微型计算机的核心部件。
微处理器配上存储器、输入/输出接口及相应的外
设构成完整的微型计算机。
以微型计算机为主体,配上系统软件和外部设备以后,就构成了
完整的微型计算机系统。
1-5.下面十进制数分别转换为二进制、八进制和十六进制数:
128,65535,1024
答:
128,二进制:
10000000B,八进制:
200O,十六进制:
80H
65535,二进制:
,八进制:
177777O,十六进制:
FFFFH
1024,二进制:
,八进制:
2000O,十六进制:
400H
1-6.下面二进制数分别转换为十进制及十六进制数:
,1111101.11B
答:
答:
2=1048576=1MB
,十进制:
125.75,十六进制:
1-7.(5487)10=(
)BCD=
1-8.设字长为8位,请写出下列数的原码、反码、补码和移码:
15,-20,-27/32
答:
[+15]原=00001111,[+15]反=00001111,[+15]补=00001111,[+15]移=10001111
[-20]原=10010100,[-20]反=11101011,[-20]补=11101100,[-20]移=01101100
[-27/32]原,[-27/32]反,[-27/32]补,
[-27/32]移
第2章微型计算机系统的微处理器
习题
2-1.086/8088CPU的功能结构由哪两部分组成?
它们的主要功能是什么?
答:
8086/8088CPU的功能结构由以下两部分组成:
总线接口单元BIU(BusInterfaceUnit),
执行部件EU(ExecutionUnit)。
总线接口单元BIU的主要功能是:
负责与存储器、I/O端口进行数据传送。
具体讲:
取
指令:
总线接口部件从内存中取出指令后送到指令队列。
预取指令。
配合EU执行指令,存
取操作数和运算结果。
执行部件EU主要功能是:
负责指令执行。
2-2.086CPU指令部件(队列)的作用是什么?
地址加法器的作用是什么?
答:
8086/8088的指令队列分别为6/4个字节,存储预取的指令。
地址加法器用来产生20位物理地址。
8086/8088可用20位地址寻址1M字节的内存空间,
而CPU内部的寄存器都是16位,因此需要由一个附加的机构来计算出20位的物理地址,这
个机构就是20位的地址加法器。
2-3.据8086CPU的结构,简述程序的执行过程。
答:
设程序的指令代码已存放在存贮器中。
为执行程序,CPU按照时钟节拍,产生一系列控
制信号,有规则地重复进行以下过程。
(1)BIU从存贮器中取出一条指令存入指令队列。
(2)EU从指令队列取指令并执行指令。
BIU利用总线空闲时间,从内存取第二条指令
或取第三条指令存入指令队列。
(3)EU执行下一条指令。
如果前面一条指令有写存贮器的要求,则通知BIU把前条指
令结果写到存贮器中,然后再取指令存入指令队列。
(4)如指令执行要求读取操作数,由BIU完成。
(5)EU执行再下一条指令,返回
(1)处继续执行上述操作过程。
所以,程序的执行过
程就是CPU取指令、分析指令、执行指令,再取指令这样一个循环重复过程。
在指令执行过程中,利用EU分析指令操作码和执行指令时不占用总线操作时间的特
点,BIU自动地通过总线读取存贮器中的指令码存入BIU指令队列,从而使BIU与EU并
行工作,提高CPU执行指令的速度。
2-4.什么是总线周期?
8086/8088的基本总线周期由几个时钟周期组成?
若CPU的主
时钟频率为10MHz,则一个时钟周期为多少?
一个基本总线周期为多少?
答:
总线周期:
BIU通过系统总线对存储器或I/O端口进行一次读/写操作的过程称为一个
总线周期。
8086/8088CPU的一个基本总线周期由4个时钟周期(T1~T4)组成,也称4个T状态。
-7
若CPU的主时钟频率为10MHz,则一个时钟周期为10s,一个基本总线周期为4×
2-12.8086最小工作模式和最大工作模式的主要差别是(D).
A.地址总线的位数不同
C.数据总线位数不同
端口数不同
D.单处理器与多处理器的不同
2-13.PC机中地址总线的作用是(C)。
A.用于选择存储器单元
B.用于选择进行信息传输的设备
C.用于给存储器单元和I/O设备接口电路的选择地址
D.以上都不正确
2-14.设当前SS=C000H,SP=2000H,AX=2355H,BX=2122H,CX=8788H,则
当前栈顶的物理地址是多少?
若连续执行PUSHAX,PUSHBX,POPCX3条指令后,堆
栈内容发生什么变化?
AX、BX、CX中的内容是什么?
2-15.8086/8088的控制标志位有(C)个。
2-16.编程人员不能直接读写的寄存器是(C)。
2-17.设(AH)=03H,(AL)=82H,试指出将AL和AH中的内容相加和相减后,标
志位CF、AF、OF、SF、IF和PF的状态。
答:
(AH)=00000011H
+(AL)=10000010H
10000101
CF=0、AF=0、OF=0、SF=1、IF不确定和PF=0
(AH)=00000011H
_(AL)=10000010H
10000001
CF=1、AF=0、OF=0、SF=1、IF不确定和PF=1
2-18.8086CPU中的标志寄存器FR中有哪些状态标志和控制标志?
这些标志位各有什
么含义?
见教材。
2-19.BHE信号的作用是什么?
简述8086系统中,访问存储器在读写一个字和字节的
过程中,BHE和A0的状态。
答:
高8位数据总线允许/状态复用信号。
总线周期的T1状态,8086在BHE/S7输出低电平,
表示高8位数据总线AD15~AD8上的数据有效。
8086系统中,BHE和AD0结合起来,指出当前传送的数据在总线上将以何种格式出现。
(见教材表2-4-1)
8088系统中,由于数据总线只有8位,不存在高8位与低8位的问题。
所以,该引脚
(第34号)被定义为双功能引脚。
在最大模式时,该引脚恒为高电平;在最小模式中,则
定义为SS0。
2-20.8086向偶地址存储单元0送一个字节数据时,须执行一个总线周期,在第一个T
状态中,ALE为
1
A0为
0
WR为1
。
2-21.8086系统中,为什么要对存储器进行分段管理?
其分段管理是如何实现的?
答:
8086/8088地址总线是20位的,CPU中的寄存器是16位的,20位地址无法用16位寄
存器表示,所以必须分段。
通常有代码段、数据段、堆栈段、辅助段。
段内地址16位,每个段的大小最大可达64KB;
实际使用时可以根据需要来确定段大小。
2-22.已知某存储单元的段地址为4500H,偏移地址为4500H,该单元的物理地址是多
少?
答:
49500H
2-23.某指令对应当前段寄存器CS=FFFFH,指令指针寄存器IP=FF00H,此时,该指令
的物理地址为多少?
指向这一物理地址的CS值和IP值是唯一的吗?
试举例说明
答:
该指令的物理地址为:
CS+IP
FFFF0H+FF00H=10FEF0H
这一物理地址的CS值和IP值是唯一的吗:
不唯一
2-24.因为8086CPU的字数据既可以存放在内存的偶地址单元,也可以安排在奇地址单
元,所以其堆栈指针SP(A)。
A.最好是指向偶地址单元
B.可以指向任何地址单元
C.只能指向偶地址单元
D.只能指向奇地址单元
第3章8086/8088的指令系统
习题
3-1.试举例说明8086/8088微处理器的各种寻址方式。
(略)
3-2.假定DS=1000H,SS=9000H,SI=100H,BX=20H,BP=300H,请指出下列指令的
源操作数是什么寻址方式?
若源操作数位于存储器中,其物理地址是多少?
(1)MOVCX,[1000H]
(3)MOVAX,[BX]
(5)MOVAL,[BP+5]
(2)MOVAX,100H
(4)MOVBL,CL
(6)MOVAL,[BP+SI+2]
答:
(1)中源操作数为直接寻址,其物理地址=DS*16+1000H=11000H;
(2)中源操作数为立即寻址;
(3)中源操作数为寄存器间接寻址,其物理地址=DS*16+(BX)=10020H;
(4)中源操作数为寄存器寻址;
(5)中源操作数为变址寻址,其物理地址=SS*16+(BP)+5=90305H;
(6)中源操作数为基址加变址寻址,物理地址=SS*16+(BP)+(SI)+2=90402H。
3-3.在8088/8086微机的内存物理地址34780H处,存放有字节数据58H,已知
DS=3000H,试写指令序列将该字节数据送入AL寄存器。
要求分别采用三种不同的寻址方
式。
答:
(1)直接寻址:
MOVAL,[4780H]
(2)寄存器间接寻址:
MOVBX,4780H
MOVAL,[BX]
(3)变址寻址:
MOVSI,4782H
MOVAL,[SI-2]
3-4.判断下述8086/8088指令的写法是否正确:
(1)MOV[AX],BH
(3)MOV[SP],AX
(5)OUT10H,CL
(7)PUSHAL
(9)MOVES:
[SI],DI
答:
(1)MOV[AX],BH
(2)MOV[BP],AX
(3)MOV[SP],AX
(X)
(√)
(X)
(2)MOV[BP],AX
(4)MOV[DI],[SI]
(6)INCWORDPTR[SI]
(8)CMP36H,AL
(10)MOVBYTEPTR[BX],800
(4)MOV[DI],[SI]
(5)OUT10H,CL
(X)
(X)
(6)INCWORDPTR[SI](√)
(7)PUSHAL
(8)CMP36H,AL
(9)MOVES:
[SI],DI
(X)
(X)
(√)
(10)MOVBYTEPTR[BX],800(X)
3-5.设有关寄存器及存储单元的内容如下:
DS=2000H,BX=0100H,AX=1200H,SI=0002H,[20102H]=33H,[20103]=44H,
[21200]=9BH,[21201H]=99H,[21202H]=0AAH,[21203H]=88H。
问:
下列各条指令单独执行后相关寄存器或存储单元的内容为多少?
(1)MOV
(3)MOV
(5)MOV
AX,1800H
BX,[1200H]
[BX+SI],AL
(2)MOV
(4)MOV
(6)MOV
AX,BX
DX,[BX+1100H]
AX,[BX+SI+1100H]
答:
(1)
(2)
(3)
(4)
(5)
(6)
AX=1800H
AX=BX=0100H
BX=999BH
DX=999BH
[20102H]=AL=00H
AX=88AAH
3-6.已知SS=0FF00H,SP=0000H,试编写程序片段将两个16位数1122H和3344H先
后压入堆栈,并画出堆栈区和SP内容变化的过程示意图(标出存储单元的地址)。
答:
MOVAX,1122H
PUSHAX
0FF00:
0FFFEH
0FF00:
0FFFFH
22H
11H
SP
MOVAX,3344H
PUSHAX
0FF00:
0FFFCH
0FF00:
0FFFDH
0FF00:
0FFFEH
0FF00:
0FFFFH
44H
33H
22H
11H
SP
3-7.设在数据段偏移地址为2000H单元开始的地方连续存放了0~15的平方值。
试写
出包含有XLAT指令的指令序列,用来查找0~15范围内的某个数N的平方值(设N的值存
放在CL寄存器中)。
答:
MOVBX,2000H
MOVAL,CL
XLAT
3-8.试用简单的几条指令完成对AL寄存器中的无符号数乘以12的操作。
要求只能用
移位、加法及MOV指令。
答:
MOVAH,0
MOVCL,2
SHLAX,CL
MOVBX,AX
SHLAX,1
ADDAX,BX
;AL左移两位,相当于乘4
;保存
;AL再左移一位,相当于原数乘8
;相当于原数乘12
3-9.已知程序段如下:
MOVAX,1234H
MOVCL,4
ROLAX,CL
DECAX
MOVCX,4
MULCX
问:
执行完每条指令后,AX=?
CF=?
SF=?
ZF=?
(设在执行第一条指令前CF=SF=ZF=0)。
答:
AX=8D00H
CF=0,SF及ZF不确定。
3-10.执行如下三条指令后:
MOVAH,0
MOVAL,7
ADDAL,5
问:
(1)若再执行一条非组合BCD码加法调整指令AAA后,AX的内容为多少?
(2)若
题中的三条指令后紧跟的是一条组合BCD码加法调整指令DAA,则执行完DAA后AX的
内容为多少?
答:
(1)AX=0102H
(2)AX=0012H
3-11.已知AX=14C6H,BX=80DCH,问执行下列程序段后,程序转向何处?
ADDAX,BX
JNCL2
SUBAX,BX
JNCL3
JMPL4
若初始AX=B568H,BX=54B7H,情况又如何?
答:
程序转向地址标号L2处。
若初始AX=B568H,BX=54B7H,程序转向地址标号L4处。
3-12.如下程序完成什么功能?
MOVAX,5000H
MOVDS,AX
MOVCX,100
MOVAX,0
MOVSI,AX
START:
ADDAX,[SI+1000H]
ADDSI,2
LOOPSTART
MOV[200H],AX
答:
程序完成内存5000H:
1000H开始的连续100个字数据的求和,并将和数存于
5000H:
200H处。
3-13、试写一程序片段,将当前数据段偏移地址为2000H开始的100个字节单元内容
与偏移地址为3000H开始的100个字节单元内容相交换,即:
偏移地址2000H对应单元内
容与偏移地址3000H对应单元内容交换,偏移地址2001H对应单元内容与偏移地址3001H
对应单元内容交换,依此类推。
答:
MOVSI,2000H
MOVDI,3000H
MOVCX,100
REPT0:
MOVAL,[SI]
MOVBL,[DI]
MOV[DI],AL
MOV[SI],BL
INCSI
INCDI
LOOPREPT0
3-14.在数据段中偏移地址分别为1000H及2000H开始的存储区内有两个10字节的字
符串,试编写一段程序来比较这两个字符串。
如果这两个字符串不同,则程序转至
8000H:
1000H处,否则顺序执行。
答:
MOVSI,1000H
MOVDI,2000H
MOVCX,10
CLD
;装入源串偏移地址
;装入目的串偏移地址
;装入字符串长度
;方向标志复位
REPECMPSB
JCXZCONTI
JMP8000H:
1000H
CONTI:
NOP
3-15.利用串操作指令将数据段中偏移地址1000H开始处的100个字节移动到数据段
偏移地址为1050H开始的地方。
答:
MOVCX,100
MOVSI,1000H+99
MOVDI,1050H+99
STD
REPMOVSB
;地址减量方式传送
;数据块传送(串操作)
第4章汇编语言程序设计
习题
4-1.如下定义:
VAR1DB4
VAR2DB10
CNST1EQU12
试指出下列指令的错误原因:
(1)MOVCNST1,CX
(3)CMPVAR1,VAR2
(2)MOVVAR1,AX
(4)CNST1EQU24
答:
(1)目的操作数不能是立即数;
(2)VAR1单元定义为字节类型,而AX为字;
(3)8086/8088中两个内存单元不能直接比较;
(4)同一符号名不允许用EQU重复定义。
4-2.某人定义了如下数据段:
DATASEGMENTAT1000H
ORG100H
VAL1DB11H
VAL2DW22H,33H
VAL3DB5DUP(44H)
DATAENDS
试指明该数据段中偏移地址从100H到109H的各存贮单元的内容。
答:
100H:
11H
101H:
22H
102H:
00H
103H:
33H
104H:
00H
105H:
44H
106H:
44H
107H:
44H
108H:
44H
109H:
44H
4-3.对于下面的数据定义,写出各条指令执行后的结果:
DATASEGMENT
ORG0100H
AAAADW0A244H
BBBBDB33H,66H,92H,29H
CCCCEQUWORDPTRBBBB
DDDDDB‘ABCD’
EEEEEQU$-DDDD
DATAENDS
答:
(1)MOVAX,AAAA
(2)MOVBX,CCCC
(3)MOVDX,OFFSETDDDD
(4)MOVCL,EEEE
AL=(
BH=(
DL=(
CL=(
)
)
)
)
(1)MOVAX,AAAAAL=(44H
(2)MOVBX,CCCCBH=(66H
(3)MOVDX,OFFSETDDDDDL=(06H)
)
)
(4)MOVCL,EEEECL=(
04H
)
4-4.试编程序将内存从50000H到5FFFFH的每个单元均写入数55H,并再逐个单元读
出比较,看写入的与读出的是否一致。
若全对,则将AL置0;只要有错,则将AL置0FFH。
答:
START:
LOOP1:
MOVAX,5000H
MOVDS,AX
MOVSI,0
MOVCX,0FFFFH
MOVBYTEPTR[SI],55H
MOVAL,[SI]
CMPAL,55H
JNZLOOPERR
LOOP2:
INCSI
LOOPLOOP1
MOVBYTEPTR[SI],55H;最后一个单元
MOVAL,[SI]
CMPAL,55H
JNZLOOPERR
MOVAL,0
;全对
JMPLOOPOUT
LOOPERR:
MOVAL,0FFH
LOOPOUT:
NOP
4-5.编写一个子程序,对AL中的ASCII字符添加偶校验位(bit7),即:
使AL中的
“1”的个数为偶数。
答:
ADDPARITYPROCNEAR
ANDAL,7FH
JPADDEXIT
ORAL,80H
ADDEXIT:
RET
ADDPARITYENDP
4-6.利用上题的子程序,编程对内存物理地址10000H开始的1024个单元的ASCII字
符加上偶校验位。
答:
START:
MOVAX,1000H
MOVDS,AX
MOVSI,0
MOVCX,1024
LOOP1:
MOVAL,[SI]
CALLADDPARITY
MOV[SI],AL
INCSI
LOOPLOOP1
4-7、试写一子程序,完成对一个8位无符号数乘6的操作。
要求:
(1)只能用传送、加
法及移位指令;
(2)入口参数(即8位无符号数)放于AL中,出口参数(即乘6后的结果)
放于AX。
答:
MULTI6PROCNEAR
PUSHBX
MOVAH,0
SHLAX,1
MOVBX,AX
SHLAX,1
ADDAX,BX
;乘2
;乘4
;乘6
POPBX
RET
MULTI6ENDP
4-8.给定如下程序片段:
START:
MOVAX,1000H,
OVSS,AX
OVSP,000FH
OVAX,1000H
USHAX
OVBX,5439