西工大 微机原理 试题 例题DOC.docx
《西工大 微机原理 试题 例题DOC.docx》由会员分享,可在线阅读,更多相关《西工大 微机原理 试题 例题DOC.docx(15页珍藏版)》请在冰豆网上搜索。
![西工大 微机原理 试题 例题DOC.docx](https://file1.bdocx.com/fileroot1/2023-1/22/d404cbed-4642-4787-bd1c-382841e55eca/d404cbed-4642-4787-bd1c-382841e55eca1.gif)
西工大微机原理试题例题DOC
例9.1设某系统中有两片8255A芯片,由74LS138译码器产生两个芯片的片选信号。
如图9.1所示,要求:
第一片8255A(J1)的A口工作在方式0输出,B口工作在方式0输入,C口高4位为输出,低4位为输入。
第二片8255A(J2)的A口为方式0输入,B口为方式1输出,C口高4位输出,C口低4位为B口控制信号。
(1)试指出两片8255A芯片各自的端口地址;
(2)试写出两片8255A芯片各自的方式控制字;
(3)试写出两片8255A芯片各自的初始化程序。
图9.1译码电路图
解
(1)根据译码电路图,可分析出:
J1的A、B、C和控制端口的地址分别为0138H、013AH、013CH、013EH。
J2的A、B、C和控制端口的地址分别为0130H、0132H、0134H、0136H。
(2)按照8255A方式控制字的格式,两片8255A的控制字分别为:
J1:
10000011BJ2:
10010100B或10010101B
(3)J1的初始化程序:
J2的初始化程序:
MOVDX,013EHMOVDX,0136H
MOVAL,83HMOVAL,94H(或95H)
OUTDX,ALOUTDX,AL
【评注】注意8255A方式控制字的标志为D7=1。
控制字要写入控制端口,这里由于端口地址为16位,输出指令中必须采用DX间接寻址。
例9.3某系统采用串行异步方式与外设通讯,发送字符格式由1位起始位、7位数据位、1位奇偶校验位和2位停止位组成,波特率为2200b/s。
试问,该系统每分钟发送多少个字符?
若选波特率因子为16,问发时钟频率为多少?
解
(1)因为发送字符格式由1位起始位、7位数据位、1位奇偶校验位和2位停止位组成,所以一帧数据长度为11位,而波特率为2200b/s,由此计算出该系统每秒钟发送2200÷11=200字符,每分钟为200×60=12000字符。
(2)发送时钟频率为2200×16=35200HZ。
例9.4图9.2为一利用8255A实现的打印机接口。
(1)设8255A的A口工作在方式0输入,B口工作在方式0输出。
写出初始化程序片段。
(2)写出查询方式下输出一个字符至打印机的程序片段(假设输出字符已经在AL中)。
图9.2打印机接口图
解根据接口图可知8255A的地址为200H~203H。
(1)8255A初始化程序:
MOVDX,0203H
MOVAL,10010001B
OUTDX,AL
(2)打印控制程序:
PUSHAX;暂存AL中的打印字符
MOVDX,0202H
WAIT:
INAL,DX;读C口内容
TESTAL,08H;测
信号
JZWAIT;打印机忙,则等待
MOVDX,201H
POPAX
OUTDX,AL;打印字符输出到B口
MOVDX,203H;从PC7发一个负脉冲,将
MOVAL,0EH打印字符锁入打印机
OUTDX,AL
MOVAL,0FH
OUTDX,AL
【评注】注意控制打印机的工作流程。
首先判断打印机忙否,若忙继续检测,否则就可以建立数据并发出选通,将数据锁入打印机。
其中打入锁存信号为一负脉冲,由软件产生,注意发脉冲信号的编程方法。
例9.5有如下接口原理图,如图9.3所示。
输入机启动一次输入一个数据;打印机启动一次打印一个数据。
要求从输入机输入一个数并存入存储器中,然后再由打印机将该数打印出来!
一共输入10个数,打印10个数。
图9.3接口图
编写出满足上述要求的源程序。
解由接口图分析可知,8255A的端口地址为E0H、E4H、E8H、ECH。
程序如下:
.MODELSMALL
.DATA
WPDB10DUP(?
)
.CODE
.STARTUP
MOVAL,83H
OUT0ECH,AL;初始化8255A
MOVCX,10;循环次数送CX
MOVBX,OFFSETWP
AGAIN:
MOVAL,00001111B
OUT0ECH,AL;启动输入机
PRT:
INAL,0E8H
TESTAL,08H;检测PC3,判断输入数据是否准备好?
JZPRT;若否,继续检测等待
INAL,0E4H;否则,读B口数据
MOV[BX],AL;送入内存单元
MOVAL,00001110B
OUT0ECH,AL;关闭输入机
PST:
INAL,0E8H
TESTAL,02H;检测PC1,判断打印机忙否?
JNZPST;若忙,继续检测等待
MOVAL,[BX]
OUT0E0H,AL;否则,刚存入内存的数据送入A口
MOVAL,00001001B
OUT0ECH,AL;启动打印机
MOVAL,00001000B
OUT0ECH,AL;断开打印机
INCBX
LOOPAGAIN
.EXIT
END
【评注】注意控制输入机的工作流程。
首先启动输入机,然后判断输入机是否将数据准备好,如果没有准备好,继续循环检测,否则读取数据。
打印机的工作流程同上题。
例9.6接口图如图9.4所示,设:
8259A边沿触发,八个中断类型码为60~67H。
写出对以内存DSR开始连续10个字节数进行打印的汇编程序片段。
注:
未用的地址线可设为0。
图9.4接口图
解根据接口图,8255A的A、B、C、控制口地址分别为8000H、8002H、8004H、8006H,B口工作在方式1。
8259A的地址为8028H和802AH。
;初始化8259A
MOVDX,8028H
MOVAL,13H
OUTDX,AL;ICW1
MOCDX,802AH
MOVAL,60H
OUTDX,AL;ICW2
MOVAL,01H
OUTDX,AL;ICW4
;建立中断向量表
PUSHDS
MOVAX,0
MOVDS,AX
MOVSI,OFFSETXY
MOVDI,SEGXY
MOV[018CH],SI
MOV[018EH],DI
POPDS
;初始化8255A
MOVDX,8006H
MOVAL,84H
OUTDX,AL
MOVAL,05H
OUTDX,AL;INTE置1
;循环10次
MOVCX,10
LEABX,DSR
W:
HLT
LOOPW
……
;中断服务程序
XY:
MOVAL,[BX]
MOVDX,8002H
OUTDX,AL
INCBX
IRET
【评注】由于中断源从8259A的IR3接入,故该中断源的中断类型码为63H,由此计算出中断向量地址为63H×4=018CH。
例9.7某系统中,8254芯片的计数器0,计数器1,计数器2及控制端口地址分别为70H,71H,72H,73H。
若利用计数器0对外部事件计数,其GATE接高电平,当计数计满3000次向CPU发出中断申请;且利用计数器1输出频率为100HZ的方波,CLK1=2MHZ。
试编写8254的初始化程序。
解根据题意分析,计数器0工作在方式0,计数置3000次;
计数器1工作在方式3,计数值n=20000=4E20H次
;8254初始化程序片段为:
MOVAL,21H
OUT73H,AL;设置计数器0的控制字
MOVAL,30H
OUT70H,AL;给计数器0送计数初值
MOVAL,76H
OUT73H,AL;设置计数器1的控制字
MOVAL,20H
OUT71H,AL
MOVAL,4EH
OUT71H,AL;给计数器1送计数初值
【评注】对每一个计数器,其控制字必须写在它的计数值之前。
计数值写入计数器的格式,必须按照控制字的RL1、RL0的规定格式来写。
例9.8有如下接口原理图,如图9.5所示。
要求发光二极管L0亮5秒后就熄灭;L1在K1启动后亮6秒后就熄灭;L2亮4秒灭4秒交替进行。
写出源程序片段(段定义语句可以省略)。
解由译码电路分析可知,8254芯片计数器0、计数器1、计数器2及控制端口的地址分别为91H,93H,95H,97H。
根据接口图及题目要求,8254的计数器0应该工作在方式0,计数初值N0=5000;计数器1应工作在方式1,N1=6000;计数器2应工作在方式3,N2=8000。
根据以上分析,可以编写出8254初始化程序。
图9.5接口图
8254初始化程序片段如下:
;初始化计数器0
MOVAL,21H
OUT97H,AL
MOVAL,50H
OUT91H,AL
;初始化计数器1
MOVAL,63H
OUT97H,AL
MOVAL,60H
OUT93H,AL
;初始化计数器2
MOVAL,0A7H
OUT97H,AL
MOVAL,80H
OUT95H,AL
四.接口设计题:
1.某系统中8254芯片的通道0~通道2和控制端口地址分别为FFF0H~FFF6H,定义通道0工作在方式2,CLK0=2MHZ,要求输出OUT0为1KHZ的速率波;定义通道1工作在方式0,其CLK1输入外部计数事件,每计满1000个向CPU发出中断请求。
试写出8254通道0和通道1的初始化程序。
解:
;8254通道0的初始化程序
MOVAL,00100101B
MOVDX,0FFF6H
OUTDX,AL
MOVAL,20H
MOVDX,0FFF0H
MOVDX,AL
;8254通道1的初始化程序
MOVAL,01100001B
MOVDX,0FFF6H
OUTDX,AL
MOVAL,10H
MOVDX,0FFF2H
OUTDX,AL
14.利用8254的2#计数器周期性地每隔10ms产生一次中断,已知CLK频率为2MHZ,试选择工作方式,并编写出相应初始化程序。
解答:
设2#计数器的地址为72H,控制寄存器的地址为73H。
根据题意要产生周期性的中断信号,可选择方式2。
计数初值:
n=10ms×2MHZ=20000=4E20H
初始化程序片段如下:
MOVAL,10110100B
OUT73H,AL
MOVAL,20H
OUT72H,AL
MOVAL,4EH
OUT72H,AL
18.有如下接口原理图,如图9.13所示。
要求发光二极管L1在K1启动后亮3秒钟就熄灭;发光二极管L2亮2秒灭2秒交替进行。
编写出简化汇编源程序。
图9.13接口图
解答:
据译码电路,8254的端口地址为B0H,B4H,B8H,BCH。
根据题目要求,经分析得出:
计数器1工作在方式1,计数初值N=6000;计数器2工作在方式3,计数初值N=8000。
初始化程序片段如下:
MOVAL,01100011B
OUT0BCH,AL
MOVAL,10100111B
OUTOBCH,AL
MOVAL,60H
OUT0B4H,AL
MOVAL,80H
OUT0B8H,AL
21.已知8254芯片的A0、A1分别连接到CPU的A0、A1上,要求该芯片的1#计数器输出频率为1KHZ的方波,CLK1=20MHZ,端口地址可合理假设,试编写8254的初始化程序。
解答:
假设端口地址为70H~73H,依题意:
1#计数器应选方式3,n=20000次=4E20H次,初始化程序片段如下:
MOVAL,01110110B
OUT73H,AL
MOVAL,20H
OUT71H,AL
MOVAL,4EH
OUT71H,AL
22.设8255A的A口工作在方式1,作为中断方式下的字符打印机的接口,此时,若CPU发出控制信号通过8255A的C口向打印机发出数据锁存信号,则CPU送来打印的数据被锁存到打印机等待打印。
打印机收到打印数据后向8255A发出应答信号。
此时8255A就发出中断请求,中断信号从8259A的IR3引入,中断类型号为5BH。
设中断服务程序必须装配在2000H:
2340H处。
I/O端口地址任选。
(1)试写出8255A的初始化程序;
(2)设8259A以固定优先权、完全嵌套、自动结束方式工作,试写出8259A的预置命令;
(3)用直接置入法,将中断服务程序的地址置入矢量表中;
(4)写出中断服务程序;
(5)画出连接线路图。
解答:
(1)假设8255A的端口地址为80H~83H,则初始化程序为:
MOVAL,0A0H;方式控制字
OUT83H,AL
MOVAL,0DH;INTE置1
OUT83H,AL
(2)假设8259A的地址为90H,91H,则预置命令:
MOVAL,13H;ICW1
OUT90H,AL
MOVAL,5BH;ICW2
OUT91H,AL
MOVAL,03H;ICW4
OUT91H,AL
(3)中断向量表的建立
PUSHDS
MOVAX,0
MOVDS,AX
MOVBX,offsetprinter;2340H
MOVWORDPTR[016CH],BX
MOVBX,segprinter;2000H
MOVWORDPTR[016EH],BX
POPDS
(4)中断服务程序:
PRINTER:
PUSHAX
STI
MOVAL,BL
OUT80H,AL
CLI
POPAX
IRET
(5)接口电路图如图:
23.设8253的通道2工作在计数方式,外部事件从CLK2引入,通道2每计若干个脉冲向CPU发出中断请求,CPU响应这一中断后继续写入计数值,重新开始计数,保持每1秒钟向CPU发出中断请求。
假设条件如下:
(1)8253的通道2工作在方式4;
(2)外部计数事件频率为1KHZ;
(3)中断类型号为54H;
(4)8253的通道0~通道2和控制端口地址分别为FFF0~FFF6H;
(5)用8212芯片产生中断类型号。
试编写程序完成以上任务,并画出硬件连接图。
程序如下:
PUSHDS
MOVAX,0
MOVDS,AX
MOVBX,OFFSETXY;XY为中断服务程序
MOVSI,SEGXY
MOV[0150H],BX
MOV[0152H],SI
POPDS
MOVDX,0FFF6H
MOVAL,10101001B;8254控制字
OUTDX,AL
MOVDX,0FFF4H
MOVAL,10H;计数器2的计数值为1000
OUTDX,AL
HLT
;中断服务程序:
XY:
MOVDX,0FFF4H
MOVAL,10H
OUTDX,AL
IRET
电路图如附图5。
附图5