微机计算机基本原理与接口技术 陈红卫参考答案.docx
《微机计算机基本原理与接口技术 陈红卫参考答案.docx》由会员分享,可在线阅读,更多相关《微机计算机基本原理与接口技术 陈红卫参考答案.docx(56页珍藏版)》请在冰豆网上搜索。
微机计算机基本原理与接口技术陈红卫参考答案
第一章参考答案
1.将下列十进制数转换成二进制数:
(1)49
(2)49.75(3)100(4)100.8125
解:
(1)(49)10=(110001)2
(2)(49.75)10=(110001.11)2
(3)(100)10=(1100100)2
(4)(100.8125)10=(1100100.1101)2
2.将下列十六进制数转换成二进制数和十进制数:
(1)FAH
(2)78A2H(3)FFFFH(4)3CH
解:
(1)(FA)16=(11111010)2=(250)10
(2)(78A2)16=(111100010100010)2=(30882)10
(3)(FFFF)16=(1111111111111111)2=(65535)10
(4)(3C)16=(111100)2=(60)10
3.将下列二进制数转换成十六进制数和八进制数:
(1)101101.11
(2)1111111(3)1101001011.01(4)10111101
解:
(1)(101101.11)2=(2D.C)16=(55.6)8
(2)(1111111)2=(7F)16=(177)8
(3)(1101001011.01)2=(34B.4)16=(1513.2)8
(4)(10111101)2=(BB)16=(275)8
4.设机器字长为8位,写出下列各二进制数的原码、反码和补码:
(1)+1010101
(2)-1000000(3)+1111111(4)-1111111
解:
(1)原码:
01010101
反码:
01010101
补码:
01010101
(2)原码:
11000000
反码:
10111111
补码:
11000000
(3)原码:
01111111
反码:
01111111
补码:
01111111
(4)原码:
11111111
反码:
10000000
补码:
10000001
5.设下列四组为8位二进制补码表示的十六进制数,计算a+b和a-b,并判断其结果是否溢出:
(1)a=0F6H,b=0D5H
(2)a=0B7H,b=0C7H
(3)a=37H,b=67H(4)a=73H,b=7BH
解:
(1)a+b=CBH没有发生溢出
a-b=21H没有发生溢出
(2)a+b=7EH发生溢出
a-b=F0H没有发生溢出
(3)a+b=9EH没有发生溢出
a-b=D0H没有发生溢出
(4)a+b=EEH发生溢出
a-b=F8H没有发生溢出
6.已知a=00111000B,b=11110011B,计算下列逻辑运算:
(1)aANDb
(2)aORb(3)aXORb(4)NOTa
解:
(1)aANDb=00110000
(2)aORb=11111011
(3)aXORb=11001011
(4)NOTa=11000111
7.将下列算式中的十进制数表示成组合BCD码进行运算,并根据需要进行调整。
(1)38+42
(2)56+77(3)99+77(4)34+7
解:
(1)00111000
+01000010
01111010
+0110
10000000
(2)01010110
+01110111
11001101
+0110
11010011
+0110
000100110011
(3)10011001
+01110111
100010000
+01100110
000101110110
(4)00110111
+00000111
00111011
+0110
01000001
8.将下列字符串表示成相应的ASCII码(用十六进制数表示):
(1)102
(2)ABC(3)ASCII(4)abc
解:
(1)31H30H32H
(2)41H42H43H
(3)41H53H43H49H49H
(4)61H62H63H
9.已知[X]原=10101100B,计算[(1/2)X]补及[(-1/2)X]补的值。
解:
∵[X]原=10101100B∴[(1/2)X]原=10010110B[(-1/2)X]原=00010110B
∴[(1/2)X]补=11101010B
[(-1/2)X]补=00010110B
10.若X=-63,Y=+127,则在[X-Y]补运算后,进位标志CF、符号标志SF及溢出标志OF应分别是什么?
(设机器字长为8)
解:
[X]补=11000001
[-Y]补=10000001
[X-Y]补=[X]补+[-Y]补=101000010
∴CF=1SF=0OF=0
11.若对下列二进制位串进行偶校验,写出校验位的值。
(1)1000001
(2)1111111(3)1010110(4)1010100
解:
(1)0
(2)1
(3)0
(4)1
第二章参考答案
1.说明8086/8088CPU中,EU和BIU的功能。
答:
EU的功能是负责指令的执行;BIU的功能是根据EU的请求,完成CPU与存储器或I/O接口间的数据传送。
2.说明8086/8088CPU中,标志寄存器中各标志位的功能。
答:
CF:
进位标志;当最高位有进位或借位时,CF=1;否则CF=0;
PF:
奇偶标志;当运算结果中低8位中“1”的个数为偶数时,PF=1;否则PF=0;
AF:
辅助进行标志;当D3向D4有进位或借位时,AF=1;否则AF=0;
ZF:
零标志;运算结果每位都为0时,ZF=1;否则ZF=0;
SF:
符号标志;运算结果的最高位为1时,SF=1;否则SF=0;
OF:
溢出标志;两个符号数进行运算产生溢出时,OF=1;否则OF=0;
TF:
陷阱标志;当TF=1时,CPU将进入单步执行工作方式;
IF:
中断标志;当IF=1时允许CPU响应可屏蔽中断;当IF=0时禁止CPU响应可屏蔽中断;
DF:
方向标志;当DF=0时,串操作指令时地址朝增加方向;当DF=1时,串操作指令时地址朝减少方向。
3.8086/8088CPU的最小模式和最大模式工作主要区别是什么?
答:
最小模式与最大模式的主切区别在于控制总线的产生方式不同。
最小工作模式的控制总线由CPU的引脚直接给出;
最大工作模式的控制总线由总线控制器给出。
4.8086CPU与8088CPU的引出线有什么差别?
答:
1)外部数据总线不同:
8086CPU标注AD0~AD15,而8088CPU标注AD0~AD7,A8~A15
2)8086中设有BHE引脚;而8088中设有SSO引脚。
3)8086中设有M/IO引脚;而8088中设有IO/M。
5.若8086/8088CPU对符号数8070H和FF85H进行加法运算,试问运算后SF、OF、AF、CF、ZF、PF标志的值各是多少?
解:
8070H1000000001110000
+FF85H1111111110000101
17FF5H+10111111111110101
从运算结果可以看出:
SF=0;OF=1;AF=0;CF=1;ZF=0;PF=1。
6.8086/8088微处理器内部有哪些寄存器?
其主要作用是什么?
答:
8086/8088微处理器内部有14个16位寄存器,它们的名称及作用如下:
AX:
累加器。
BX:
基址寄存器。
CX:
计数器。
DX:
数据寄存器。
SP:
堆栈指针寄存器。
BP:
地址指针寄存器。
SI:
源地址寄存器。
DI:
目的地址寄存器。
CS:
代码段寄存器。
DS:
数据段寄存器。
SS:
堆栈段寄存器。
ES:
附加段寄存器。
IP:
指令指针寄存器。
FLAG:
标志寄存器。
7.什么是逻辑地址?
什么是物理地址?
它们之间的关系如何?
答:
逻辑地址:
由段基址与段内偏移地址组成的表示存储单元地址。
物理地址:
用20位二进制编号表示存储单元地址。
物理地址=段基址×16+段内偏移地址。
8.8088CPU的RESET信号、READY信号的作用?
答:
RESET:
CPU复位输入信号,当此输入线有效并维持4个时钟周期时完成CPU内部复位。
READY:
准备就绪输入信号,用于协调CPU与存储器或I/O之间的数据传送。
9.试画出一个基本的存贮器写总线周期时序图。
答:
10.8088CPU工作在最小模式下,
(1)当CPU访问存储器时,要利用哪些信号?
(2)当CPU访问外设接口时,要利用哪些信号?
(3)当HOLD有效并得到响应时,CPU的哪些信号置高阻状态?
答:
(1)利用AD0~AD7,A8~A15,ALE,WR,RD,DT/R,DEN,M/IO。
(2)利用AD0~AD7,A8~A15,ALE,WR,RD,DT/R,DEN,M/IO。
(3)当HOLD有效并得到响应时,CPU中呈高阻状态的信号有:
AD0~AD7,A8~A15,ALE,WR,RD,DT/R,DEN,M/IO。
11.8086/8088CPU在存储器写周期中,有效数据开始的时刻是总线周期的哪个T?
在存储器读周期中,有效数据开始的时刻是总线周期的哪个T?
答:
写存储器操作时,有效数据开始于T2;
读存储器操作时,有效数据开始于T3。
12.8086/8088CPU与存储器(或外设)同步以及与协处理器同步的引脚信号依次是什么?
答:
同步的引脚信号是:
READY,HOLD。
13.以Pentium微处理器为CPU的奔腾机采用的系统总线和局部总线分别是什么?
答:
系统总线:
局部总线:
第三章参考答案
1.按照题目中提出的要求,写出能达到要求的一条(或几条)汇编形式的指令:
⑴将一个立即数送入寄存器BX;
⑵将一个立即数送入段寄存器DS;
⑶将变址寄存器DI的内容送入一个存储单元中;
⑷从存储单元中取一个数送到段寄存器ES中;
⑸将立即数0ABH与AL相加,结果送回AL中;
⑹把BX与CX寄存器内容相加,结果送入BX;
⑺用寄存器间接寻址方式,实现一个立即数与存储单元内容相加,结果放回存储器。
解:
(1)MOVBX,1234H
(2)MOVAX,1234H
MOVDS,AX
(3)MOV[BX],DI
(4)MOVES,[BX]
(5)ADDAL,0ABH
(6)ADDBX,CX
(7)MOVAX,[BX]
ADDAX,1234H
MOV[BX],AX
2.执行下面程序,完成指令后的填空:
MOVAX,2000H;AH=20H
MOVDS,AX;AL=00HDS=2000H
MOVSS,AX;SS=2000HAX=2000H
MOVBX,2030H;BH=20HBL=30H
MOVSI,BX;SI=2030H
MOVDI,3040H;DI=3040H
MOVSI,DI;SI=3040H
MOVSP,50FFH;SP=50FFH
MOVDX,SP;DH=50HDL=FFH
MOVCL,25;CL=19H
MOVBL,CL;CL=19HBL=19H
MOVAH,0F0H;AH=F0H
MOVCH,AH;CH=F0H
MOVBYTEPTR[DI],64;(DI)=40H
MOVWORDPTR[SI],256;(SI)=00H(SI+1)=01H
MOVDL,[SI+1];DL=01H
MOVDH,1+[SI];DH=00H
MOVAL,1[SI];AL=01H
MOVWORDPTR[BX][SI],34;(BX+SI)=22H(BX+SI+1)=00H
MOV[BX+SI+4],BL;(BX+SI+4)=19H
MOVBP,2[BX+DI];BP=00H
MOV[BP],AL;(BP)=01H
MOVAX,[BP][DI];AX=0100H
MOVBL,AL;BL=00H
MOVES,BX;ES=2000H
PUSHBX;SP=50FDH(SP,SP+1)=2000H
PUSHDI;SP=50FBH(SP,SP+1)=F019H
POPCX;SP=50FDHCX=3040H
POPDX;SP=50FFHDX=2000H
XCHGAX,BP;AX=0000HBP=0100H
XCHGDH,BL;DH=00HBL=20H
LAHF;FLAG=0002HAH=02H
SAHF;FLAG=0002HAH=02H
PUSHF;SP=50FDH(SP,SP+1)=0002H
POPF;SP=50FFHFLAG=0002H
3.设DS=2000H,ES=2100H,SS=1500H,SI=00A0H。
BX=0100H,BP=0010H,数据段中变量名VAL的偏移地址值是0050H,指出下列源操作数字段的寻址方式是什么?
其物理地址值是多少?
⑴MOV AX,0ABH
⑵MOV AX,BX
⑶MOV AX,[100H]
⑷MOV AX,VAL
⑸MOV AX,[BX]
⑹MOV AX,ES:
[BX]
⑺MOV AX,[BP]
⑻MOV AX,[SI]
⑼MOVAX,[BX+10]
⑽MOV AX,VAL[BX]
⑾MOV AX,[BX][SI]
⑿MOV AX,VAL[BX][SI]
解:
(1)立即寻址方式
(2)寄存器寻址方式
(3)直接寻址方式;其物理地址为:
20100H
(4)直接寻址方式;其物理地址为:
20050H
(5)寄存器间接寻址方式;其物理地址为:
20100H
(6)寄存器间接寻址方式;其物理地址为:
21100H
(7)寄存器间接寻址方式;其物理地址为:
15010H
(8)寄存器间接寻址方式;其物理地址为:
200A0H
(9)寄存器相对寻址方式;其物理地址为:
20110H
(10)寄存器相对寻址方式;其物理地址为:
20150H
(11)基址变址寻址方式;其物理地址为:
201A0H
(12)相对基址变址寻址方式;其物理地址为:
201F0H
4.如果TABEL为数据段中0032H单元的符号名,其中存放的内容为1234H,试问以下两条指令有什么区别?
指令执行后,AX寄存器的内容各是什么?
。
MOV AX,TABEL
LEA AX,TABEL
解:
指令MOVAX,TABEL是取出地址为TABEL的内存单元内容,执行结束后AX=1234H
指令LEAAX,TABEL是取出符号地址的数值,执行结束后AX=0032H.
5.已知堆栈段寄存器SS的内容是0FFA0H,堆栈指针寄存器SP的内容是00B0H,先执行两条把8057H和0F79H分别进栈的PUSH指令,再执行一条POP指令。
试画出堆栈区和SP的内容变化过程示意图(标出存储单元的物理地址)。
解:
6.求出以下各十六进制数与十六进制数62A0H之和,并根据结果设置标志位SF、ZF、CF和OF的值。
⑴1234H⑵4321H⑶CFA0H⑷9D60H
解:
(1)结果74DEH:
SF=0;ZF=0;CF=0;OF=0。
(2)结果A5C1EH:
SF=1;ZF=0;CF=1;OF=1。
(3)结果3240H:
SF=0;ZF=0;CF=1;OF=0。
(4)结果0000H:
SF=0;ZF=1;CF=1;OF=0。
7.求出以下各十六进制数与十六进制数4AE0H的差值,并根据结果设置标志位SF、ZF、CF和OF的值。
⑴1234H⑵5D90H⑶9090H⑷EA04H
解:
(1)结果:
C754H;SF=1;ZF=0;CF=1;OF=0。
(2)结果:
12B0H;SF=0;ZF=0;CF=0;OF=0。
(3)结果:
45B0H;SF=0;ZF=0;CF=0;OF=0。
(4)结果:
9F24H;SF=1;ZF=0;CF=0;OF=0。
8.假设BX=0E3H,变量VALUE中存放的内容为79H,确定下列各条指令单独执行后的结果。
⑴XOR BX,VALUE⑵AND BX,VALUE⑶OR BX,VALUE
⑷XOR BX,0FFH⑸AND BX,0⑹TEST BX,01H
解:
(1)BX=9AH
(2)BX=61H
(3)BX=FBH
(4)BX=1CH
(5)BX=00H
(6)BX=E3H
9.试写出执行下列指令序列后BX寄存器的内容。
执行前BX=6D16H。
MOVCL,7
SHRBX,CL
解:
执行后BX=00DAH
10.试分析以下程序段所完成的功能。
MOV CL,04
SHL DX,CL
MOV BL,AH
SHL AX,CL
SHR BL,CL
OR DL,BL
解:
程序段完成由DX和AX共同组成的32位数向左移动4位。
11.写一程序段:
比较两个5字节的字符串OLDS和NEWS,如果OLDS字符串不同于NEWS字符串,则执行NEW_LESS;否则顺序执行程序。
解:
参考程序:
MOVAX,DS
MOVES,AX
MOVCX,0005H
LEASI,OLDS
LEADI,NEAS
CLD
REPZSCASB
JNZNEW_LESS
…
12.假定AX和BX中内容为带符号数,CX和DX中的内容为无符号数,请用比较指令和条件转移指令实现以下判断:
⑴若DX的内容超过CX的内容,则转去执行EXCEED;
⑵若BX的内容大于AX的内容,则转去执行EXCEED;
⑶若CX的内容等于0,则转去执行ZERO;
⑷若BX与AX的内容相比较是否产生溢出?
若溢出则转OVERFLOW;
⑸若BX的内容小于等于AX的内容,则转EQ_SMA;
⑹若DX的内容低于等于CX的内容,则转EQ_SMA。
解:
(1)CMPDX,CX
JAEXCEED
(2)CMPBX,AX
JGEXCEED
(3)CMPCX,0
JZZERO
(4)CMPBX,AX
JOOVERFLOW
(5)CMPBX,AX
JLEEQ_SMA
(6)CMPDX,CX
JBEEQ_SMA
13.假设X和X+2单元的内容为双精度数p,Y和Y+2单元的内容为双精度数q(X和Y为低位字),试说明下列程序段做什么工作?
MOV DX,X+2
MOV AX,X
ADD AX,X
ADC DX,X+2
CMP DX,Y+2
JL L2
JG L1
CMP AX,Y
JBE L2
L1:
MOV AX,1
JMP SHORTEXIT
L2:
MOV AX,2
EXIT:
INT 20H
解:
当2p>q时,AX的内容置成1;当2p<=q时,AX的内容置成2。
14.要求测试STATUS中的一个字节,如果第1、3、5位均为1则转移到ROUTINE_1;如果此三位中有两位为1则转移到ROUTINE_2;如果此三位只有一位为1则转移到ROUTINE_3;如果此3位全为0则转移到ROUTINE_4。
试画出流程图,并编制相应程序段。
解:
流程图如下:
MOVAL,STATUS
ANDAL,2AH
JZROUTINE_4
CMPAL,2AH
JZROUTINE_1
JPROUTINE_2
ROUTINE_3:
第四章参考答案
1.设下列指令中的所有标识符均是类型属性为字的变量,请指出下列指令中哪些是非法的指令?
错误的原因?
⑴MOVBP,AL
⑵MOVWORD_OP1,WORD_OP2
⑶MOVSAVE_WODR,DS
⑷MOVSP,SS:
DATA_WORD[BX][SI]
⑸MOV[BX][SI],2
解:
(1)非法。
源操作数与目的操作数类型不符。
00H
00H
00H
01H
00H
02H
00H
00H
00H
01H
00H
02H
00H
00H
00H
01H
00H
02H
00H
00H
00H
01H
00H
02H
00H
00H
00H
01H
00H
02H
?
?
FBH
FFH
59H
42H
45H
54H
56H
02H
(2)合法。
(3)合法。
(4)合法。
(5)非法。
需说明操作数类型。
2.设VAR1和VAR2为字变量,LAB为标号,
试指出下列指令的错误之处:
⑴ADDVAR1,VAR2
⑵SUBAL,VAR1
⑶JMPLAB[SI]
⑷JNZVAR1
⑸JMPNEARLAB
解:
(1)两个操作数均为符号地址。
(2)两个操作数的类型不同。
(3)
(4)
(5)
3.画图说明下列语句所分配的存储空间及初始化的数据值。
⑴BYTE_VARDB‘BYTE’,12,-12H,3DUP(0,?
2DUP(1,2),?
)
41H
59H
54H
45H
0CH
F4H
00H
?
01H
02H
01H
02H
00H
?
01H
02H
01H
02H
⑵WORD_VARDW5DUP(0,1,2),?
-5‘BY’,’TE’,256H
解:
(1)
(2)
4.设程序中的数据定义如下:
PARTNODW?
PNAMEDB16DUP(?
)
COUNTDD?
PLENTHEQU$-PARTNO
问PLENTH的值为多少?
它表示什么意义?
解:
PLENTH的值为22(16H)。
表示当前位置与PARTNO之间有22个字节空间。
5.设程序中的数据定义如下:
LNAMEDB30DUP(?
)
ADDRESSDB30DUP(?
)
CITYDB15DUP(?
)
CODE_LISTDB1,7,8,,3,2
⑴用一条MOV指令将LNAME的偏移地址放入AX;
⑵用一条指令将CODE_LIST的头两个字节的内容放入SI:
⑶写一条伪操作使CODE_LENGTH的值等于CODE_LIST域的实际长度。