微机原理课后习题参考答案简版.docx
- 文档编号:26553864
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:49
- 大小:196.77KB
微机原理课后习题参考答案简版.docx
《微机原理课后习题参考答案简版.docx》由会员分享,可在线阅读,更多相关《微机原理课后习题参考答案简版.docx(49页珍藏版)》请在冰豆网上搜索。
微机原理课后习题参考答案简版
习题答案
1-6将下列十进制数转换为二进制数、十六进制数和BCD数
(1)124.625
(6)268.875
解:
(1)124=01111100B=7CH,0.625×16=10,所以0.625=0.AH=0.1010B
∴124.625=7C.AH=01111100.1010B=000100100100.011000100101BCD
(2)268=256+12=100001100B=10CH,0.875×16=14,∴0.875=0.EH=0.1110B.
∴268.875=10C.EH=100001100.111B=001001101000.100001110101BCD
1-7用16位二进制数表示出下列十进制数的原码、反码和补码。
(1)+128
(4)-5
解:
(1)+128的原码和补码反码均为0000000100000000B
(4)-5的原码为1000000000000101B,反码为1111111111111010B,补码为1111111111111011B。
1-10试绘出以下十六进制数在内存中存放的示意图。
设存放地址均为00H。
解:
(1)F7H
(2)03BAH(3)C804326BH(4)1122334455667788H
地址
地址
地址
地址
2-1请将左边的术语和右边的含义联系起来,在括号中填入你选择的代号字母:
1.字长(i)a.指由8个二进制位组成的通用基本单元。
2.字节(a)b.是CPU执行指令的时间刻度。
3.指令(h)c.μPS所能访问的存储单元数,与CPU地址总线条数有关。
4.基本指令执行周期(g)d.唯一能代表存储空间每个字节单元的地址,用5位十六进制数表示。
5.指令执行时间(j)e.CPU访问1次存储器或I/O操作所花的时间。
6.时钟周期(b)f.由段基址和偏移地址两部分组成,均用4位十六进制数表示。
7.总线周期(e)g..指寄存器加法指令执行所花时间。
8.Cache(k)h.完成操作的命令。
9.虚拟存储器(l)i.指μP在交换,加工,存放信息时信息的基本长度。
10.访存空间(c)j.各条指令执行所花的时间不同,不同指令,该值不一。
11.实际地址(d)k.为缓解CPU与主存储器间交换数据的速度瓶颈而建立的高速存储器。
12.逻辑地址(f)l.CPU执行程序时看到的一个速度接近内存却具有外存容量的假想存储器。
2-4试将左边的标志和右边的功能联系起来。
要求:
(1)在括号中填入右边功能的代号;
(1)填写其类型(属状态标志者填S:
属控制标志者填C)。
(2)写出各标志为0时表示的状态。
标志
类型
为0时表示的状态
1.SF(b)a.陷阱标志
2.CF(d)b.符号标志
3.AF(h)C.溢出标志
4.DF(i)d.进位标志
5.TF(a)e.零标志
6.OF(c)f.奇偶标志
7.PF(f)g.中断标志
8.IF(g)h.辅助进位标志
9.ZF(e)i.方向标志
S
S
S
C
C
S
S
C
S
带符号数为正数
结果最高位无进位(借位)
低4位无进位(借位)
串操作步进方向为地址递增
8086正常执行程序
带符号数运算未产生溢出
运算结构由奇数个1
CPU关闭中断
运算结果不为0
2-6试画出8086/8088的寄存器结构,并说出它们的主要用途。
解:
AX、BX、CX、DX用作数据寄存器,用作存放操作数、中间结果。
SP堆栈指针、BP基址指针、SI源变趾、DI目的变趾。
IP指令指针,FH控制标志、FL状态标志。
CS存储代码段首趾、DS存储数据段首趾、SS存储堆栈段首趾、ES附加数据段首趾。
AH
AL
AX
BH
BL
BX
CH
CL
CX
DH
DL
DX
SP
BP
SI
DI
IP
FH
FL
CS
DS
SS
ES
2-8若一个程序段开始执行之前,(CS)=97F0H,(IP)=1B40H,试问该程序段启动执行指令的实际地址是什么?
解:
启动执行指令的实际地址PA=97F0H×10H+1B40H=99A40H
2-9若堆栈段寄存器(SS)=3A50H,堆栈指针(SP)=1500H,试问这时堆栈顶的实际地址是什么?
解:
栈顶的实际地址=(SS)×10H+(SP)=3A50H×10H+1500H=3BA00H
2-11将8086下列工作方式的特点填于表中。
解:
特点
方式
MN/MX
处理器个数
总线控制信号的产生
最小方式
接+5V
1个
全部由8086产生
最大方式
接地
可达3个
总线控制器8288产生
2-13有一32位的地址指针67ABH:
2D34H存放在00230开始的存储器中,试画出它们的存放示意图。
解:
示意图如下
地址
内容
类型
00230
34H
偏移量
00231
2DH
00232
ABH
段基址
00233
67H
3-2分别指出下列指令中源操作数和目的操作数的寻址方式。
若是存储器寻址,试用表达式表示出EA=?
PA=?
(1)MOVSI,2100H(4)ADCAX,[BX][SI](7)MOVAX,ES:
[BX]
解
(1)源操作数是立即数寻址,目的操作数是寄存器寻址。
(4)源操作数是基址变趾寻址,EA=(BX)+(SI),PA=16×(DS)+(BX)+(SI),
目的操作数是寄存器寻址。
(7)源操作数是寄存器间接寻址,其中EA=(BX),PA=16×(ES)+(BX),
目的操作数是寄存器寻址。
3-3已知8086中一些寄存器的内容和一些存储单元的内容如图3-20所示,试指出下列指令执行后,AX中的内容(即(AX)=?
)。
(1)MOVAX,2010H
M
(2)MOVAX,BX
(3)MOVAX,[1200H]
(4)MOVAX,[BX]
(5)MOVAX,1100H[BX]
(6)MOVAX,[BX][SI]
(7)MOVAX,1100H[BX+SI]
(8)LEAAX,[SI]
CPU1CPUCPUCPU
解:
(1)(AX)=2010H
(2)(AX)=0100H(3)(AX)=4C2AH(4)(AX)=3412H
(5)(AX)=4C2AH(6)(AX)=7856H(7)(AX)=65B7H(8)(AX)=0002H
3-5已知:
(SS)=0A2F0H,(SP)=00C0H,(AX)=8B31H,(CX)=0F213H,试画出下列指令执行到位置1和位置2时堆栈区和SP指针内容的变化示意图。
图中应标出存储单元的实际地址PA。
PUSHAX
PUSHCX;位置1
POPF;位置2
位置1栈顶
0A2F0H
SS
SP
0A2FBCH
00BCH
位置2栈顶
SP
0A2F0H
0A2FBEH
SS
00BEH
0A2FC0H
3-6 识别下列指令的正确性,对错误的指令,说明出错的原因。
(1) MOV DS, 100
(2) MOV [1000H], 23H
(3) MOV [1000H],[2000H]
(4) MOV DATA, 1133H
(5) MOV 1020H, DX
(6) MOV AX, [0100H+BX+BP]
(7) MOV CS, AX
(8) PUSH AL
(9) PUSH WORD PTR[SI]
(10) IN AL, [80H]
(11) OUT CX, AL
(12) IN AX, 380H
(13) MOV CL, 3300H
(14) MOV AX, 2100H[BP]
(15) MOV DS, ES
(16) MOV IP, 2000H
(17) PUSH CS
(18) POP CS
(19) LDS CS, [BX]
(20) MOV GAMMA, CS√
解:
(1)×,不能对段寄存器送立即数
(2)×,存储单元类型不正确
(3)×,MOV 不能实现两个存储单元间 直接传送
(4)×,段名不能作目的操作数
(5)×,立即数不能作目的操作数
(6)×,基址寄存器BX和BP只能使用其 中一个
(7)×,CS不能用作目的操作数
(8)×,堆栈操作作为字操作AL应改为 AX
(9)√
(10)×,80H为输入端口号不加方括号
(11)×,应输出到端口而不是通用寄存器
(12)×,用DX做间址寄存器380H应存 DX
(13)×,类型不匹配
(14)√
(15)×,两个段寄存器间不能直接传送
(16)×,IP不能直接用作目的操作数
(17)√
(18)×,CS不能做目的操作数
(19)×,目的操作数应是通用寄存器而不 能是段寄存器CS
(20)×,符号名不能作为目的操作数
1、试分别说明下列指令中源操作数和目的操作数采用的寻址方式:
答案:
目的操作数源操作数
(1)MOVAX,0FFFFH寄存器立即
(2)MOVES,AX寄存器寄存器
(3)XORCL,[100H]寄存器直接
(4)ADD[SI],DX寄存器间寄存器
(5)MOVES:
[2000H],CL直接寄存器
(6)SUB[BX+SI],1基+变立即
(7)ADCAX,[BX+SI+10H]寄存器相对基+变
(8)PUSHDS隐含寄存器
(9)CLD隐含
(10)CMP[BP+DI],CL基+变寄存器
2、若(BX)=1123H,(SI)=1968H,位移量=0313H,(DS)=1971H,试确定由这些寄存器和下列寻址方式产生的有效地址和物理地址:
答案:
EA物址
(1)直接寻址;0313H19A23H
(2)用BX的寄存器间接寻址;1123H1A833H
(3)用BX的寄存器相对寻址;1436H1AB46H
(4)用BX和SI的基址变址寻址;2A8BH1C19BH
(5)用BX和SI的相对基址加变址寻址。
2D9EH1C4AEH
3、连续执行以下指令,并在空格中填写执行指令的结果。
答案:
MOVAX,2060HAL=60HAH=20HCF=
MOVDS,AXDS=2060HAH=20HCF=
ADDAL,AHAL=80HAH=20HCF=0
INCAXAL=81HAH=20HCF=0
MOVDX,512DL=00HDH=02HCF=0
SUBAX,DXAL=81HAH=1EHCF=0
3-7已知存储器数据段中的数据如图3-21所示。
阅读下列两个程序段后,回答:
1.每个程序段的运行结果是什么?
2.两个程序段各占多少字节的内存,执行时间是多少?
M
解:
DS
NUM1
(1)LEASI,NUM1;4-2T+6T
MOVAX,[SI];2-10T
ADDAX,4[SI];3-9T+9T
MOV8[SI],AX;3-10T
ADDSI,2;3-4T
NUM2
MOVAX,[SI];2-10T
ADCAX,4[SI];3-9T+9T
MOV8[SI],AX;3-10T
总计23个字节,84个时钟周期运行结果如图中SUM所示。
(2)
SUM
MOVAX,NUM1;3-10T
ADDAX,NUM2;4-9T=6T
MOVSUM,AX;3-10T
MOVAX,NUM1+2;3-10T
ADCAX,NUM2+2;4-9T+6T
MOVSUM+2,AX;3-10T
总计20个字节,70个时钟周期。
可见
1.两个程序运行结果相同。
2.第二个程序占20个字节,比前者少3个字节,运行时间比前者少14个时钟周期。
3-11已知数据如图3-21所示,低位在前,按下列要求编写程序段:
1.NUM1和NUM2两个字数据相乘(均为无符号数),乘积放在SUM开始的单元。
解:
MOVAX,NUM1
MULWORDPTRNUM2
MOVSUM,AX
MOVSUM+2,DX
2.NUM1和NUM2两个字数据相乘(均为带符号数),乘积放在SUM开始的单元。
解:
MOVAX,NUM1
IMULWORDPTRNUM2
MOVSUM,AX
MOVSUM+2,DX
3.NUM1单元的字节数据除以13(均为无符号数),商和余数依次放入SUM开始的两个字单元。
解:
MOVAL,NUM1
MOVAH,0
MOVCL,13
DIVCL
MOVSUM,AX
4.NUM1字单元的字数据除以NUM2字单元的字,商和余数依次放入SUM开始的两个字单元。
MOVAX,NUM1
MOVDX,0
MOVCX,NUM2
DIVCX
MOVSUM,AX
MOVSUM+2,DX
3-13已知(AL)=0C4H,DATA单元中内容为5AH,写出下列每条指令单独执行后的结果。
1ANDAL,DATA;(AL)=40H
2ORAL,DATA;(AL)=0DEH
3XORAL,DATA;(AL)=9EH
4NOTDATA;(DATA)=0A5H
5ANDAL,0FH;(AL)=04H
6ORAL,01H;(AL)=0C5H
7XORAL,0FFH;(AL)=3BH
8TESTAL,80H;(AL)=0C4H
所有指令执行后都对标志寄存器有影响。
3-19写出下面指令序列完成的数学计算是什么?
解:
MOVCL,3;(CL)←3
SHLAX,CL;(AX)←(AX)×8
SHLBL,CL;(BL)←(BL)×8
SHLCX,CL;(CX)←(CX)×8,此时(CL)=18H
SHLDH,CL;DH算术左移24位后(DH)=0,CF=0
3-27试编写一个程序段,能完成下列数学表达式的功能。
-1(X≤-1)
X=0(-1 1(X≥1) 解: 设带符号数(WORD)在AX中,程序段如下 GETX: TESTAX,AX JNSTZERO MOVAX,0FFFFH JMPTEND TZERO: JZTEND MOVAX,1 TEND: RET 4-2计算下列表达式的值(设A1=50,B1=20,G1=2) 解: 1.A1*100+B1=50*100+20=5020 2.A1MODG1+B1=50MOD2+20=20 3.(A1+2)*B1-2=(50+2)*20-2=1038 4.B1/3MOD5=20/3MOD5=1 5.(A1+3)*(B1MODG1)=(50+3)*(20MOD2)=0 6.A1GEG1=50GE2=11111111B 7.B1AND7=20AND7=4 8.B1SHL2+G1SHR1=20SHL2+2SHR1=81 4-3已知数据段定义如下,设该段从03000H开始: DSEGSEGMENT ARRAY1DB2DUP(0,1,? ) ARRAY2DW100DUP(? ) FHZEQU20H ARRAY3DB10DUP(0,1,4DUP (2),5) DSEGENDS 试用分析算符OFFSET,LENGTH,SEG,TYPE求出ARRAY1,ARRAY2,ARRAY3的段、偏移量和类型,以及它们的LENGTH。 解: 求段: SEGARRAY1=0300H SEGARRAY2=0300H SEGARRAY3=0300H 求偏移量: OFFSETARRAY1=0000H OFFSETARRAY2=0006H OFFSETARRAY3=00CEH 求类型: TYPEARRAY1=1 TYPEARRAY2=2 TYPEARRAY3=1 求LENGTH: LENGTHARRAY1=2 LENGTHARRAY2=100 LENGTHARRAY3=10 4-16试编写一程序,把X和Y中的大者存于BIG单元,若X=Y,则把其中之一存入BIG单元。 解: DATASEGMENT XDW? YDW? BIGDW? DATAENDS ;------------------------------ CODESEGMENT ASSUMECS: CODE,DS: DATA MAINPROCFAR START: PUSHDS MOVAX,0 PUSHAX MOVAX,DATA MOVDS,AX MOVAX,X CMPAX,Y JNCSTOBIG;无符号数判断,有符号数用JGE MOVAX,Y STOBIG: MOVBIG,AX RET STARTENDP CODEENDS ENDSTART 【例2】数据块间的搬移程序。 程序要求把内存中一数据块(称为源数据块)传送到另一存储区(称为目的数据块)。 图4-11给出源数据块和目的数据块在存储器中可能的3种情况: 两块分离和有部分重叠。 对于两个数据块分离的情况,如图4-11(a),数据的传送从数据块的首址开始,或者从数据块的末址开始均可。 但对于有部分重叠的情况,则要加以分析,否则重叠部分部分会因“搬移”而遭破坏,从图4-11(b)和(c)可以得出以下结论: 当源数据块首址<目的块首址时,从数据块末地址开始传送数据。 当源数据块首址>目的块首址时,从数据块首地址开始传送数据。 流程图如图4-12所示, ┇ ┇ ┇ ┇ ┇ ┇ ┇ ┇ ┇ ┇ ┇ 00000H00000H00000H 源数 据块源数目的 据块数据块 目的源数 目的数据块据块 数据块 FFFFFHFFFFFHFFFFFH (a)(b)(c) 图4-11数据块之间的三种情况 开始 SI←源数据块首址 DI←目的数据块首址 CX←搬家字节数 (SI)>(DI)? N Y SI←(SI)+(CX)-1 DI←(DI)+(CX)-1 (DI)←[(SI)] SI←(SI)+1 DI←(DI)+1 SI←(SI)-1 DI←(DI)-1 DI←[(SI)] DI←[(SI)] DI←[(SI)] (CX)=0? (CX)=0? 结束 N N Y Y 图4-12 程序如下: STACKSEGMENT STACK DW 64 DUP(? ) STACKENDS CODESEGMENT ASSUME CS: CODE,SS: STACK START: MOV CX,0010H;取搬家字节数(16个字节) MOV SI,3100H;取源块首址 MOV DI,3200H;取目的块首址 CMP SI,DI;从首址开始? JA A2;是,转移 ADD SI,CX;否,以末地址开始搬家 ADD DI,CX DEC SI DEC DI A1: MOV AL,[SI];从末址开始搬家 MOV [DI],AL DEC SI DEC DI DEC CX JNE A1 JMP A3 A2: MOV AL,[SI];从首址开始搬家 MOV [DI],AL INC SI INC DI DEC CX JNE A2 A3: MOV AH,4CH INT 21H CODEENDS END START 6、若自6000H单元开始有1000个数(字节),试针对下面情况编程将它们中的最小值、最大值找出来,并分别存放在5000H和5001H字节单元中。 (1)这1000个数为无符号数。 (2)这1000个数为带符号数。 程序如下: DATASEGMENT ORG6000H BUFFERDBX1,X2,…,X1000;自定义N个无(带)符号数 COUNTEQU$-BUFFER MAXEQU5000H;保存最大值 MINEQU5001H;保存最小值 DATAENDS CODESEGMENT ASSUMECS: CODE,DS: DATA MAINPROC START: MOVAX,DATA MOVDS,AX MOVCX,COUNT LEABX,BUFFER;首地址→BX MOVAL,[BX];AL←最大值初值 MOVDL,[BX];DL←最小值初值 DECCX;循环次数减1 AGAIN: INCBX CMPAL,[BX];比较 JNC(JGE)NEXT1;若最大值≥[BX],则转至NEXT1 MOVAL,[BX];AL←保存最新的最大值 JMPNEXT2 NEXT1: CMPDL,[BX];比较 JC(JL)NEXT2;若最小值<[BX],则转至NEXT2 MOVDL,[BX];DL←保存最新的最小值 NEXT2: LOOPAGAIN;循环 MOVMAX,AX;MAX←存最大值 MOVMIN,DX;存最小值→MIN MOVAH,4CH INT21H;返回DOS MAINENDP CODEENDS ENDSTART 4-22试用串操作指令将一个数组BLOCK(均为字节数)中的奇数和偶数分开存放。 解: 1设数组BLOCK在数据段,程序运行后把数组中的奇数存放在数据段数组PODATA、偶数存放在数据段数组PEDATA中。 2程序分两次扫描,第一次搜索奇数,并存放于PODATA中、第二次搜索偶数,并存放于PEDATA中。 3两次搜索均用FOR语句结构。 DATASEGMENT BLOCKDB1,2,3,4,5,6,7,8,9,90,21,33 COUNTEQU
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 课后 习题 参考答案