微机原理习题解答.docx
《微机原理习题解答.docx》由会员分享,可在线阅读,更多相关《微机原理习题解答.docx(30页珍藏版)》请在冰豆网上搜索。
微机原理习题解答
第一章微型计算机的基础知识
1-1将下列十进制数转换为二进制数、十六进制数。
(1)110
(2)1039(3)0.75(4)0.15625
1-2将下列十进制数转换为BCD码。
(1)129
(2)5678(3)0.984(4)93.745
1-3将下列二进制数转换为十进制数、十六进制数。
(1)10101010
(2)10000000(3)11000011.01(4)01111110
1-4将下列十六进制数转换为二进制数、十进制数。
(1)8E6H
(2)0A42H(3)7E.C5H(4)0F19.1DH
1-5将下列二进制数转换为BCD码。
(1)1011011.101
(2)1010110.001
1-6将下列BCD码转换为二进制数。
(1)(001001110011)BCD
(2)(10010111.00100101)BCD
1-7完成下列二进制数的运算。
(1)1001.11+11.11
(2)1101.01-0110.11(3)1000.011-1001.101(4)1111+1101
1-8完成下列十六进制数的运算。
(1)6AH+0A6H
(2)0AB1FH+0EFCH(3)12ADH-1DEH(4)117H-0ABH
1-9已知X=01H,Y=0FFH,在下面的情况下比较两数的大小。
(1)无符号数
(2)符号数(均为补码)
1-10计算下列各表达式。
(1)101+‘A’+01101001B+0D5H+57Q
(2)127.8125+10111101.101+375.63Q+1FC.8AH
1-11写出下列字符串的ASCII码。
(1)HELLO
(2)A8=
1-12若加上偶校验,下面字符的ASCII码是什么?
加上奇校验呢?
(1)E
(2)6
1-13用8位和16位二进制数,分别求下列十进制数的原码、反码、补码。
(1)-38
(2)125(3)-128(4)87
1-14用8位和16位二进制数,分别写出数字0的原码、反码、补码。
1-15已知补码如下,分别求出真值、原码、反码。
(1)[X]补=81H
(2)[X]补=800H(3)[X]补=79H(4)[X]补=FFFEH
1-16写出下列补码的真值。
(1)[X]补=1000000000000000
(2)[X]补=1111111111111111
(3)[X]补=0111111111111111(4)[X]补=0101010101010101
1-178位二进制补码、原码、反码的范围各是什么?
16位的呢?
1-18用8位补码完成X+Y运算,判断结果是否溢出,并说明原因。
(1)X=80;Y=-65
(2)X=-120;Y=65(3)X=-87;Y=-45
(4)X=-10;Y=-115
1-19用压缩BCD码计算下列各式,并进行调整。
(1)27+11
(2)37+29(3)62+57(4)98+72
1-20将下列十进制数表示成二进制浮点规格化数,要求:
不包括符号位,尾数取6位,阶码取4位。
若尾数、阶码都用原码或都用补码表示,分别写出其浮点数形式。
(1)17.5
(2)-75.5
第二章微处理器结构
2-1什么是微机的系统总线?
微机的总线结构为它带来了哪些好处?
一般将系统总线分为哪三种类
型?
2-2简述微处理器、微型计算机的发展经历了几代?
各代的典型产品是什么?
2-38086/8088微处理器由哪两大部分组成?
各部分的功能是什么?
这种结构与8位CPU相比,为什么
能提高其性能?
2-48086/8088CPU内部有哪些寄存器?
其主要作用是什么?
2-5以8086/8088为CPU组成微机系统时,为什么要用地址锁存器和数据放大器?
它们的主要功能是
什么?
2-68086/8088CPU中有哪些标志位?
试述它们的含义及作用。
2-7两个十六进制数7825H和5A1FH分别相加和相减后,求运算结果及各标志位的值。
2-8简述8086/8088CPU最大模式、最小模式,其关键区别是什么?
2-98086在最小模式下,访问存储器,哪些信号有效?
访问I/O端口,哪些信号有效?
2-10解释时钟周期、总线周期及指令周期。
一个基本的总线周期包括几个时钟周期?
2-11试画出在最小模式下,8086CPU读、写总线周期时序图。
2-128086与8088相比有哪些不同?
8086引脚BHE的作用是什么?
其存储器组织为什么要由偶存
储体和奇存储体组成?
2-13在最小模式下,8086的哪些引脚是分时复用的?
哪些信号需要由系统进行锁存?
2-148086/8088内指令队列的作用是什么?
其各自长度为多少?
8086CPU复位后,有哪些特
征?
8086系统如何找启动程序?
2-158086/8088CPU为什么对存储器采用分段技术?
段的起始地址有何规定?
2-16若有3种微处理器的地址引脚数分别为8条、16条、24条,试问这3种微处理器分别能寻址多少
字节的存储单元?
2-17解释逻辑地址、物理地址、段地址及偏移地址,物理地址是如何求得的?
2-18段地址和偏移地址为1000:
117AH的存储单元的物理地址是什么?
而1109:
00EAH的存储单元的
物理地址又是什么?
这说明什么问题?
2-19若某条指令执行前,CS=0A7B0H,IP=2B50H,求该条指令存放第一个字节单元的物理地
址。
2-20有一100个字的存储区域,其起始地址为6250:
2300H。
写出这个存储区域首末单元
的物理地址。
2-21在存储器中存放的数据如题2-21图所示。
试读出123D4H和123D6H字节单元的内容是什么?
读出
123D4H和123D6H字单元的内容是什么?
题2-21图
2-22如果从存储器的10000H地址开始分配段区,要求代码段占用4K字节空间,数据段占
用2K字节空间、堆栈段占用512个字节空间。
按代码段、数据段和堆栈段的顺序连续分段,
试画出存储器分段地址分配示意图,指出CS、DS、SS各段寄存器内容是什么?
2-23解释什么是规则字、非规则字,8086CPU对它们的存取各需要几个总线周期?
第三章指令系统
3-1指出下列指令的寻址方式。
(1)MOV BX,2000H
(2)MOV BX,[2000H]
(3)MOV[BP],CX (4)MOV AL,[BX+SI+100H]
(5)MOV DX,[BX+DI] (6)MOV AX,CX
(7)POP AX(8)MUL BL
(9)IN AL,80H (10)OUT DX,AX
(11)JMP SI (12)DEC WORDPTR[DI+1200H]
3-2指出下列指令中存储器操作数实际地址的计算公式。
(1)ADD AL,[DI]
(2)SHR BYTEPTR[BP+SI]
(3)MOV CL,10[BX] (4)SUB ES:
[BX+SI+10H],BL
(5)OR AL,[SI-80H] (6)PUSH AX
(7)MOV AX,[2020H] (8)JMP DWORDPTRES:
[SI]
3-3指出下列指令的错误。
(1)MOV AL,BX
(2)MOV CS,AX
(3)ADD AX,IP (4)MOV 50H,AL
(5)MUL 12H (6)MOV [1000H],[SI]
(7)CMP [DI],0 (8)OUT 80H,CL
(9)MOV ES,1200H (10)ROL AH,3
(11)ADD AX,[CX] (12)PUSH 1810H
3-4假设DS=1000H,BX=2A80H,CX=3142H,SI=50H,[10050H]=3BH,[10051H]=86H,
[11200H]=7AH,[11201H]=64H,[12A80H]=95H,[12A81H]=0C4H,[12AD0H]=0A3H,
[13CD0H]=61H,在以下各题括号中分别填入指令执行后的结果。
(1)MOVAX,1200H
AX=( )
(2)MOVAX,[1200H]
AX=( )
(3)ADD[SI],CX
(10050H)=( ),(10051H)=( ),ZF=( ),
SF=( ),CF=( ),OF=( )
(4)ORBYTEPTR[BX+SI],54H
(12AD0H)=( ),CF=( ),OF=( )
(5)MOV[BX+150H],CH
(12BD0H)=( ),CH=( )
(6)SUBBH,1200H[BX][SI]
BH=( ),ZF=( ),SF=( ),CF=( ),OF=( )
(7)ROLWORDPTR[BX],1
[12A80H]=( ),[12A81H]=( ),CF=( )
3-5写出以BUF为首地址字数组中的第五个字送到寄存器CX的指令序列,要求分别使用以下几种寻
址方式:
(1)以BX的寄存器间接寻址。
(2)以BX的相对寄存器寻址。
(3)以BX、SI的基址变址寻址。
3-6假设SP=1010H,AX=1357H,BX=2468H,请问:
下列程序段执行后,SP=?
AX=?
BX=?
PUSH AX
PUSH BX
POP AX
3-7写出使AX=0的单条指令,尽量多写几条。
3-8分析下面程序段,指出每条指令执行后寄存器的内容。
MOV AX,0ABCH AX=?
DEC AX AX=?
AND AX,0FFFH AX=?
MOV CL,4 CL=?
SAL AX,CL AX=?
CL=?
MOV CL,AL CL=?
ADD CL,78H CL=?
PUSH AX AX=?
POP AX AX=?
3-9执行下面程序段后,AL=?
BL=?
CF=?
MOV AL,BL
NOT AL
XOR AL,BL
AND BL,AL
3-10设AX=0119H,执行下面程序段后,AX=?
MOV CH,AH
ADD AL,AH
DAA
XCHG AL,CH
ADC AL,34H
DAA
MOV AH,AL
MOV AL,CH
HLT
3-11指令SUBAL,9与CMP AL,9这两条指令的区别是什么?
若AL=8,分别执行上述两条指令后,
SF=?
CF=?
ZF=?
OF=?
3-12分别编写出实现下列各算式的程序段,其中A、B、C、D均为存放16位无符号数的单元符号地
址。
若A、B、C、D均存放16位符号数的话,程序段如何改写?
(1)W←D-A*C
(2)W←((D+B)*A)/C
(3)W←D/A+B(余数省略)
3-13检查CX中的D10位是否为“0”,写出完成该操作的指令。
3-14写出一条使地址1000H中的内容与CF标志位同时清0的指令。
3-158086/8088采用什么途径改变IP和CS内容,哪些指令可达到这个目的?
3-16假设指令JMPSHORTNEXT存在代码段的2100H、2101H单元中,它的相对量为
(1)38H
(2)
0D8H,请写出每种相对量的转移地址是什么?
写出计算过程。
3-17分析下列程序段,如果AX和BX内容分别给出如下几种情况,问程序执行后分别转向何处?
(1)AX=1290H,BX=812FH
(2)AX=45D2H,BX=6563H
(3)AX=95C5H,BX=0B469H (4)AX=0D056H,BX=9EF8H
ADD AX,BX
JNO L1
JNC L2
SUB AX,BX
JNC L3
JNO L4
JMP L5
3-18假定AX和BX内容为符号数,CX和DX内容为无符号数,请用比较和条件转移指令实现以下条件
转移。
(1)若DX的内容超过CX的内容,则转L1。
(2)若BX的内容大于AX的内容,则转L2。
(3)若CX的内容等于零,则转L3。
(4)BX的内容和AX的内容比较,若溢出则转L4。
(5)若BX的内容小于等于AX的内容,则转L5。
(6)若DX的内容低于等于CX的内容,则转L6。
3-19若下列条件转移指令中的条件CC可以为B、BE、A、AE、L、LE、G、GE中的任一个,如果AX和
BX的值分别为下面
(1)~(6)的情况,问在每种情况下,八个条件CC中哪几个可以转移到AGAIN去?
CMP AX,BX
JCC AGAIN
(1)AX=1F54H, BX=1F54H
(2)AX=8765H, BX=1890H
(3)AX=0FE60H, BX=0981H (4)AX=0973H, BX=0DC38H
(5)AX=8CABH, BX=0F43CH (6)AX=1234H, BX=1087H
第四章汇编语言程序设计
4-1请写出完成下列操作的伪指令语句。
(1)将78,-40,0D6H,49H存放在定义为字节变量STAD的存储单元中。
(2)将字数据1245H,64H,1245,0C7H存放在定义为字节变量ARRAY的存储单元中。
(3)将字节数据12H,0FCH,0E4H,65H存放在定义为字变量ALPHA的存储单元中,并且不改变数据按字节存储的次序。
(4)在以BETA为首地址的存储单元中连续存放字节数据:
4个8,6个‘S’,20个空单元,10个(1,3)。
(5)在以STRING为首地址的存储单元中存放字符串THIS IS A EXAMPE。
(6)用符号TOTAL代替数字780。
4-2请画出下列数据定义语句的内存数据排列图。
DATA1 DB -10,29H,29,‘7’,?
DATA2 DW 2DUP(‘12’,12),0CDH
DATA3 DD 123456H
4-3假设数据定义语句如下,请画出内存数据排列图。
X1 DB ?
,76
X2 DW 20DUP(1,2),80H,?
X3 DD 5
COUNT EQU $-X2
请问:
COUNT的值是多少?
它表示什么意义?
4-4 请画 出下列数据定义语句的内存数据排列图。
ORG 0100H
SA1 DB 30,‘30’
SA2 DW SA1
SA3 EQU $-SA1
SA4 DW SA3
4-5数据定义语句如下:
ORG 30H
DA1 DB 0,‘0’,30H
DW DA1
请回答:
字数据为3000H存储单元的偏移地址是什么?
4-6 假设数 据定 义语句如下:
BUF1 DB 50DUP(0)
BUF2 DW 4567H,671,0D8H
BUF3 DB 10DUP(?
)
BUF4 DB 3,4,8,9,10
(1)写出将BUF1的偏移地址送BX的指令。
(2)将BUF2的第4个字节数据送CL的指令。
(3)将0C6H送入BUF3的第8个字节单元中的指令。
(4)用伪指令写出BUF2和BUF3总字节数。
(5)用一组程序段,写出BUF2的第2个数据671和BUF4的第4个数据9相加,结果送入BUF3中。
4-7根据下面数据定义语句,写出各条指令执行后的结果。
FLDB DW 0A47CH
TABLE DB 52H,67H,0C0H,210
TAE EQU WORDPTRTABLE)
ARRAY DB ‘1234’
CNT EQU $-ARRAY
(1)MOV AX,FLDB AL=( )
(2)MOV BX,TAE BH=( )
(3)MOV CH,TABLE+2 CH=( )
(4)MOV DL,ARRAY DL=( )
(5)MOV DH,CNT DH=( )
4-8数据定义语句如下,指令执行后
DA1 EQU BYTEPTRDA2
DA2 DW 0ABCDH
SHR DA1,1
SAR DA2,1
上述指令序列执行后,[DA2]=( ),CF=( )。
4-9指令ANDAX,76HAND0FH中,请问两个AND操作在什么时间进行?
有何区别?
如何用立即寻址直接写出该指令?
4-10将存放在字节变量BCD1中的两个十进制数的ASCII码合并为一字节压缩的BCD码,
存入字节变量BCD2中,试编写程序。
4-11不使用乘法指令,将寄存器AX的内容扩大7倍,试编写程序。
4-12执行下列指令后,AX寄存器中的内容是什么?
TABLE DW 10,20,30,40,50
NEW DW 3
MOV SI,OFFSET TABLE
ADD SI,NEW
MOV AX,[SI]
HLT
4-13有一个程序段如下所示:
OR AL,AL
JZ L1
SAR AL,1
JZ L2
RCL AL,1
NOT AL
JZ L3
请回答:
(1)当AL=〖CD#4〗,执行该程序转向L1;
(2)当AL=〖CD#4〗,执行该程序转向L2;(3)当AL=〖CD#4〗,执行该程序转向L3。
4-14在BUFF单元中有一个BCD码A,试编写程序计算Y,结果送DES单元中。
Y=2A A<20
Y=A 20≤A<60
Y=80 A≥60
4-15试编写程序,要求比较数组BUFER中的3个16位符号数。
根据比较结果,置FLAG标志,要求画出程序流程图。
(1)如果3个数都不相等,置FLAG为0。
(2)如果3个数有两个相等,置FLAG为1。
(3)如果3个数全相等,置FLAG为2。
4-16有程序段如下所示,请回答。
(1) MOV AX,100
MOV CX,5
LOP:
SUB AX,CX
LOOP LOP
HLT
该程序段执行后,AX=?
CX=?
(2) PAS1 DB 0,1,2,3,4,5,6,7,8,9
PAS2 DB 5DUP(?
)
MOV CX,5
MOV BX,5
MOV SI,0
LOP:
MOV AL,PAS1[BX+SI]
MOV PAS2[SI],AL
INC SI
LOOP LOP
HLT
该程序段执行后,PAS2数据区的数依次为( )。
4-17请编写实现下述功能的程序:
在以DATA为首地址的数据区中存有100个字符号数
,要求找出其中的最大数送MAX,最小的数送MIN。
4-18已知有COUNT个字节数存放在以NUMBER为首地址的数据区中。
编一个程序将其中的负数去除后将剩下的正数重新存放在以PLUS开始的数据区中。
4-19数组GRADE中存有200个学生某科考试成绩,要求编写程序。
(1)统计各分数段的人数,即要求统计90~100,80~89,70~79,60~69以及60以下的各有多少人。
(2)求出该门课程考试成绩的平均成绩是多少(小数省略),并放在LTEV单元中。
4-20编写如下程序:
利用DOS功能调用,完成将键盘输入的小写字母转换为大写字母并输出显示,直到输入“*”字符为止,停止输出。
4-21以PKK为首地址的数据区中,有一个由100个符号组成的字符串,其中至少有2个
以上的字符“#”,请分别编写实现下列功能的程序:
(1)统计字符串中字符“#”出现的次数,并送入CUT单元中。
(2)查找字符串中最后出现符号“#”的位置与PKK的距离。
4-22在DATA单元开始的区中存放一英文句子(大、小写字母构成),编一个程序,将
句子中的各个英文字母按字典顺序排列。
4-23分析下列程序,回答:
(1)指出程序完成的功能。
(2)画出主程序调用子程序
时,堆栈的变化示意图。
(3)该子程序的设计有什么缺点,如何修改?
SOURCE DB〖KG1*2〗 …
DST DB 100DUP(?
)
LEA AX,SOURCE
PUSH AX
LEA AX,DST
PUSH AX
MOV AX,100
PUSH AX
CALL FARPTRREMOV
(断点CS:
IP) …
REMOV PROC FAR
MOV BP,SP
MOV CX,[BP+4]
MOV DI,[BP+6]
MOV SI,[BP+8]
CLD
REP MOVSB
RET
REMOV ENDP
4-24编一个子程序,利用XLAT指令(查表法)把十六进制数转换成ASCII码。
假设ASCII码存放在以DATA1为首地址的数据区中,对应的十六进制数放在以DATA2为首地址的数据区中,转换结果送到以DATA3为首地址的数据区中。
4-25利用DOS系统功能调用从键盘上输入10个1位无符号数,求出其中最大和最小数并在显示器上输出显示。
第五章中断系统及中断控制器
5-1I/O接口的主要功能是什么?
在8086/8088系统中,I/O端口地址采用哪种编址方式?
5-2一般的I/O接口电路安排有哪三类寄存器?
它们的各自作用是什么?
5-3简述CPU(主机)与外设进行数据交换的几种常用方式。
说明各自应用的场合。
5-4