微机原理课后习题参考答案简版Word下载.docx
- 文档编号:5220113
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:49
- 大小:196.80KB
微机原理课后习题参考答案简版Word下载.docx
《微机原理课后习题参考答案简版Word下载.docx》由会员分享,可在线阅读,更多相关《微机原理课后习题参考答案简版Word下载.docx(49页珍藏版)》请在冰点文库上搜索。
运算结构由奇数个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栈顶
0A2FBEH
00BEH
0A2FC0H
3-6
识别下列指令的正确性,对错误的指令,说明出错的原因。
(1)
MOV
DS,
100
(2)
[1000H],
23H
(3)
[1000H],[2000H]
(4)
DATA,
1133H
(5)
1020H,
DX
(6)
AX,
[0100H+BX+BP]
(7)
CS,
AX
(8)
PUSH
AL
(9)
WORD
PTR[SI]
(10)
IN
AL,
[80H]
(11)
OUT
CX,
(12)
380H
(13)
CL,
3300H
(14)
2100H[BP]
(15)
ES
(16)
IP,
2000H
(17)
CS
(18)
POP
CS
(19)
LDS
[BX]
(20)
GAMMA,
CS√
(1)×
,不能对段寄存器送立即数
(2)×
,存储单元类型不正确
(3)×
,MOV
不能实现两个存储单元间
直接传送
(4)×
,段名不能作目的操作数
(5)×
,立即数不能作目的操作数
(6)×
,基址寄存器BX和BP只能使用其
中一个
(7)×
,CS不能用作目的操作数
(8)×
,堆栈操作作为字操作AL应改为
(9)√
(10)×
,80H为输入端口号不加方括号
(11)×
,应输出到端口而不是通用寄存器
(12)×
,用DX做间址寄存器380H应存
(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
ADCAX,4[SI];
总计23个字节,84个时钟周期运行结果如图中SUM所示。
(2)
SUM
MOVAX,NUM1;
ADDAX,NUM2;
4-9T=6T
MOVSUM,AX;
MOVAX,NUM1+2;
ADCAX,NUM2+2;
4-9T+6T
MOVSUM+2,AX;
总计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
4.NUM1字单元的字数据除以NUM2字单元的字,商和余数依次放入SUM开始的两个字单元。
MOVDX,0
MOVCX,NUM2
DIVCX
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)×
SHLCX,CL;
(CX)←(CX)×
8,此时(CL)=18H
SHLDH,CL;
DH算术左移24位后(DH)=0,CF=0
3-27试编写一个程序段,能完成下列数学表达式的功能。
-1(X≤-1)
X=0(-1<
X<
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)]
(CX)=0?
结束
图4-12
程序如下:
STACKSEGMENT STACK
DW 64 DUP(?
STACKENDS
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 CX
JNE A1
JMP A3
A2:
从首址开始搬家
INC SI
INC DI
JNE A2
A3:
MOV AH,4CH
INT 21H
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:
MAINPROC
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
AL←保存最新的最大值
JMPNEXT2
NEXT1:
CMPDL,[BX];
JC(JL)NEXT2;
若最小值<
[BX],则转至NEXT2
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语句结构。
BLOCKDB1,2,3,4,5,6,7,8,9,90,21,33
COUNTEQU
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 课后 习题 参考答案