微机原理及应用教学大纲文档格式.docx
《微机原理及应用教学大纲文档格式.docx》由会员分享,可在线阅读,更多相关《微机原理及应用教学大纲文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
第七章计算机总线技术
七、几点说明
推荐教材和主要参考书:
推荐教材:
主要参考书:
1.《微机原理及接口技术》戴梅萼清华大学出版社
2.《微型计算机原理及应用》孙家启安徽大学出版社
《微型计算机原理及应用》复习
作业一
1.在I/O接口电路中,按主机与外设间传送的信息类型,端口可分为哪几类?
CPU对这些端口实行读操作还是写操作?
答:
I/O端口分为:
数据口,状态口,控制口。
CPU可对数据口进行读或写操作,对状态口进行读操作、对控制口进行写操作
2.与并行通信相比较,串行通信有什么特点?
(1)串行通信适宜于远程数据传送;
(2)串行通信通常传送速度较慢;
(3)串行通信的费用较低,传输线少,可借用电话网络来实现远程通信.
3.8086/8088CPU响应任何一种中断时,都会自动的将IF和TF标志清零,其目的是什么?
将IF标志清零的目的是在本次执行中断服务程序的过程期间,不要再响应其他的可屏蔽中断;
将TF标志清零的目的是不要单步执行中断服务程序。
4.CPU响应多种中断时,都要自动地保护断点,为什么?
“保护断点”是指主程序中当前被中断的指令的下一条指令所存放的存储单元的逻辑地址,(称为断口地址,或断点地址,简称断点)包括段值和段内偏移量两部分(既CS和IP中的内容)作为返回地址被自动地压人堆栈中保护起来。
这样做的目的是使中断服务程序运行结束时,使程序能返回到主程序的断点处去继续执行。
5.当某一中断发生时,CPU如何能找到相应的中断向量?
当某一中断发生时,CPU只有在中断向量表中找准找到相应的中断向量,即相应的中断服务程序的人口地址,才能去执行相应的中断服务程序。
若能找准存放该中断向量的4个存储单元的地址,就意味着找到了该中断向量。
若把存放每个中断向量的4个单元的第一个单元的地址叫做向量地址,由于中断向量是按中断类型码n从0~255的顺序存放的,故向量地址与中断类型码有如下关系:
向量地址=0000:
N×
4。
如:
0号中断的向量地址为0000:
0000,表示0号中断的中断向量存于地址为0000:
0000开始的4个单元中,1号中断的向量地址为0000:
0004H,表示1号中断的中断向量存于地址为以0000:
0004H开始的4个单元之中,等等。
因此,任何一个中断的到来,CPU只要能得到它的中断类型号,就能找到它的中断向量。
把它的偏移量传送入IP,段值送入CS,即能执行相应的中断服务程序。
6.分别指出下列指令中源操作数的寻址方式
A.MOVSI,100立即寻址
B.MOVCX,DATA[SI]寄存器相对寻址
C.MOV[SI],AX寄存器寻址
D.ADDAX,[BX][DI]基址加变址寻址
E.POPHF寄存器寻址
7.什么是中断?
什么是中断向量?
什么是中断向量表?
INT24在中断向量表的什么位置?
一个完整的中断过程有哪几个步骤?
中断是指CPU在正常运行时,由于内部、外部事件或由程序的预先安排引起的CPU中断正在运行的程序,转而到内部、外部事件预先安排的服务程序(中断子程序)中去执行。
中断向量是中断处理子程序的入口地址,每个中断类型对应一个中断向量。
中断向量表是中断类型码和与此类型码相应的中断服务程序之间的一个连接链。
每一个中断服务程序入口地址的IP和CS成为一个中断指示字或中断向量。
24*4=96=60HINT24在中断向量表的0000:
0060H~0000:
0063H处。
一个完整的中断过程包括中断请求、中断排队、中断响应、中断处理和中断返回五个步骤。
8.简述8086CPU由哪些寄存器组成。
4个16位的通用寄存器:
AX累加器、BX基址寄存器、CX计数器、DX数据寄存器;
4个16位的专用寄存器:
SP堆栈指针寄存器、BP基址指针寄存器、SI源变址寄存器、DI目的变址寄存器;
一个标志寄存器FR;
4个16位的段地址寄存器:
CS代码段寄存器、DS数据段寄存器、SS堆栈段寄存器、ES扩展段寄存器;
一个16位的指令指针寄存器IP
9.简述8086/8088系统中为什么要使用地址锁存器?
为获取并保持地址信息,系统中要使用地址锁存器。
因为8086/8088系统中低16位地址线与数据线分时复用,高4位地址线与状态线分时复用,在每个总线周期的T1状态期间,CPU通过20位地址线向外发送地址,然后在T2、T3、T4状态时传送数据或状态信息,而在一个完整的总线周期(T1~T4)内,被访问的存储器或I/O端口始终需要完整的地址信息,这就要求在T1状态时地址有效期间由地址锁存器将地址信号锁存并保持,以供被访问的存储器或I/O端口在整个总线周期内使用。
10.已知SDRAM6264的片容量是8K×
8位,问它的外部引脚中含多少根地址线和数据线?
从该芯片的容量可知,其内部含有8192个(8*1024)存储单元,每个单元能存放一个字节数据,因为13根地址线才能对8192个存储单元寻址(213=8192),所以它有13根地址线,8位数据线。
因为在读写每一个存储单元的8位二进制数时需要8位数据线。
作业二
1、阅读如下程序段,回答提出的问题。
MOVAX,3456
XCHGAX,BX
SUBAX,BX
JEDONE
KK:
ADDAX,BX
...
DONE:
该程序段执行完JEDONE语句后,AX=0,ZF=1,IP=DONE。
2请在程序段的每一空框内填入一语句(不得修改其它语句),以实现下述功能:
将字变量VARM1中的非零数据左移到最高位为“1”止,左移次数存入字节变量VARB中,左移后的结果存入字变量VARW中。
MOVBL,0MOVAX,VARW1ADDAX,0JSDONEGOON:
INCBLADDAX,AXJNSGOONDONE:
MOVVARW,AX
MOVVARR,BL3为什么说8088CPU为准16为微处理器,而8086CPU为16为微处理器?
8088CPU的内部寄存器均为16位,可一次完成16位二进制的算术及逻辑运算,但外部数据总线为8位。
而8086则内部寄存器及外部数据总线均为16位,可一次完成16位二进制的算术及逻辑运算。
4已知,(DS)=0120H,(SS)=2000H,(ES)=0FF2H,(BX)=1000H,(BP)=2000H,(SI=3110H,(SP)=1004H,试写出下面每条指令中存储器操作数的物理地址。
(1)MOVAL,[BX+SI+9000H]DS*16+BX+SI+9000H1E310H
(2)MOVBX,[BP-18]SS*16+BP-1821FEEH
(3)ADDSS:
[BX+SI-3],ALSS*16+BX+SI-32410DH
(4)SUB[SI+BP],CXSS*16+SI+BP25110H
(5)PUSHFSS*16+SP-221002H
堆栈指针寄存器SP的初值位1000H,AX=2000H,BX=3000H,试问:
(1)执行指令PUSHAX后,SP=0FFEH
(2)再执行指令PUSHBX和POPAX后,SP=0FFEH,AX=3000H,BX=3000H。
5程序段执行完后,AX,BX,CX,DX寄存器的内容分别是什么?
START:
MOVAX,01H
MOVBX,02H
MOVCX,03H
MOVDX,04H
NEXT:
INCAX
ADDBX,AX
SHRDX,1
LOOPNEXT
AX=4BX=08HCX=0DX=0.
6判断下面8086汇编程序执行结果:
MOVAX,0FFFDH
MOVBX,8000H
ADDAX,BX
HLT
执行结果
AX=7FF0HBX=8000H
对应标志位
ZF=0SF=0OF=1CF=1PF=0AF=0
7.下面程序段执行完以后,BX的内容是什么?
MOVBX,00FFH
ANDBX,0FFFH
ORBX,0F0FH
XORBX,00FFH
BX=0F00H
8下列程序段完成什么工作?
DAT1DB30DUP(?
)
DAT2DB10DUP(?
┇
MOVCX,10
MOVBX,20
MOVSI,0
MOVDI,0
NEXT:
MOVAL,DAT1[BX][SI]
MOVDAT2[DI],AL
INCSI
INCDI
LOOPNEXT
把DAT1+20存储单元开始的10个字节搬到DAT2开始的连续10个存储单元中。
9.设8086系统中,中断请求信号采用边沿触发方式,单片8259A,中断类型码高5位为01010,中断源接在IR2上,普通全嵌套方式,非自动结束方式,缓冲方式。
(设:
ICW1口地址为80,ICW2、ICW3、ICW4口地址为81)编写初始化程序。
MOVAL,13H
OUT80H,ALICW1
MOVAL,52H
OUT81H,ALICW2
MOVAL,09H
OUT81H,ALICW4
10.已知(AX)=0120H,(BX)=2000H,(CX)=0FF2H,(DS)=1000H,(ES)=2000H,存储器中的数据如图所示。
请写出下列指令单独执行时,对寄存器和存储器内容将产生什么影响?
(1)MOVAX,[BX](5)LDSDI,[l000H]
(2)MOVAX,ES:
[BX](6)LESSI,[0FFEH]
(3)MOV[BX],CX(7)XCHGAX,BX
(4)LEACX,[BX](8)XLAT
该题实际上要求回答8条指令分别执行时的结果。
(l)MOVAX,[BX]
源操作数的物理地址为:
10000H十2000H=12000H
执行结果(AX)=[12000H]=9745H
(2)MOVAX,ES:
[BX]
ES:
[BX]为段超越情况,源操作数物理地址为:
20000H+2000H=22000H
执行结果:
(AX)=[22000H]=4433H
(3)MOV[BX],CX
目的操作数的物理地址为:
10000H+2000H=12000H
故[12001H]=0FH,[12000H]=0F2H
原来的内容不再是97H及45H了。
(4)LEACX,[BX]
源操作数的有效地址为BX故(CX)=(BX)=2000H
(5)LDSDI,[1000H]
源操作数的物理地址是l0000H+l000H=11000H,故
(DS)=[1l002H]=l000H
(DI)=[11000H]=25l0H
(6)LESSI,[0FFEH]
源操作数的物理地址为l0000H+0FFEH=l0FFEH,故
(ES)=[11000H]=2510H
(SI)=[l0FFEH]=0F45H
(7)XCHGAX,BX.
执行前(AX)=0l20H,(BX)=2000H
执行后(AX)=2000H,(BX)=0120H
(8)XLAT;
(AL)=「BX+AL」=[2000H+0020H]
=[2020H]
有效地址EA=2020H时,物理地址为12020H,故执行XLAT指令后,(AL)=56H。
11.写出四条指令,分别能将AX寄存器清零。
①MOVAX,0
②ANDAX,0
③SUBAX,AX
④XORAX,AX
12下列指令是否有错?
有则指出错误所在:
(1)MOVDS,117CH错,立即数不能直接送段寄存器
(2)MOV[BX],[28A0H]错,双操作数指令的两个操作数不能同时在内存中
(3)MOVCS,AX错,不能用指令直接往CS寄存器中传送数据
(4)MOVDS,ES错,两个段寄存器之间不能传送数据
(5)MOVAL,DX错,类型不匹配,寄存器长度不同
(6)MOVAX,1000[BX]对
(7)MOVBX,[AX]错,AX寄存器不能用于间接寻址
(8)MOVAL,C8H错,以字母开头的十六进制数前面要加前导0
(9)MOVAX,00F1错,十六进制数应加上后缀0
(10)MOVAX,[SI-10]对
作业三、
1址为DATAB开始的80个单元中,存放某班80个学生的某课程成绩,要求:
统计>
=90分、80~89分、70~79分、60~69分、60分以下的人数,结果存放在BTRX开始的5个单元中求平均成绩,结果存放在LEVEL中。
解:
寄存器使用分配:
90分以上在DH,80分以上在DL,70分以上在BH,60分以上在BL,60分以下在AH,总分、均分都在[DI]。
DATSEGMENT
CONTDB10
DATADB30,65,99,80,75,89,100,45,60,70
BUFFERDB?
?
LEVELDB?
?
DATENDS
XORAH,AH
XORDX,DX;
统计结果清零
XORBX,BX;
LEASI,DATA
LEADI,LEVEL
MOVCL,CONT;
总人数送循环计数器CX
goon:
MOVAL,[SI];
读原始数据
ADC[DI],AL;
累加总分
ADC[DI+1],0;
计算进位
CMPAL,90
JLPP8;
不高于90分者转PP8
INCDH;
90--100分的人数加一
JMPSTOR
PP8:
CMPAL,80
JLPP7;
不高于80分转PP7
INCDL;
80----89分的人数加一
JMPSTOR
PP7:
CMPAL,70
JLPP6;
不高于70分者转PP6
INCBH;
70---79分的人数加一
PP6:
CMPAL,60
JLPP5;
不高于60分者转PP5
INCBL;
60---69分的人数加一
PP5:
INCAH;
低于60分的人数加一
STOR:
INCSI;
读下一个分数
LOOPGOON
;
CX=CX-1,CX不为零转GOON,继续统计
LEASI,BUFFER;
回存统计结果
MOV[SI],DH
INCSI
MOV[SI],DL
MOV[SI],BH
MOV[SI],BL
MOV[SI],AH
MOVAX,WORDPTR[DI];
计算平均成绩
MOVCL,CONT
DIVCL
MOVLEVEL,AL;
回存平均成绩
HLT
2在BVFF单元中有一个BCD数A,试根据下列关系编写程序,计算结果存在DES中。
A<
20,Y=A+20;
60,Y=A-20;
A>
=60,Y=A.
BVFFDB8
DESDB?
MOVAL,BVFF
CMPAL,20
JLEX1
CMPAL,60
JLEX2
MOVAL,80(cmpal,80)
JMPSTOP
EX1:
MOVBL,3
MULBL(addal,20)
EX2:
SUBAL,20
STOP:
MOVDES,AL
HLT
3在DATA之下存放100个无符号的8位数,找出其最大者并将其存放在KVFF单元。
BUFFERDB;
自行定义100个数据
KVFFDB?
XORDL,DL
LEADI,KVFF;
NEXT0:
LEASI,BUFFER;
MOVCL,99;
比较次数为N-1次
NEXT1:
MOVAL,[SI];
INCSI;
CMPDL,AL;
JNCNEXT2;
MOVDL,AL;
DL中始终存目前最大值
NEXT2:
DECCL;
JNZNEXT1;
MOV[DI],DL;
最大值存储
4编写10个字(16位二进制数)之和的程序
ADD1为被加数,ADD2为加数,SUM为和,CONT为循环次数
LEASI,ADD1;
LEADI,ADD2;
LEABX,SUM;
MOVCL,CONT;
MOVCH,0;
循环初始化
CLC;
进位清零
MADD1:
MOVAX,[SI];
读加数1
ADCAX,[DI]
ADDSI,2;
移动源区地址指针
ADDDI,2;
移动目的区地址指针
MOV[BX],AX;
回存计算结果
ADDBX,2;
移动“和”存储区地址指针
LOOPMADD1;
循环控制
HLT;
暂停
5.在某一系统中,有8个开关K7~K0,要求不断检测它们的通断状态,并通过发光二极管LED7~LED0显示出来。
开关断开,相应的LED点亮;
开关合上,LED熄灭。
选用8086CPU,8255A和74LS138译码器等芯片,构成应用电路。
如下图所示,8255A的PA口作输人口,8个开关K7~K0分别接PA7~PA0。
PB口为输出口,PB7~PB0分别连接显示器LED7~LED0。
试进行编程设置。
程序段如下:
MOVAL,90H;
方式选择控制字
OUT0F3H,AL;
写人控制字
SET:
INAL,0F0H;
从PA口读开关状态
OUT0F1H,AL;
PB口控制比LED,指示开关状态
JMPSET;
循环检测
1、什么是端口?
外设接口中可以由cpu进行读或写的寄存器被称为端口。
每一个端口都有自己的端口地址。
端口可以分为数据口、状态口和控制口,分别存放数据信息、状态信息和控制信息。
2、什么是引脚的分时复用?
8086/8088采用引脚分时复用技术,即一条引脚在不同的时间代表不同的信号,以解决引脚不够用的问题。
例如:
AD15~AD0是地址/数据复用引脚,BHE/S7是高字节允许/状态复用引脚。
3、导致XT机NMI中断的三种原因是什么?
一是系统板上的动态RAM有奇/偶校验错误;
二是I/O通道的扩展出现奇/偶校验错误;
三是协处理器8087出错。
4、8259满足哪三种条件时进入初始化过程?
1)、
=0;
2)、A0=0;
3)、D4=1;
5、有一逻辑地址为XXXXH:
YYYYH,如何得到其对应的物理地址?
PA=XXXX0H+YYYYH(即:
物理地址=段基址左移四位+偏移量)
6、什么是中断矢量表?
若中断矢量号为88H,相应的中断服务程序入口地址放在哪几个M单元中(XT机)
中断矢量表是存放中断服务程序入口地址的表格。
若中断矢量号为88H,则相应的中断服务程序的入口地址放在220H、221H、222H、223H四个单元中(88H=10001000B,右补4个0,得1000100000B,即220H)。
7、8086/88CPU由哪两部分组成,分别完成什么功能?
由EU和BIU组成。
EU负责执行指令。
BIU负责与存储器及I/O接口之间的数据传送操作。
具体来看,完成取指令送指令队列,配合执行部件的动作,从内存单元或I/O端口取操作数,或者将操作结果送内存单元或者I/O端口。
8、XT机中,8284向CPU提供哪三个信号?
1)提供时钟信号;
2)提供复位信号RESET;
3)提供准备就绪信号READY。
二、