微机原理与接口技术李珍香版课后习题110章参考答案.docx
《微机原理与接口技术李珍香版课后习题110章参考答案.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术李珍香版课后习题110章参考答案.docx(48页珍藏版)》请在冰豆网上搜索。
微机原理与接口技术李珍香版课后习题110章参考答案
习题一
1.1微型计算机系统主要由哪些部分组成?
参考答案:
微型计算机系统由硬件和软件两大部分组成。
1.2微型计算机中的CPU由哪些部件组成?
各部件的功能是什么?
参考答案:
微型计算机中的CPU由运算器、控制器、寄存器组等部件组成。
其中运算器也称算术逻辑单元(ALU),主要用来完成对数据的运算(包括算术运算和逻辑运算);控制器是控制部件,它能自动、逐条地从内存储器中取指令,将指令翻译成控制信号,并按时间顺序和节拍发往其它部件,指挥各部件有条不紊地协同工作。
微机的数据输入/输出、打印、运算处理等一切操作都必须在控制器的控制下才能进行。
寄存器组是微处理器内部的一组暂时存储单元,主要起到数据准备、调度和缓冲的作用,寄存器的访问速度要比存储器快得多。
1.3微型计算机硬件结构由哪些部分组成?
各部分的主要功能是什么?
参考答案:
微型计算机的硬件结构主要由微处理器、内存储器、输入/输出接口电路、输入/输出设备及系统总线组成。
其中微处理器是微型计算机的核心部件,其主要功能是负责统一协调、管理和控制系统中的各个部件有机地工作;内存储器的主要功能是用来存储微机工作过程中需要操作的数据、程序,运算的中间结果和最后结果,具有存数和取数的功能;输入/输出(I/O)接口电路的功能是完成主机与外部设备之间的信息交换;I/O设备是用户与微机进行通信联系的主要装置,其中输入设备是把程序、数据、命令转换成微机所能识别接收的信息,然后输入给微机;输出设备是把CPU计算和处理的结果转换成人们易于理解和阅读的形式,然后输出到外部。
微机的系统总线实现将CPU、存储器和外部设备进行连接,共有数据总线、地址总线和控制总线三种,其中数据总线主要用来实现在CPU与内存储器或I/O接口之间传送数据;地址总线是由CPU输出用来指定其要访问的存储单元或输入/输出接口的地址的;控制总线;控制总线用于传送控制信号、时序信号和状态信息,实现CPU的工作与外部电路的工作同步。
1.4微型计算机的主要性能指标有哪些?
参考答案:
微型计算机的主要性能指标有字长、存储容量、运算速度、存取时间和存取周期、可靠性和可维护性、性能价格比等。
1.5解释微处理器、微型计算机、微型计算机系统的含义,并说明它们之间的关系。
参考答案:
微处理器是微型计算机的核心部件,由运算器、控制器、寄存器组等部件组成;微型计算机是由微处理器、内存储器、接口等组成;微型计算机系统是以微型计算机为中心构成的一个比较大的应用系统。
微型计算机系统包含有微型计算机,而微型计算机又包含有微处理器。
1.6将下列十进制数分别转换为二进制数和十六进制数。
128 625 67.5 24.25
参考答案:
128=10000000B=80H625=1001110001B=271H
67.5=1000011.1=43.8H24.25=11000.01B=18.4H
1.7将下列二进制数分别转换成十进制数和十六进制数。
10110.00111000.0101 1100010 101110
参考答案:
10110.001B=22.125=16.2H11000.0101B=24.3125=18.5H
1100010B=98=62H101110B=46=2EH
1.8写出下列十进制数的原码、补码(采用8位二进制数表示)。
87 34 48 -100
参考答案:
(87)原码=01010111B(87)补码=01010111B
(34)原码=00100010B(34)补码=00100010B
(48)原码=00110000B(48)补码=00110000B
(-100)原码=11100100B(-100)补码=10011100B
1.9写出下列十进制数的压缩BCD码表示形式。
456789123
参考答案:
456=010001010110BCD789=011110001001BCD123=000100100011BCD
1.10按照字符所对应的ASCII码表示,写出下列字符或符号所对应的ASCII码值。
‘A’ ‘b’ ‘1’ CR ‘$’
参考答案:
字符‘A’的ASCII码值是41H字符‘b’的ASCII码值是62H
字符‘1’的ASCII码值是31H字符CR的ASCII码值是0DH
字符‘$’的ASCII码值是24H
习题二
2.18086CPU共有哪些16位寄存器?
其中哪些16位寄存器可分为二个8位寄存器来使用?
参考答案:
8086CPU共有AX、BX、CX、DX、SI、DI、SP、BP、IP、FLAGS、CS、DS、ES、SS共14个16位的寄存器。
其中AX、BX、CX、DX可分为二个8位寄存器来使用
2.2简述8086CPU各通用寄存器的主要功能?
参考答案:
8086CPU包含AX、BX、CX、DX、SI、DI、SP、BP共8个通用寄存器。
其中AX主要用在字的乘、除法,输入/输出指令中;BX主要在寄存器间接寻址和XLAT指令中作基址寄存器使用;CX主要在串操作指令和LOOP指令中作计数器使用;DX主要在字的乘除法指令和输入/输出指令中使用;SI主要在字符串操作指令中作源变址寄存器使用;DI主要在字符串操作指令中作目的变址寄存器使用;SP主要在堆栈操作中作堆栈指针使用;BP主要在寄存器间接寻址中作基址指针使用。
2.38086CPU的标志寄存器有几个状态标志位?
几个控制标志位?
它们各自的含义和作用是什么?
在Debug环境下,对应的用什么符号来表示之?
参考答案:
8086CPU的标志寄存器有6个状态标志位,有3个控制标志位。
其中CF进位标志位主要用来反映运算结果是否产生进位或借位,如果运算结果的最高位向前产生了一个进位(加法)或借位(减法),则其值为1,否则其值为0;PF奇偶标志位用于反映运算结果中低8位含有“1”的个数的奇偶性,如果“1”的个数为偶数,则PF的值为1,否则为0;AF辅助进位标志位表示加法或减法运算结果中D3位向D4位产生进位或借位的情况,有进位(借位)时AF=1;无进位(借位)时AF=0;ZF零标志位用来反映运算结果是否为0,如果运算结果为0,则其值为1,否则其值为0;SF用来反映运算结果的符号位,当运算结果为负数时,SF的值为1,否则其值为0;OF溢出标志位用于反映带符号数运算所得结果是否溢出,如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0。
IF中断允许标志位用来决定CPU是否响应CPU外部的可屏蔽中断发出的中断请求,当IF=1时,CPU响应;当IF=0时,CPU不响应。
DF方向标志位用来控制串操作指令中地址指针的变化方向。
在串操作指令中,当DF=0时,地址指针为自动增量,即由低地址向高地址变化;当DF=1时,地址指针自动减量,即由高地址向低地址变化。
TF追踪标志位被置为1时,CPU进入单步执行方式,即每执行一条指令,产生一个单步中断请求。
在Debug环境下,对应的表示符号如下表
标志位
OF
DF
IF
SF
ZF
AF
PF
CF
状 态
1/0
1/0
1/0
1/0
1/0
1/0
1/0
1/0
显 示
OV/NV
DN/UP
EI/DI
NG/PL
ZR/NZ
AC/NA
PE/PO
CY/NC
2.4默认情况下,哪些寄存器可用于读取堆栈段的数据?
参考答案:
SP和BP
2.5有效地址就是偏移地址的说法正确吗?
参考答案:
正确
2.6假设用以下寄存器组合来访问存储单元,试求出它们所访问单元的物理地址。
(1)DS=1000H和DI=F000H
(2)SS=C300H和BP=3200H(3)DS=A000H和BX=1000H
参考答案:
(1)物理地址=1000H*16+F000H=1F000H
(2)物理地址=C300H*16+3200H=C6200H
(3)物理地址=A000H*16+1000H=A1000H
2.78086微机最大可编址的存储空间是多少?
它是由什么决定的?
参考答案:
8086微机最大可编址的存储空间是1MB,由CPU的地址线条数决定。
2.8给出下列8位数据在执行加法运算后,CF、OF、SF、ZF的值。
(1)EFH+2
(2)80H+80H(3)F9H+63H
参考答案:
(1)EFH+2=F1HCF=0OF=0SF=1ZF=0
(2)80H+80H=00HCF=1OF=1SF=0ZF=1
(3)F9H+63H=5CHCF=1OF=0SF=0ZF=0
2.9给出2.8中的每小题在执行减法运算后,CF、OF、SF、ZF的值。
参考答案:
(1)EFH-2=EDHCF=0OF=0SF=1ZF=0
(2)80H-80H=00HCF=0OF=0SF=0ZF=1
(3)F9H-63H=96HCF=0OF=0SF=1ZF=0
2.10简要说明8086CPU的内部结构及各部分的作用。
参考答案:
8086CPU的内部结构分为两大部分,分别为总线接口部件BIU和执行部件EU。
BIU负责取指令;EU负责指令的执行。
2.11解释说明逻辑地址、偏移地址、有效地址和物理地址的含义。
参考答案:
逻辑地址:
是用户程序设计时所采用的地址,其表示形式为“段地址:
偏移地址”。
偏移地址:
是指某存储单元距离本段段地址的偏移量(距离),偏移地址值最大不超过FFFFH。
有效地址即为偏移地址。
物理地址:
对于CPU的20条地址线所形成的1MB个存储单元(从小到大范围为00000H~FFFFFH)就是存储单元的物理地址,每一个存储单元都有惟一的一个物理地址。
2.128086CPU的最大工作模式和最小工作模式的主要区别是什么?
如何进行控制?
参考答案:
主要区别反映在提供微处理器的数量及总线控制信号的产生。
由引脚MN/MX来控制。
2.13试解释时钟周期、总线周期和指令周期的概念。
并结合指令“ADD[2000H],BX”,说明执行该指令需要几个总线周期?
属于什么样的总线周期?
参考答案:
时钟周期为一个时钟脉冲的时间长度,是CPU的基本时间计量单位。
总线周期:
是CPU通过总线对存储器或I/O接口进行一次访问所需要的时间,一个基本的总线周期由4个T状态构成,分别称为T1、T2、T3和T4。
指令周期:
CPU执行一条指令所需要的时间,不同指令的指令周期是不等长的。
指令“ADD[2000H],BX”共需要3个总线周期,分别为:
存储器读、存储器读和存储器写。
2.14简述Pentium微处理器的内部组成结构和主要部件的功能,Pentium微处理器的主要特点有哪些?
参考答案:
略
2.15简要分析80486微处理器的不同工作模式的特点。
参考答案:
略
2.16简述你对双核、多核及磁微处理器的认识。
参考答案:
略
2.178086CPU按每个逻辑段最大为64KB划分,最多可分为多少个?
最少可分为多少个?
各段之间的关系如何?
每个段寄存器的作用是什么?
参考答案:
8086CPU按每个逻辑段最大为64KB划分,最多可划分成64K个逻辑段?
最少可划分成16个逻辑段。
习题三
1.设BX=0123H,DI=1000H,DS=3200H,试指出下列各条指令中源操作数的寻址方式,对于是存储器操作数的,还需写出其操作数的有效地址和物理地址。
(1)MOVAX,[2A38H]
(2)MOVAX,[BX]
(3)MOVAX,[BX+38H]
(4)MOVAX,[BX+DI]
(5)MOVAX,[BX+DI+38H]
(6)MOVAX,2A38H
(7)MOVAX,BX
参考答案:
(1)直接寻址有效地址=2A38H,物理地址=32000H+2A38H=34A38H
(2)寄存器间接寻址有效地址=0123H,物理地址=32000H+0123H=32123H
(3)寄存器相对寻址有效地址=0123H+38H=015BH,物理地址=32000H+015B=3215BH
(4)基址变址寻址有效地址=0123H+1000H=1123H,物理地址=32000H+1123H=33123H
(5)相对基址变址寻址有效地址=0123H+1000H+38H=115BH,物理地址=32000H+115BH=3315BH
(6)立即寻址
(7)寄存器寻址
2.设AX=96BCH,BX=AC4DH,CF=0。
求分别执行指令ADDAX,BX和SUBAX,BX后,AX与BX的值各为多少?
并指出标志位SF、ZF、OF、CF、PF、AF的状态。
参考答案:
执行ADDAX,BX后,AX=4309H,BX=AC4DH,SF=0ZF=0OF=1CF=1PF=1AF=1
执行SUBAX,BX后,AX=EA6FH,BX=AC4DH,SF=1ZF=0OF=0CF=1PF=1AF=1
3.试比较CMP指令与SUB指令的异同。
参考答案:
CMP指令与SUB指令的不同点有两点:
4.采用三种不同的方法实现AX与DX的内容交换。
参考答案:
第一种:
XCHGAX,DX
第二种:
PUSHAX
PUSHDX
POPAX
POPDX
第三种:
MOVBX,AX
MOVAX,DX
MOVDX,BX
5.编写程序段实现:
当DL中存放的数据是奇数时使AL=0,否则使AL=-1。
参考答案:
TESTDL,01H
JNZNEXT
MOVAL,0
NEXT:
MOVAL,-1
6.用尽可能少的指令实现使DL中的高4位内容与低4位内容互换。
参考答案:
MOVCL,4
ROLDL,CL;RORDL,CL
7.编写程序段,判断AL中的带符号数是不是负数。
若是负数,则将-1送给AH;否则,将0送给AH。
参考答案:
SUBAL,0
JSFS
MOVAH,0
FS:
MOVAH,-1
8.假设DX=87B5H,CL=4,CF=0,确定下列各条指令单独执行后DX中的值。
(1)SHLDL,1
(2)SHRDX,CL
(3)SARDX,CL
(4)ROLDX,CL
(5)RORDX,CL
(6)RCLDX,CL
(7)RCRDX,1
参考答案:
(1)DX=876AH
(2)DX=087BH
(3)DX=F87BH
(4)DX=7B58H
(5)DX=587BH
(6)DX=7B54H
(7)DX=43DAH
9.按下列要求编写指令序列。
(1)将AX中的低4位置1,高4位取反,其它位清0。
(2)检查DX中的第1、6、11位是否同时为1。
(3)清除AH中最低3位而不改变其它位,将结果存入BH中。
参考答案:
(1)XORAX,F000H
ANDAX,F00FH
ORAX,000FH
(2)MOVAX,DX
ANDDX,0842H
XORDX,0842H
JZZERO
┆
ZERO:
…DX中的第1、6、11位同时为1的情况
┆
10.分析下面的程序段完成什么功能?
(提示:
请将DX与AX中的内容作为一个整体来考虑)
MOVCL,04
SHLDX,CL
MOVBL,AH
SHLAX,CL
SHRBL,CL
ORDL,BL
参考答案:
实现将DX与AX中的32位数据逻辑左移4位
11.设SS=1000H,SP=2000H,AX=345AH,BX=F971H,Flags=4509H,试分析执行以下指令
PUSHBX
PUSHAX
PUSHF
POPCX
之后,SP、SS、CX的值各为多少?
参考答案:
SP=1FFCHSS=1000HCX=4509H
12.指出下列指令中哪些是错误的,并说明错误原因。
(1)MOVDL,CX
(2)MOVDS,1000H
(3)MOV[DI],[BX](4)MOVDL,[BX][BP]
(5)XCHGAX,[5000H](6)PUSH3541H
(7)INC[BX](8)POPCS
(9)MOVA[BX+SI],0(10)MOVAL,300
参考答案:
(1)数据类型不匹配
(2)立即数不能送段寄存器
(3)两个存储器操作数之间不能直接传送数据
(4)源操作数寻址不能为基址加基址
(5)正确(6)PUSH指令的操作数不能为立即数
(7)存储器操作数类型不明确(8)CS不能作为目的操作数使用
(9)目的操作数类型需明确(10)操作数数据类型不匹配
13.已知各寄存器和存储单元的状态如图3.19所示,请阅读下列程序段,并将中间结果填入相应指令右边的空格。
习题四
4.1简述汇编语言与机器语言及高级语言间的区别?
参考答案:
要点:
汇编语言与机器语言的区别:
汇编语言采用符号表示,机器语言二进制表示。
汇编语言与高级语言的区别:
汇编语言属于低级语言,每条指令与对应的机器指令间是一一对应关系,而高级语言接近于自然语言。
4.2简述汇编语言程序的指令语句与伪指令语句在写法及功能上的不同?
参考答案:
要点:
写法上的不同主要表现在第一部分上,一条指令的第一部分“标号”若需要,则在标号后面一定有冒号“:
”,而伪指令语句的第一部分在“名字”后没有冒号“:
”。
功能上的不同:
每一条指令都有对应的机器指令,在程序运行过程中执行到每条指令时起作用;伪指令没有对应的机器指令,是在程序汇编时起作用。
4.3汇编语言程序的标号有何规定?
标号有哪三种属性?
参考答案:
略
4.4汇编语言程序的变量如何定义?
变量有哪三种属性?
参考答案:
略
4.5汇编语言程序中,算术表达式、逻辑表达式、关系表达式各有什么含义?
参考答案:
略
4.6简述汇编语言程序上机的基本步骤和每步所进行的主要操作?
参考答案:
略
4.7设TABLE为数据段中0100H单元的符号名,其中存放的内容为FF00H,试分析以下两条指令分别执行后的结果,并指出它们之间的区别?
MOVAX,TABLE
MOVAX,OFFSETTABLE
参考答案:
第一条指令传送的是TABLE所指单元的内容,AX结果为FF00H;第二条指令传送的是TABLE的偏移地址,AX结果为0100H。
4.8设有如下的变量定义:
DATASEGMENT
ARRAYDW1000H,2000H,3000H,4000H,5000H
BUFDW?
DATAENDS
请分别完成以下操作
(1)用一条指令完成将ARRAY的偏移地址送BX
(2)用一条指令完成将ARRAY的第一字节单元内容送AL
(3)用一条指令完成将ARRAY定义的数据个数送CX
参考答案:
(1)LEABX,ARRAY
(2)MOVAL,BYTEPTRARRAY
(3)MOVCX,(BUF-ARRAY)/2
4.9已知一数据段中的数据定义如下:
DATASEGMENT
STR1DB1,2,3,4,5
STR2DB‘12345’
CONTEQU20
NUMBDB3DUP(6)
NUMWDW20H,-80H
TABLEDW0
DATAENDS
试根据以上数据段的定义,指出下列每小题指令中的错误或者用得不当的指令。
(1)MOVAX,STR1;STR1定义为字节类型,不能当字变量使用
(2)MOVBX,OFFSETNUMB
MOV[BX],’+’;’+’为立即数,[BX]存储器操作数应明确类型
(3)MOVDL,NUMW+2;NUMW为字类型,不能当字节变量使用
(4)MOVBX,OFFSETSTR1
MOVDH,BX+3;源操作数“BX+3”不是正确表达式
(5)INCCONT;INC中的操作数不能为立即数
(6)MOVSTR1,STR2;MOV中的两个操作数不能同时为存储器操作数
(7)MOVAX,NUMW+2
MOVDX,0;此处不应用MOV指令,而应该用CWD指令
DIVNUMW;此处不应用DIV指令,而应该用IDIV指令
参考答案:
分号“;”后面为答案
4.10编写一个汇编语言程序,将字符串“HelloWowld!
”中的全部小写字母转换为大写字母,并存放回原地址处。
参考程序:
DATASEGMENT
STRINGDB"HelloWowld!
"
LENequ$-string
DATAENDS
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
movbx,offsetstring
movcl,len
next:
moval,[bx]
cmpal,'a'
jblop
cmpal,'z'
jalop
subal,20h
mov[bx],al
lop:
incbx
deccl
jnznext
movah,4ch
int21h
codeends
endstart
4.11编写一个带符号数四则运算的程序,完成(Z-(X*Y+200))/20的运算,商送V单元,余数送W单元。
这里,X,Y,Z均为16位的带符号数,内容用户自己定义。
参考程序:
DATASEGMENT
xDW2
ydw-10
zdw300
vdw?
wdw?
DATAENDS
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
movax,x
movbx,y
imulbx
movcx,200
movbx,0
addax,cx
adcdx,bx
movcx,z
movbx,0
subcx,ax
sbbbx,dx
xchgcx,ax
xchgbx,dx
movbx,20
idivbx
movv,ax
movw,dx
movah,4ch
int21h
codeends
endstart
4.12编写一个汇编语言程序,完成以下要求。
从BUF单元处定义有10个带符号字数据:
-1、3、24、94、62、72、55、0、-48、99,试找出它们中的最大值和平均值,并依次分别存放至该数据区的后2个单元中(假设这10个数的和值不超过16位)。
参考程序:
DATASEGMENT
bufDW-1,3,24,94,62,72,55,0,-48,99
nequ($-buf)/2
maxdw?
avedb?
?
DATAENDS
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
leasi,buf
clc
xorax,ax
xordx,dx
movax,[s