何小海版微机原理与接口技术部分课后习题.docx
- 文档编号:26260968
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:28
- 大小:276.97KB
何小海版微机原理与接口技术部分课后习题.docx
《何小海版微机原理与接口技术部分课后习题.docx》由会员分享,可在线阅读,更多相关《何小海版微机原理与接口技术部分课后习题.docx(28页珍藏版)》请在冰豆网上搜索。
何小海版微机原理与接口技术部分课后习题
串操作指令特点:
1.可用前缀使其重复操作;
2.每操作一次自动修改SI和DI内容,当DF=0时为增量,DF=1为减量;
3.所有源操作数地址放在SI中,在DS段,串长≤64K;
所有目标操作数地址放在DI中,在ES段,串长≤64K;
4.用重复前缀时,如果条件满足且CX≠0时重复,每重复一次
CX←CX–1,否则结束重复;
5.重复操作时IP不变,中断返回后继续操作。
使用串操作指令时注意:
1.SI←源串首(末)址
DI←目标串首(末)址;
2.CX←串长度;
3.设DF值;
4.选重复前缀;
5.使用条件重复前缀时,判断结束条件(即是CX=0还是ZF=0/1结束)
指令执行时间:
计算机中的计时单位:
(1).指令周期:
执行一条指令所花的时间;
(2).总线周期:
CPU每访问一次内存或I/O端口所花的时间;
(3).时钟周期(T周期):
计算机主频的倒数,用T表示,即T=1/F
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章:
汇编语言程序设计
1.本章学习要求
(1).应熟悉的内容:
汇编语言的格式、语句行的构成。
(2).应掌握的内容:
指示性语句、指令性语句及相互区别、作用。
(3).应熟悉掌握的内容:
各种结构的汇编语言程序设计的方法,特别是分支结构和循环结构程序的特点和设计。
2.本章重点难点分析:
伪指令、程序设计、子程序中参数通过堆栈传递较难。
通过看例题、做作业和上机实习解决。
如:
汇编程序是将由助记符号所编写的汇编语言源程序转换为计算机能直接执行的目标程序的软件,即:
汇编语言源程序
.ASM
MASM.OBJLINK.EXE
上图可看出汇编语言源程序(扩展名为.ASM)经过“汇编程序”汇编后生成二进制编码的目标程序(.OBJ),再经过“连接程序”生成可执行文件(.EXE)便可以上机执行或使用DEBUG程序进行调试。
而指示性语句(伪指令)是告诉汇编程序如何将汇编语言源程序转换为目标程序的语句,在可执行的目标程序生成后的软件中,伪指令是看不见的。
如:
SEGMENT是表示一个段的开始,ENDS表示段结束;
而ASSUME告诉汇编程序,将某一个段寄存器设置为存放某一个逻辑段的段址,即明确指出源程序中的逻辑段与物理段之间的关系。
当汇编程序汇编一个逻辑段时,即可利用相应的段寄存器寻址该逻辑段中的指令或数据。
也就是说ASSUME是建立一个段寄存器与段名的对照表,汇编时使汇编程序能找到本段属于哪个段寄存器,在此对照表中所出现的存储器操作数,寻址时只需给出偏移地址,否则还应给出段地址。
关键字NOTHING表示取消前面用ASSUME伪操作对这个段寄存器的设置。
使用ASSUME语句,仅仅告诉汇编程序关于段寄存器与定义段之间的对应关系。
但它并不意味着汇编后这些段地址已装入了相应的段寄存器中,这些段地址的真正装入,仍需要用程序来完成,且这4个段寄存器的装入略有不同。
3.本章典型例题分析:
【例1】若从0200H单元开始有100个数,编一个程序检查这些数,正数保持不变,负数都取补后送回。
DATASEGMENT
ORG0200H
STRINGDB4DUP(-55,5DUP(6,-10,-8,9),2DUP(-4,0))
DATAENDS
STACKSEGMENTPARASTACK'STACK'
DB100DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA,SS:
STACK
STARTPROCFAR
BEGIN:
PUSHDS
MOVAX,0
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVCX,100
LEASI,STRING
AGAIN:
MOVAL,[SI]
ANDAL,AL
JNSOVER;AL>0,跳至OVER
NEGAL;AL<0,对AL求补
OVER:
MOV[SI],AL
INCSI
LOOPAGAIN
INT3
RET
STARTENDP
CODEENDS
ENDBEG
【例2】数据块间的搬移程序。
程序要求把内存中一数据块(称为源数据块)传送到另一存储区(称为目的数据块)。
图4-11给出源数据块和目的数据块在存储器中可能的3种情况:
两块分离和有部分重叠。
对于两个数据块分离的情况,如图4-11(a),数据的传送从数据块的首址开始,或者从数据块的末址开始均可。
但对于有部分重叠的情况,则要加以分析,否则重叠部分部分会因“搬移”而遭破坏,从图4-11(b)和(c)可以得出以下结论:
当源数据块首址<目的块首址时,从数据块末地址开始传送数据。
当源数据块首址>目的块首址时,从数据块首地址开始传送数据。
流程图如图4-12所示,
00000H00000H00000H
源数
据块源数目的
据块数据块
目的源数
目的数据块据块
数据块
FFFFFHFFFFFHFFFFFH
(a)(b)(c)
图4-11数据块之间的三种情况
开始
SI←源数据块首址
DI←目的数据块首址
CX←搬家字节数
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)]
结束
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
4.本章作业(带答案):
2、若在自2000H单元开始有一个1000个字节的数据块,要把它传送到自2200H开始的存储区中去,用以下三中方法,分别编制程序:
(1)不用串操作指令。
(2)用单个传送的串操作数据传送指令。
(3)用带重复前缀的串操作数据传送指令。
程序如下:
DATASEGMENT
ORG2000H
N1DBn1,n2,…n1000
N2EQU2000H+1000–1
CONEQU1000
DATAENDS
STACKSEGMENTSTACK‘STACK’
DW100DUP(?
)
STACKENDS
CODESEGMENT
ORG1000H
ASSUMECS:
CODE,DS:
DATA,ES:
DATA,SS:
STACK
MAINPROC
START:
MOVAX,DATA
MOVDS,AX
MOVES,AX
LEASI,N1+1000–1;
(2);(3)
MOVDI,N2
MOVCX,CON;STD
L1:
MOVAL,[SI];MOVSB;REPMOVSB
MOV[DI],AL
DECSI
DECDI
LOOPL1;LOOPL1
MOVAH,4CH
INT21H
MAINENDP
CODEENDS
ENDSTART
3、若在存储器中有数a、b、c、d(它们连续存放),编写一个程序实现:
((a*10+b)*10+c)*10+d(假设和小于65535)
程序如下:
DATASEGMENT
BCMDWa,b,c,d
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
BCD1PROCFAR
START:
MOVAX,DATA
MOVDS,AX
LEASI,BCM
MOVCX,3
MOVAX,[SI]
L1:
INCSI
SHLAX,1;(AX)←(AX)×2
MOVBX,AX;(BX)←(AX)×2
SHLAX,1;(AX)←(AX)×4
SHLAX,1;(AX)←(AX)×8
ADDAX,BX;(AX)←(AX)×10
ADDAX,[SI]
LOOPL1
INCSI
MOV[SI],AX
MOVAH,4CH
INT21H
BCD1ENDP
CODEENDS
ENDSTART
4、已知数组A包含10个互不相等的整数,数组B包含15个互不相等的整数。
试编写一程序,将既在A中出现又在B中出现的偶数存放在数组C中。
程序如下:
DATASEGMENT
ORG0500H
DATAADWA1,A2,…A10
DATABDWB1,B2,…B15
COUNTAEQU10
COUNTBEQU15
DATACDW10DUP(?
)
DATAENDS
STACKSEGMENTSTACK'STACK'
DB100DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA,SS:
STACK
STARTPROCFAR
BEGIN:
PUSHDS
MOVAX,0
PUSHAX
MOVAX,DATA
MOVES,AX
MOVDS,AX
LEABX,DATAC;(BX)=数组C首址
CLD
LEASI,DATAA;(SI)=数组A首址
MOVDX,COUNTA;(DX)=数组A元素个数
LP1:
LODSW;取数组A元素到AX
LEADI,DATAB;(DI)=数组B首址
MOVCX,COUNTB;(CX)=数组B元素个数
REPNESCASW;(AX)=数组B元素?
不同重复
JNZNEXT;B中无此A元素转NEXT
TESTAX,01H
JNZNEXT
MOV[BX],AX;有A元素且是偶数存入C中
INCBX
INCBX
NEXT:
DECDX
JNZLP1
INT3
STARTENDP
CODEENDS
ENDBEGIN
5、若自STRING开始有一个字符串(以‘$’号作为字符串的结束标志),请编程查找此字符串中有无字符‘#’,有多少个‘#’,并将个数存放在NUMBER字单元中,且把每一个‘#’字符所存放的偏移地址放到自POINTER开始的连续存储字单元中。
程序如下:
DATASEGMENT
ORG0100H
STRINGDB'593#6707#84BK47#68H#8K8#497$'
NUMBERDB?
POINTERDW50DUP(?
)
DATAENDS
STACKSEGMENTPARASTACK'STACK'
DB100DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA,SS:
STACK
STARTPROCFAR
BEGIN:
PUSHDS
MOVAX,0
PUSHAX
MOVAX,DATA
MOVES,AX
MOVDS,AX
LEASI,STRING
LEADI,POINTER
XORBL,BL;BL清0
AGAIN:
MOVAL,[SI]
CMPAL,’$’;与’$’比较
JZSTOP
CMPAL,’#’
JNZNEXT
MOVDX,[SI]
MOV[DI],DX
INCDI
INCDI
INCBL
NEXT:
INCSI
JMPAGAIN
STOP:
LEADI,NUMBER
MOV[DI],BL
INT3
STARTENDP
CODEENDS
ENDBEGIN
一、8282(地址锁存器)的作用:
在T1时锁存地址信息。
二、8284(时钟发生器)的作用:
1.提供系统时钟CLK
2.同步RESET
3.同步READY
4.提供其他系统时钟
三、8286(总线缓冲器)的作用:
1.数据缓冲
2.增强总线负载能力
3.控制数据传送方向
四、8288(总线控制器)的作用:
在8088/8086工作在最大模式时,根据S2~S0的信号,输出系统各种控制信号
.本章作业:
(带答案)
1.若用4K×1位的RAM芯片组成16K×8位的存储器,需要多少芯片(32片)?
A19~A0地址线中哪些参与片内寻址(A0~A13)?
哪些参与作芯片组的片选择信号(A14~A19)?
2.下列RAM各需要多少条地址线进行寻址?
多少条数据I/O线?
地址线数据线地址线数据线
(1)512×4;94(5)4K×1;121
(2)1K×4;1046)16K×4;144
(3)1K×8;108(7)64K×1;161
(4)2K×1;111(8)256K×4;184
3.
使用下列RAM芯片,组成所需的存储容量,各需多少RAM芯片?
各需多少RAM芯片组?
共需多少寻址线?
每块片子需多少寻址线?
片数组数总线数片内线
(1)512×4的芯片,组成8K×8的存储容量;3216139
(2)1024×1的芯片,组成32K×8的存储容量;256321510
(3)1024×4的芯片,组成4K×8的存储容量;841210
(4)4K×1的芯片,组成64K×8的存储容量;128161612
4.若用2114芯片组成2KBRAM,地址范围为3000H~37FFH,问地址线应如何连接?
(假设CPU只有16条地址线,8根数据线,可选用线选法和全译码法)
CBA
A15A14A13A12A11A10A9A8A7~A0
001100000~0
001101111~1
第三部分综合练习题
1、名词解释∶
•ASSUME,SEGMENT,CPU,BCD码,ASCII码,RAM,EPROM,IP,SP,CS,DS,开中断,总线周期,T周期,段寄存器,字节、字,汇编程序,堆栈,字长,中断,伪指令,指示性语句、指令性语句、OFFSET、物理地址、逻辑地址、ROM、ORG、AB、DB、CB、指令周期、全译码、局部译码、内存、外存┅
综合练习题答案如下:
1、名词解释(略)
3、判断下列指令正误,如果错误请指出原因。
答案:
(1)MOVCL,259×数据不匹配
(2)XORBL,BH√
(3)ADD100,AL×立即数不能为目标操作数
(4)MOVSS,2200H×立即数不能直接送基寄存器
(5)POPCS×POP不能对CS
(6)XCHGCX,DX√
(7)INAL,260H×端口地址超过256,应用DX间接寻址
(8)MOV[BP+SI],[BX]×源和目标操作数不能同时为存储器操作数
(9)LEABX,AX×源操作数应为存储器操作数
(10)MOVAX,10H[BX]√
4、问答题:
(1)何为逻辑地址?
何为物理地址?
它们俩者之间有何关系?
答:
物理地址是存储器的实际地址,一个存储单元的物理地址是惟一,逻辑地址为程序设计中所使用的存储器地址,它由段基址和地内偏移地址两部份构成,物理地址=段基址×16+偏移地址,可见一个存储单元的逻辑地址可以有若干个。
(2)什么是总线周期?
一个基本的总线周期由多少个T构成?
答:
CPU每访问一次总线所花的时间称为总线周期,一个基本的总线周期由四个T周期构成。
(3)在使用串操作指令(如MOVS)前应注意些什么?
答:
使用串操作指令时应注意以下五点:
1·将源串的首(末)地址送入SI中、将目标串的首(末)地址送入DI中;2·将串长度送入CX中;3·设置DF的值;4·选择适当的重复前缀;5·判断串操作指令的结束条件。
(4)8088CPU有多少根地址线?
多少根数据线?
它最大直接寻址范围是多少?
一次对外数据传送多少BIT二进制数?
答:
8088CPU有20根地址线,8根数据线,它最大直接寻址范围是1MB,一次对外数据传送8BIT二进制数。
(5)微机中的基本计时有哪几种?
它们之间的有何关系?
答:
微机中的基本计时有:
指令周期;总线周期;时钟周期。
一个指令周期由若干时钟周期或总线周期构成,
一个基本的总线周期由四个时钟周期构成,时钟周期是最小的计时单位,它是微机主频的倒数。
(6)8086/8088微处理器内部有哪些寄存器?
其主要作用是什么?
答:
8086/8088微处理器内部有:
AX、BX、CX、DX、SI、DI、CS、DS、SS、ES、IP、SP、FR、BP存放数据、偏移地址、段基址以及标志。
5、自1000H单元开始,有100个无符号数(字节),编写程序计算这100个数的和,并把和存放在1971H和1972H单元,且高位存放在1972H单元。
程序如下:
DATASEGMENT
ORG1000H
N1DBn1,n2,…n100
N2EQU1971H
CONEQU100
DATAENDS
STACKSEGMENTSTACK‘STACK’
DW100DUP(?
)
STACKENDS
CODESEGMENT
ORG2000H
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
MAINPROC
START:
MOVAX,DATA
MOVDS,AX
LEASI,N1
MOVCX,CON
XORAX,AX
L1:
ADDAL,[SI]
ADCAH,0
INCSI
LOOPL1
MOVN2,AL
MOVN2+1,AH
MOVAH,4CH
INT21H
MAINENDP
CODEENDS
ENDSTART
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(JG
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 小海 微机 原理 接口 技术 部分 课后 习题