hi,更新第六期啦~
1,补充例:内部中断服务程序
编写80H号中断服务程序,符号地址为N80H,并调用。
功能:显示以“0”结尾字符串,利用显示器功能调用INT 10H实现字符显示。
字符串缓冲区首地址为:DS:DX
2,利用INT n指令调用中断服务程序
3,
4,用8255A方式0与打印机接口
解析:8255A方式0可以使用查询方式和无条件传送方式,8255A方式1用于中断方式。
8255A通过A口8位数据输出连接到打印机上,要设置方式控制字1 00 0 0 0 0 1B=81H
MOV DX,控制口地址
MOV AL,81H
OUT DX,AL
PC7连接的是选通信号STROBE#, 然后打印机回应给8255A一个信号BUSY忙,如果8255A再给
打印机发的话,需要先检测一下PC2口,如果PC2=1说明打印机是忙的,只有在PC2=0时,8255
才把数据送往打印机,然后才发选通信号,然后PC7=0时表示选通也就是数据已经送给了打印
机,在PC7=1时就是没有选通也就是数据还没有送往打印机 。
答:
初始化:
先写8255的初始化①8255控制字 MOV DX,控制口
MOV AL,控制字81H
OUT DX,AL;控制字送控制口上
8255的初始化第二步②送一个置位复位字 PC7=1时要对PC置位复位,PC7=1说明置位无选通打印
机还没有收到数据 ,当PC7=0时说明选通打印机收到数据了,PC7=1说明传送结束。
MOV AL,置位复位字PC7=1时 0 000 111 1=0FH ;PC7置位
OUT DX,AL
以下是打印程序段:
第三步打印机传数据的过程③而采用查询传送方式时 首先CPU要从状态口上也就是C口的第二位上
就是状态口来检测C口第二位是不是忙,也就是在正式传输数据打印之前要先检测通过IN指令从PC
口取一个状态字给了AL(IN AL,PC口),然后TEST检测,检测AL的第二位(因为是PC2)
,所以PC2测试哪一位哪一位为1(TEST AL,0000 0100B)(PC2=1时表示忙,PC2=0时不
忙),忙就转L1,JNZ L1;PC2=1时忙
下面就是不忙了顺序执行 CPU给8255传数。CPU输出用OUT
总结:首先CPU往8255A的A口送数据①在每传一个数问问打印机忙吗,如果不忙传数②随后选通
信号到来就是PC7=0就选通
8255A通知一下打印机我数据给你送过去了你接收一下 这就是选通。
5,以下展开题目分析
分析:(1)8255A中的方式1是中断方式
(2)方式1:选通I/O方式
通常使用固定的联络信号;
适于查询和中断方式
可以产生中断;
一般作为中断方式I/O
输入使用IN指令,输出使用OUT指令;
(3)
B端口输出:也就是PC2=1开中断 PC0=1向CPU发了中断的请求
展开题解:PC2允许开中断
5,如果是8255方式1的中断数据的输入输出,要固定使用联络信号,B口的输出联络信号是012,
A口的输入联络信号是345,4表示开中断,3表示中断请求,固定的
6,8255的中断传输比查询传输要方便,要节省时间 。
7,总结8255连接小灯泡的例子:
分析:(1)灯是输出OUT,开关是输入IN。
(2)8255A中方式0用的无条件传输,因为没有用到联络(C口),也没有置位复位字。
(3)当PA口=0时说明闭合,当PB口=0时说明灯亮。
(4)
MOV DX,20BH
MOV AL,90H
OUT DX,AL;初始化
MOV DX,208H
IN AL,DX;读A口开关
MOV DX,209H
OUT DX,AL;写B口,灯亮
8,
MOV DX,0F6H
MOV AL,;控制字
OUT DX,AL
MOV DX,F0H
IN AL,DX
NOT
MOV DX,F2H
OUT DX,AL
9,
9,8255A发光二极管的例题
分析:根据题意要求,可选择并行接口芯片8255A的任意一个并行口(A口、B口或C口),并将其初始
化为方式0输出,采用无条件方式实现对8个发光二极管的循环点亮。
设号255的A口连接发光二极管,给出连接电路和程序。
10,8253的例题
11,
在前提是8255中PB0=0时,PA7=1时亮,8255A的A口灯输出,B口开关输入。
8253中,能够周期性自动产生信号的只有方式2(频率发生器或者分频器)和方式3(方波)。
8255查询测试开关是不是亮,由于8255的开关是在B口上,IN AL,B口端口地址;PB0=0说明闭
合
PB0的八位:只有是0位上是0时闭合,就要用test测试。
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
x | x | x | x | x | x | x | 0 |
L1: IN AL,B口
test AL,01H
JNZ L1;开关断开时查询等待
以下就是闭合的状态,让A口的PA7=1亮
MOV AL,80H
OUT A口,AL;使PA7=1灯亮
8255的基本输入输出方式是方式0,8255的控制字1 00 0 0 0 1 0B=82H
12,
13,
14,
分析:定时0.5s就用8253,每搁5s检测一次A口上的开关,当开关闭合时,对应的灯亮。
这个熄灭1s也需要用8253,在没有开关的情况下,每只灯轮流熄灭1s。
首先8255的初始化,8253的初始化。
(1)当PA=0时闭合,PB=1时灯亮,通过8253来实现延时,0.5s和1s ,在8253中输入的脉冲是
2MHZ ,
15,以下是 存储器设计画图分析 的总结题型
分析:(1)单片8K×4=2的13次方×4
分为A0~A12(片内地址线)和 D0~D3(片内数据线)
(2)总容量64KB=64K×8(因为总容量是8条数据线)
分为A0~A15(A13A14A15是片外)和 D0~D7 (数据线)
(3)64K×8 / 8K×4 = 8组 (串联)(字扩展)× 2片(并联)(位扩展) = 16片
(4)需要8组字扩展,位扩展是每组两片。
(5)设计画图:一般CPU画在左侧,写上片内地址线A0~A几,然后A几A几A几总共几根地址
线,加上数据线D0~D7,WR# RD# ,然后连接38译码器,三个输入端ABC和三个使能端G1 G2A# G2B# ,译码器上的圈只表示低
电平,只有门电路上的圈才取反,译码器的输出Y0( 在最下面 )~Y7低电平有效 ,
其中,RAM是可读可写的,包括SRAM和DRAM ,没有说明默认有读信号线OE#和写信号线
WE#,另外有片选信号线;
对于一个存储芯片所必须的要有OE# WE# CS#
而对于CPU有 WR# RD#
译码器输出得到存储芯片上的片选信号CS#
然后画存储芯片RAM,每组的每片是从A0~A几(片内地址线),把CPU的片内地址线依次连接
到存储芯片上每组每片上,然后每组每片的片选端上CS#,
(6)确定地址范围:
16,
(1)4096就是4×1024=4KB=4K×8
(2)原则:①尽量选择大容量的,②尽量地址线相同(指的是片内地址线),
RAM | 1K×8 | ||
ROM | 1K×4 |
(3)其中ROM的2K×16的不行,存储字长是8位的超了就不行。
(4)总容量4K×8分为:①RAM:2KB ROM:2KB ②只用ROM:4KB(选用)
(5)参考答案(方案1)
(1)由已知4096个存储单元的存储器系统的容量是4KB,即为4KX8位,设分别由2KB的RAM和
2KB的ROM组成。选择RAM的1Kx8位的芯片和ROM的1K×4位芯片。(1K和1K片内地址线相
同)
存储器系统共需要4组,选择2:4译码器。
17,
(1)
A15 A14 | A13 A12 A11~A0 | 地址范围 | |
ROM | 0 0 Y0# | 00...0~11...1 | 0000H~3FFFH |
RAM1 | 1 0 Y2# | 00...0~11...1 | 8000H~BFFFH |
RAM2 | 1 1 Y3# | 00...0~11...1 | C000H~FFFFH |
18,
(1)8086的数据线D0~D15(分为D0~D7和D8~D15) 16条数据线
(2)最小模式下的存储器系统地址线A0~A19,主存系统是分为奇偶体的,奇体连接数据的高八
位D8~D15还有BHE#,偶体连接低八位D0~D7,一定要把A0拿出来连接片选端 。
(3)64KB= 32K×16 总容量保持不变后面变成16的
(4)32K×16 / 32K×8 = 2片
(5)CPU的A1~A15连接每片的A0~A14,
(6)总结:地址线总线和数据总线要根据CPU和芯片来定,8086的地址线AB是20位,8086的地
址总线是16位,8088的地址线是20位,数据线是8位,还有控制总线读写等 。
19,
(1)2164:DRAM动态需要刷新,结构是4个128×128的矩阵,刷新是按行刷新的,4个一行就是
4×128=512个单元进行刷新,一共128行,
(2)对于64KB是64K×8,就是8位,8088系统中,如果是32K×16,就是16位,8086系统中。
(3)2164是64K×1,有行引脚RAS#(5号脚),列引脚 CAS#(15号脚),
20,动态RAM:①刷新②电容保存电荷,漏电,③假读,以行进行刷新,④刷新周期,2ms(128
行的时间)。
21,
22,
23,RAM分为SRAM(OE#,WE#,CS#引脚)和DRAM(WE#=0时是写,WE#=1时是读 CS# )
ROM分为EPROM(OE#,CS#)和E方PROM(OE#,CS#)
24,以下是接口的题例
分析:(1)控制字10111001B=B9H
MOV DX,0103H
MOV AL,B9H
OUT DX,AL
8255的方式1和方式2可以采用中断,一般用方式1。
中断源的两种方式一个查询中断,一个向量中断。
中断向量 是子程序的的入口地址。
上面这个是直接寻址。下面是间接寻址或相对寻址。
功能01H键盘接收,02H屏幕显示,09H显示字符串,4CH返回DOS,设置中断向量一个特有的
DOS调用25H号功能。
25,如何进行中断向量的设置和获取,如何执行中断服务子程序。
DOS功能调用中断INT 21H
参考:
N80H是新的子程序的入口地址,位移量存入DX,段地址存入AX,
中断响应是CPU自动到中断向量表中去找到子程序的入口地址。