大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
知识重点整理
第一章 输入/输出系统
1.接口电路的作用和基本功能
接口电路是CPU与外设交换信息的中转站。
接口电路应具备的功能为:数据缓冲功能、联络功能、寻址功能、数据转换功能、中断管理功能。
2.端口的概念和分类
端口是接口电路中能与CPU直接进行信息交换的寄存器,即I/O端口寄存器。
在接口电路中,按端口寄存器存放信息的物理意义可划分为数据端口、控制端口和状态端口:
数据端口存放数据信息,是必须有的端口。
状态端口存放外设当前工作状态的信息,CPU读取这些信息以完成对外设当前工作情况的查询。
控制信息存放CPU通过接口传送给外设的控制信息,以控制外设工作。对于可编程接口电路,控制信息还负责设置可编程接口芯片的工作方式。
3. 端口的编址方式
统一编址:把I/O端口作为存储器的一个单元来看待,故每个I/O端口占用存储器的一个地址
独立编址 :I/O端口和存储器分别是用两个地址空间,单独编址和译码。
在PC机中,I/O端口采用独立编址方式。
4. 最常用的IO指令(IN和OUT指令)
IN CPU,PORT
OUT PORT,CPU
端口地址为一个字节(8b)时,采用直接寻址方式,CPU一般常用AL、AX、EAX作为接收寄存器,8位即可满足,最多可寻址256个端口。
输入:IN AL,PORT
输出:OUT PORT,AL
端口地址为两字节时,使用间址寻址方式,此时最多可以寻址2^16个端口,而且端口地址必须放在寄存器 DX 中。
输入:IN AL,DX
输出:OUT DX,AL
5. 微机系统与外部设备之间交换信息的方式
无条件传送:假设外设已准备好(即输入数据已准备好,或输出设备空闲),CPU可以直接用IN或OUT指令完成与接口之间的数据传送。
查询方式:接收数据前CPU要查询输入数据是否准备好;输出数据前CPU要查询输出设备是否空闲。只有确认外设已具备了输入或输出条件后,才能使用输入输出指令完成数据传送。CPU效率低。
设: 状态口地址=200H 数据口地址=201H ,查询方式输入核心程序。假设接收数据好状态信息在D7位。
RSCAN: MOV DX,200H
IN AL,DX
TEST AL,80H ;查看D7
JZ RSCAN ;如果无输入,则继续查询
MOV DX,201H
IN AL,DX
设: 状态口地址 = 200H 数据口地址 = 201H 查询式数据输出核心程序,假设忙闲标识为D0位。
TSCAN: MOV DX,200H
IN AL,DX
TEST AL,1
JNZ TSCAN
MOV DX,201H
MOV AL,'W'
OUT DX,AL
中断方式:如果外设未做好数据传送准备,CPU可执行与传送数据无关的其他指令;当外设做好准备后,可向CPU发送中断请求,请求为之服务。若CPU响应中断请求,将暂停正在运行的程序,转入中断服务程序,完成数据的传送。等中断服务结束后,将自动返回原来运行的程序继续执行。
DMA方式:直接存储器存取方式,用硬件实现存储器和存储器之间或存储器和I/O设备之间进行的高速数据传送,不需要CPU的干预。I/O端口向DMA控制器发出DMA请求,请求传送数据。DMA控制器在接到I/O端口的DMA请求后,向CPU发出总线请求信号,请求CPU脱离系统总线。CPU在执行完当前指令的当前总线周期后,向DMA控制器发出总线响应信号。CPU随机和系统总线脱离关系,处于等待状态,DMA控制器接管三总线的控制权。DMA控制器向I/O端口发出DMA信号。传送完毕后,DMA传输过程结束。DMA控制器将总线请求信号变为无效,并放弃对总线的控制,CPU检测到总线请求信号无效后,也将总线响应信号变为无效,于是CPU重新控制系统总线,继续执行被中断的当前指令的其他总线周期。
6. 8254定时器/计数器
(1)掌握8254定时器/计数器的基本结构(三个16位计数器、控制寄存器)和计数器的外部引脚功能(GATE、CLK和OUT)
8254内部集成了3个16位的计数器, 每个计数器有6种工作方式,计数初值可设定为二进制或BCD码。最高工作频率10兆。
为门控信号输入端,为计数器脉冲输入端,为输出信号端。
(2)8254与系统总线的连接:
(3)计数器内部结构:
(4)8254有6种工作方式
重点:方式2和方式3(启动方式、计数过程以及输出信号的波形和周期)
【例】设8254计数器1工作于方式3,输入时钟为1000Hz,计数初值为10H,采用二进制计数方式,则一个周期内计数器1输出信号的高电平和低电平分别为______和______秒。
解:输入时钟1000HZ,可得一个时钟周期为1*10^(-3)s。计数初值10H转换成十进制即为16,偶数情况下,则正负脉冲(高低电平)时间一样,都为8*10^(-3)S。
(5)8254初始化编程
第1步:向控制寄存器写入方式选择命令字
第2步:向选择的计数器写入计数初值 (计数初值N=Tout / Tclk)
如:设8254端口地址为40H~43H,要求2号计数器工作在方式1,按BCD码计数,计数初值为十进制数4000.试写出初始化程序段。
MOV AL,10100011B
OUT 43H,AL
MOV AL,40H
OUT 42H,AL
如果使用二进制计数:
MOV AL.10110010B
MOV 43H,AL
MOV AX,4000
OUT 42H,AL
MOV AL,AH
MOV 42H,AL
(6)8254在PC机中的应用
电路:
计算机系统中,8254三个计数器的使用:
0#计数器,用于定时(55ms)中断。计数初值为0,即为65536,周期为T=65536/1.19*10^6=55ms。
MOV AL,00110110B
OUT 43H,AL
MOV AL,0
OUT 40H,AL
OUT 40H,AL
1#计数器,用于动态存储器刷新定时(15us)提出一次请求。计数初值为18,周期为T=18/1.19*10^6=15us。
MOV AL.01010100B
OUT 43H,AL
MOV AL,12H
OUT 41H,AL
2#计数器,用于产生约900Hz的方波送至扬声器,初值为533H,N=1.19*10^6/900=1363=533H
MOV AL,10110111B
MOV 43H,AL
MOV AX,0533H
OUT 42H,AL
MOV AL,AH
OUT 42H,AL
第2章 中断系统
1.中断、中断源、中断系统的概念
中断:CPU在执行程序的过程中,由于某种外部或内部事件的作用,使CPU停止当前正在执行的程序而转去为该事件服务,待事件服务结束后,又能自动返回到被中止了的程序继续执行的过程。
中断源:能够引发中断的事件,即发出中断请求的来源称为中断源。
中断系统:中断装置和中断处理程序统称为中断系统。 中断系统是计算机的重要组成部分。实时控制、故障自动处理、计算机与外围设备间的数据传送往往采用中断系统。
中断系统应具备的功能:(1)对于硬件中断,接口电路应具备“屏蔽”和“开放”的功能,这种功能由程序员通过软件去控制。(2)能实现“中断判优”(即中断源排队),当有多个中断源提出请求时,能够优先响应高级别的中断。(3)能够实现中断嵌套。(4)一旦响应中断,就能自动转入中断服务程序,处理完毕能自动返回断点。
2. 中断指令 STI、CLI、INT n和IRET
开中断指令STI:F寄存器中I标志置为1,CPU处于开中断状态
关中断指令CLI:F寄存器中I标志清0,CPU处于关中断状态
软件中断指令 INT n:无条件转向n型中断服务子程序,CPU响应软件中断。
F寄存器->栈,F中的T标志置0以禁止单步操作,I标志置0以使CPU处于关中断的状态;
断点地址->栈:CS->栈,IP->栈;
CPU从4n~4n+3单元中取出n型服务程序入口地址,转为IP:CS,从而转入n型中断服务程序。
执行完中断任务后,返回断点。
中断返回指令IRET:依次从栈顶弹出6个元素:IP、CS、F寄存器。
3. 中断向量、中断向量表
中断向量是实模式下中断服务子程序的入口地址,由两部分组成: 服务程序所在代码段的段基址(2个字节)和服务程序入口的偏移地址(2个字节)
实模式下中断向量表的概念及其在存储器中的存放位置与结构:
- 实模式下中断向量表是一个将中断类型码与中断服务程序的入口地址相联系的地址指针表
- 中断向量表存储在系统RAM最低端的1024个单元(最低的1KB空间)
- 若中断类型码为N,则对应中断向量存储在4N~4N+3单元 其中,前两个字节为偏移地址部分,后两个字节为段基址部分
中断向量的引导作用——CPU响应软件中断的过程
问题:用户如何向中断向量表中写入中断向量?
方法一:自己编写程序访问中断向量的表地址,填写中断向量。利用RAM最低的1024字节单元用来存放中断向量。
CLI
PUSH DS
MOV AX, 0000H
MOV DS, AX
MOV BX, 4*n
MOV AX, OFFSET SERVICE
MOV [BX], AX
MOV AX, SEG SERVICE
MOV [BX+2], AX
POP DS
STI
方法二:DOS系统功能调用
[ INT 21H 的35H子功能 ]
功能:读出n型中断向量
入口:AL=中断类型码
出口:ES:BX=n型中断向量
[ INT 21H 的25H子功能 ]
功能:写入n型中断向量
入口:DS=中断服务程序所在代码段的段基址
DX=中断服务程序入口的偏移地址
AL=中断类型码
出口:无
【例】把用户程序中以“TIMER”命名的中断服务子程序的入口地址 →4 ×1CH ~ 4 ×1CH+3单元(中断向量置换)
数:OLD1C DD ?
代:…
MOV AH , 35H
MOV AL , 1CH
INT 21H ;执行完毕后,ES:BX已存储了中断向量
MOV WORD PTR OLD1C , BX ;偏移地址低16位
MOV WORD PTR OLD1C+2 , ES ;偏移地址高16位
PUSH DS
MOV AX,CS
MOV DS,AX
MOV DX,OFFSET TIMER
MOV AH,25H
MOV AL,1CH
INT 21H
POP DS
…
4.微机系统中断的分类
根据中断源的不同,中断可以分为外部中断和内部中断:外部中断可以分为可屏蔽硬件中断和非屏蔽硬件中断,内部中断可分为软件中断和异常。软件中断可分为BIOS中断和DOS中断。DOS中断分为DOS专用中断、DOS保留中断、用户可调用的DOS中断和保留给用户开发的中断。异常可分为故障、陷阱和中止。
CPU响应可屏蔽中断的条件:
- INTR引脚有中断请求,NMI引脚没有中断请求,系统没有DMA请求
- CPU当前指令执行完毕
- CPU处于开中断状态,即标志寄存器的中断允许标志置1
CPU响应非屏蔽中断的条件
- NMI引脚有中断请求,系统没有DMA请求
- CPU当前指令执行完毕
可屏蔽硬件中断与软件中断的区别
- 中断引发的方式不同(软件中断:使用INT n指令;硬件中断:外部设备)
- CPU获取中断类型码的方式不同(软件中断从软件指令获得,硬件中断由8259A发送)
- CPU响应的条件不同(非屏蔽硬件中断不受I标志影响,可屏蔽硬件中断受其影响)
- 中断处理程序的结束方式不同(结束后,软件中断不需发送结束指令,可屏蔽硬件中断发送中断指令)
5. 8259A的内部结构
有关中断屏蔽寄存器中中断屏蔽字的修改:置0则开放,置1则禁止。
IN AL , 屏蔽寄存器口地址
AND AL,11110111B
OUT 屏蔽寄存器口地址,AL ;开放IRR3的请求,对其它位的请求不改变屏蔽/开放的状态
中断响应信号:
ISR置1表明CPU正在或准备执行对应的服务程序,IRR为1时表明对应引脚有中断请求信号,因已被响应,则进行了复位置0的操作。
6. 8259A的中断过程—CPU响应硬件中断的过程
- 首先由中断请求寄存器寄存加到引脚IR0~IR7上的中断请求
- 在中断屏蔽寄存器的管理下,没有被屏蔽的中断请求被送到优先权电路判优
- 经过优先权电路的判别,选中当前级别最高的中断源,然后从引脚INT向CPU发出中断请求信号
- CPU满足一定条件后,向8259A发出中断响应信号(2个负脉冲)
- 8259A从引脚INTA收到第1个中断响应信号之后,立即使中断服务寄存器中与被选中的中断源对应的那一位置1,同时把中断请求寄存器中的相应位清0
- 从引脚INTA收到第2个中断响应信号后,8259A把选中的中断源类型码n,通过数据线送往CPU
- 在实模式下,CPU从4×n~4×n+3单元取出该中断源的中断向量→IP、CS,从而引导CPU执行该中断源的中断服务程序。
- CPU完成中断服务程序中的任务,向8259A写中断结束命令字,使ISR相应位清0.执行IRET,返回被中断的程序继续原来的任务。
7. 8259A的中断管理方式
中断优先级管理方式:完全嵌套方式、特殊嵌套方式、自动循环优先权方式
中断结束方式:自动中断结束方式(AEOI)、常规EOI方式、特殊常EOI方式
中断屏蔽方式:普通屏蔽方式、特殊屏蔽方式
中断触发方式:边沿触发、电平触发
总线连接方式:缓冲方式、非缓冲方式
286以上微机的8259A中断管理方式——系统加电后由BIOS对8259A初始化编程,设定中断管理方式:
- 系统8259A,中断触发方式为边沿触发
- 中断屏蔽方式采用常规屏蔽方式,即应用时,向8259A中断屏蔽寄存器写入适当屏蔽字即可屏蔽/开放某一级中断
- 中断源为固定优先级,即IR0中断请求级别最高,IR7中断请求级别最低
- 采用常规中断结束方式,即在中断服务子程序结束之前向8259送中断结束命令
8. 8259A的编程
对8259A编程分2步进行:
(1)对8259A进行初始化编程 ——系统加电后,由BIOS完成
(2)对8259A进行应用编程 ——编写中断程序时完成,有2项内容:
需要时,向8259A中断屏蔽寄存器写入屏蔽字
每一个硬件中断服务程序结束前必须向8259A送中断结束命令字,通知8259A本次中断结束,否则8259A不能响应同一中断源的下次中断。
8259A收到中断结束命令后,把ISR中的置1位清0!
9. PC/AT可屏蔽中断
PC/AT使用2片8259A级连,管理15级中断
中断源与中断类型:
主8259 |
中断源 |
中断类型 |
从8259 |
中断源 |
中断类型 |
IR0 |
日时钟 |
08H |
IR0 |
实时时钟 |
70H |
IR1 |
键盘 |
09H |
IR1 |
用户中断 |
71H改向0AH |
IR2 |
从8259 |
|
IR2 |
保留 |
72H |
IR3 |
辅串口 |
0BH |
IR3 |
保留 |
73H |
IR4 |
主串口 |
0CH |
IR4 |
保留 |
74H |
IR5 |
并行口2 |
0DH |
IR5 |
协处理器 |
75H |
IR6 |
软盘 |
0EH |
IR6 |
硬盘 |
76H |
IR7 |
并行口1 |
0FH |
IR7 |
保留 |
77H |
中断优先级为主IR0、IR1、从IR0~IR7,主IR3~IR7.
中断结束后,要向主(和从)8259A送中断结束命令20H。
系统分配的8259A端口地址
|
中断屏蔽寄存器口地址 |
接收中断结束命令的寄存器口地址 |
主8259A |
21H |
20H |
从8259A |
A1H |
A0H |
要求掌握的可屏蔽中断:
(1)日时钟中断
中断源:系统8254 0# 计数器
中断类型:08H、1CH
用户可置换的中断向量:08H、1CH
08H中断的服务流程:
a.开中断,保护现场,40H->DS
b.对日时钟计数器进行一次加1计数
c.测算软驱点记得关闭时间
d.执行INT 1CH指令
e.向主8259A发送EOI命令
f.恢复现场,执行IRET指令
适用场景 | 子程序 | 08H型中断向量置换后的入口地址 | 用户中断服务程序结束 | |
---|---|---|---|---|
08H中断 | 定时周期不等于55ms的整数倍 | DOS系统25H号子程序 | 4*08H~4*08H+3单元 | 结束前需要向8259A发送中断结束命令 |
1CH中断 | 定时周期等于55ms的整数倍 | DOS系统25H号子程序 | 4*08H~4*08H+3单元 | 结束前不需要向8259A发送中断结束命令 |
谨防DOS重入!!!
(2)用户中断
中断源:系统的ISA总线B4端子(IRQ9)引入的中断请求信号
中断类型:71H、0AH
用户可置换的中断向量:71H、0AH
71H型中断服务程序处理流程:
a.开中断、保护现场
b.向从8259A发出中断结束命令:MOV AL,20H
OUT 0A0H,AL
c.执行INT 0AH,转向0AH服务程序
需要提前做的工作是:
a.把外扩中断源的中断请求接入ISA总线B4端子
b.开放用户中断:只有从8259A的IMR1置0,主8259A的IMR2置0,其中断请求方能送到CPU
IN AL,0A1H
AND AL,11111101B
OUT 0A1H,AL
IN AL,21H
AND AL,11111011B
OUT 21H,AL
c.置换中断向量
子程序 | 入口地址 | 中断结束 | |
---|---|---|---|
0AH | DOS系统25H | 4*0AH~4*0AH+3 | 只向主8259A送结束命令 |
71H | DOS系统25H | 4*71H~4*71H+3 | 向主从8259A各送一结束命令 |
10. 中断程序设计
(1)主程序的编写主要包括
中断向量的置换(DOS系统功能35H和25H)
硬件中断通路的开放和屏蔽:对于日时钟 08H(或其中的1CH), 默认下主8259A已经打开,无需再进行开放操作
(2)中断服务程序的编写
根据置换的中断类型不同,需要解决是否要对中断管理器8259A写中断结束命令字的问题
对于日时钟 08H(或其中的1CH),不需要写中断结束命令字
第3章 微机系统串行通信
1. 基本概念
通信的基本方式
通信的基本方式分为并行通信和串行通信
串行通信分为串行同步通信和串行异步通信
数据的传输方式:
单工方式:只允许数据按照一个固定的方向传送
半双工方式:要求收发双方均具备接收和发送数据的能力,但数据不能同时在两个方向上传送
全双工方式:收发双方可同时进行数据传送
2.串行异步通信——标准数据格式
四部分:
- 起始位 : 1位逻辑‘0’
- 数据位: 5~8位 0/1代码
- 奇偶校验位: 0~1位‘0’或‘1’
- 停止位: 1、1.5、2位逻辑‘1’
【例】异步通信一帧数据格式中,按照发送的次序,先传送起始位,紧接着是数据5~8位,数据位后依次为奇偶校验位、停止位。
3. 串行通信接口标准——RS-232C
功能特性: 标准定义了25针连接器中的20 条连接线(常用的信号线)
信号电平标准(电气特性)
RS-232C标准规定: 逻辑“1”信号,电平在 –3V ~ -15V之间;逻辑“0”信号,电平在 +3V ~ +15V之间
因此,使用RS-232C与微机接口时,需要将TTL电平(0 ~ 5V)与RS-232C电平进行转换
4. 可编程串行异步通信接口芯片8250
8250内部寄存器从使用角度来说有10个,分成3类:
|
|
寄存器名称 |
端口地址 |
一类 |
2个数据寄存器 |
发送保持寄存器
|
3F8H/2F8H写入 |
接收缓冲寄存器 |
3F8H/2F8H读出 |
||
二类 |
5个命令字寄存器 |
通信线控制寄存器 |
3FBH/2FBH |
2个除数寄存器 |
3F8H/2F8H(低位) |
||
3F9H/2F9H(高位) |
|||
中断允许寄存器 |
3F9H/2F9H |
||
MODEM控制寄存器 |
3FCH/2FCH |
||
三类 |
3个状态寄存器 |
通信线状态寄存器 |
3FDH/2FDH |
中断识别寄存器 |
3FAH/2FAH |
||
MODEM状态寄存器 |
3FEH/2FEH |
【例】利用主串口查询方式发送一个“A”。思路就是先查询通信线状态寄存器,由D5位看是否空闲,不空闲则继续查询进行等待,如果空闲就由主串口将A发到发送保持寄存器去。
SCANT: MOV DX , 3FDH
IN AL , DX
TEST AL , 20H ; 00100000
JZ SCANT ; D5=1
MOV DX , 3F8H
MOV AL , ‘A’
OUT DX , AL
【例】利用辅串口查询方式接收一个字符。首先查看发送移位寄存器是否空闲,如果为0则表示不空闲,为1则继续下面的接收。
SCANR: MOV DX , 2FDH
IN AL , DX
TEST AL , 01H ; 00000001
JZ SCANR ; D0=1
MOV DX , 2F8H
IN AL , DX
8250的自发自收
内环:自动将发送移位寄存器和接收移位寄存器短接
外环:人为将RS-232接口芯片端子2和端子3用线连接起来,属正常通信
直接对8250端口进行初始化编程的步骤:
- 设置寻址位:80H→通信线控制寄存器,使寻址位为1
- 将除数高8位/低8位→除数寄存器高8位/低8位,确定通信速率
- 将D7=0的控制字写入通信线控制寄存器,规定一帧数据的格式
- 设置中断允许控制字: 若采用查询方式,置中断允许控制字为0 ,若采用中断方式,置中断允许控制器的相应位为1
- 设置MODEM控制寄存器: 中断方式:D3=1,允许8250送出中断请求信号 ,查询方式:D3=0 ,内环自检:D4=1 ,正常通信:D4=0 。使用联络线:D1、D0位置1
5.串行通信的外部环境
外部环境:就是串口连接器RS-232C引脚的连线方式
连线方式与串口的通信方式有关
连线方式与编程时使用的编程手段(对端口直接操作,或调用BIOS通信软件)有关
6. 8250的应用编程
设计考虑:
- 题型:单端自发自收,点—点通信(全双工、单工)
- CPU与串口交换信息的方式:查询或者中断
- 编程手段:对端口直接编程、调用BIOS通信软件
- 根据题目要求组织相应的外部环境
8250查询方式下接收和发送程序的编程
- 在发送数据前,读通信线状态寄存器(状态口)获取发送保持或移位寄存器(数据口)是否空闲 3FDH->20H->JNZ->3F8H->间址放到AL,OUT到端口
- 在接收数据前,读通信线状态寄存器(状态口)获取接收缓冲寄存器(数据口)是否已经收到1帧数据 3FDH->01H->JNZ->3F8H ->IN到AL,AND 7FH,显示即可
如果希望8250采用中断控制方式发送和接收数据,编程时应该采取哪些措施?
如果是中断控制方式发送,则DX为3F9H时,开放D1发送中断请求,即AL为02H;如果是中断控制方式接收,则DX为3F9H时,开放D0接收中断请求,即AL为01H。
【例】A、B两台PC机利用主串口进行点-点单工通信(不用联络线),发送采用查询方式,接收采用中断方式。一帧字符包含7个数据位,1个停止位,1个校验位,通信速率为4800波特(分频系数为0018H)。
2—->3 7—-7
注:规定在RS-232C接口观察到的引脚中,正电位为0,负电位为1.这与8250观察到的波形中0、1颠倒。
(3)用对端口直接编程的方法为接收方编写8250初始化程序段。
;寻址位置1
MOV DX, 3FBH
MOV AL, 80H
OUT DX, AL
;写除数高8位
MOV DX, 3F9H
MOV AL, 00H
OUT DX, AL
;写除数低8位
MOV DX, 3F8H
MOV AL, 18H
OUT DX, AL
;无校验传送,8位数据
MOV DX,3FBH
MOV AL,0AH
OUT DX,AL
;写中断允许控制字
MOV DX,3F9H
MOV AL,01H
OUT DX,AL
;MODEM控制寄存器
MOV DX,3FCH
MOV AL,08H
OUT DX, AL
(4)编程实现发送方查询方式发送数据‘A’的程序段。
SCAN:MOV DX,3FDH
IN AL,DX
TEST AL,20H
JZ SCAN
MOV DX,3F8H
MOV AL,41H
OUT DX,AL
第4章 并行IO接口
1. 8255A的内部结构和工作方式
(1)内部结构、端口地址以及与系统总线的连接
(2)8255A三种工作方式(方式0 ~方式2 )的工作特点和I/O过程
工作方式 |
适用的端口 |
方式0:基本型输入/输出 |
A口、B口、C口 |
方式1:选通型输入/输出 |
A口、B口 |
方式2:双向数据传送型 |
A口 |
(3)在方式1中C口哪几个引脚作为信号联络线,各信号联络线的含义
当A口工作在方式1输入时,PA7~PA0为端口的输入数据线,PC5和PC4为联络线。PC4为,定义为输入,PC5被定义为,定义为输出,PC3被定为,中断请求输出线。当B口工作在方式1输入时,PB7~PB0为端口的输入数据线,PC2和PC1为联络线。PC2为,定义为输入,PC1被定义为,定义为输出,PC0被定为,中断请求输出线。
:输入选通信号,低电平有效,由外设发往8255A。有效时,外设数据写入相应端口的输入寄存器中去。
IBF:输入缓冲器满,高电平有效,由8255A发往外设。CPU采用查询方式从8255A读取数据之前,应查询IBF,只有当IBF=1时,CPU才从A口或者B口读取输入数据。读取完毕后,IBF=0,表示输入缓冲器空。
INTEA:A口中断允许寄存器,受PC4的置0/置1命令字控制,只有为1时,A口允许中断。
INTEB:B口中断允许寄存器,受PC2的置0/置1命令字控制,只有为1时,B口允许中断。
INTR:中断请求信号,高电平有效。在中断允许(INTEA=1或INTEB=1)的情况下,8255A接收到一个端口数据后(IBF=1),乡CPU发出中断请求。
当A口工作于方式1的输出时,PC7自动定义为输出线,改称,PC6自动定义为输入线,称为。这是一对联络线信号。当B口工作于方式1的输出时,PC1自动定义为输出线,改称,PC2自动定义为输入线,称为。这是一对联络线信号。
OBF:输出缓冲器满,低电平有效。低电平时表示CPU已经把输出数据写入指定的端口数据寄存器中。CPU用查询方式向8255A输出数据时,应先查询OBF,只有当其为OBF=1时,CPU才能输入下一个数据。
:外设的应答信号,,低电平有效。该信号是由已接受数据的外设对OBF的应答信号。这个信号可以使OBF变成1.
INTEA:受PC6控制,只有=1时,A口允许中断
INTEB:受PC2控制,只有=1时,B口允许中断
INTR:中断请求信号,高电平有效。在中断允许(INTEA=1或INTEB=1)的情况下,8255A接收到一个端口数据后(=1),乡CPU发出中断请求。
2. 8255A初始化编程
工作在方式0时:方式选择控制字→控制口
工作在方式1、2时: a) 方式选择控制字→控制口 ;b) C口按位置0/1控制字→控制口
【例】设8255A的控制口地址为21BH,编写8255A的初始化程序。要求8255A的A口工作在方式0,数据输出。B口工作在方式1,数据输入。C口的上半部分数据输出,下半部分数据输入,并允许B口使用中断方式与CPU交换信息。
MOV DX,21BH
MOV AL,10000111B
OUT DX,AL
MOV AL,00000101B
OUT DX,AL
【例】设8255A端口地址为80H~83H。8255A的3个端口都工作在方式0,端口A为输入,端口B为输出,端口C为输出。试对其进行初始化。
MOV AL,10010000B
OUT 83H,AL
写完控制字后,CPU可以使用IN/OUT指令与8255A传数据
IN AL,80H
OUT 81H,AL
OUT 82H,AL
3. 8255A应用编程
1)当数据口(A、B或C)工作在方式0时: 直接采用IN/OUT指令对其进行读写。
2)当数据口(A或B)工作在方式1时:
如果采用查询方式,且 A或B口定义为输入口,先用IN指令读入C口的内容,查询其中的IBF=1时,表示CPU可以继续用IN指令从A或B口读入外设送来的数据。
如果采用查询方式,且 A或B口定义为输出口,先用IN指令读入C口的内容,查询OBF=1 时,表示CPU可以用OUT指令向A或B口写数据以送给外设
如果采用中断方式,需要使相应的中断允许标志(INTE)置0或者置1,以开放中断。
5.总线
1.总线的类型
按照传输信号的性质:地址总线、数据总线和控制总线。
按照总线连接的对象和所处系统的层次:芯片级总线、系统总线、局部总线和外部总线。
2.地址线及控制信号
A31~A3:地址线,A2~A0不对外
3.地址线及控制信号
~:字节允许信号
4.总线周期控制信号
M / | D / | W / | 模式 |
0 |
1 | 0 | I/O读数据 |
0 | 1 | 1 | I/O写数据 |
1 | 1 | 0 | 存储器读数据 |
1 | 1 | 1 | 存储器写数据 |
5.系统控制信号
INTR:可屏蔽中断请求信号
NMI:非屏蔽中断请求信号
6.总线仲裁信号
HOLD:总线请求信号
HLDA:总线请求响应信号
6.存储器系统
存储器的分类
- 按照存储介质分可分为半导体存储器和磁表面存储器。
- 按照存取方式分类分为随机存储器和顺序存储器。
- 按照存储器的读写功能分类分为只读存储器(ROM)和随机存储器(RAM)。
- 按照信息的可保存性分类可分为永久性存储器和非永久性存储器。
- 按照存储器在计算机系统中的作用分类可分为主存储器、辅助存储器、缓冲存储器和控制存储器等。
存储器的主要性能指标
- 1.存储器容量
- 2.存取时间
- 3.存取周期
- 4.可靠性
- 5.功耗与集成度
- 6.性能价格比
- 7.存取宽度
随机存储器和只读存储器,分类情况为:
半导体存储器可分为只读存储器(ROM)和随机存储器(RAM)。
只读存储器(ROM)分为掩膜ROM、可写入只读存储器PROM、可擦除的可编程只读存储器EPROM和电擦除只读存储器E2PROM。
随机存储器(RAM)分为静态RAM(SRAM)和动态RAM(DRAM)。
存储器的扩展技术
1.存储器容量的扩展
由于存储芯片的容量有限,一个存储体往往是要由一定数量的芯片构成的。根据存储器所要求的容量和选定的存储芯片的容量,就可以计算出总的芯片数。
总片数=总容量/容量/片
例:存储器容量为8K*8b,选用1K*4b的2114芯片,需要的芯片数为(8K*8b)/(1K*4b)=16片
(1)位扩展
即只在位数进行扩展,如使用64K*1b的SRAM芯片组成64K*8b的存储器,所用芯片数为(64K*8b)/(64K*1b)=8片。
(2)字扩展
即只在字数方向扩展,而位数不变,如使用16K*8b的SRAM芯片组成64K*8b的存储器,所用芯片数为(64K*8b)/(16K*8b)=4片。
2.存储芯片的地址分配和片选
存储器与CPU相连时,特别是在扩展存储容量的场合下,主存的地址分配就是一个重要的问题;确定地址分配后,又有一个选择存储芯片的片选信号的产生问题。
CPU要实现对存储单元的访问,首先要选择存储芯片,即进行片选;然后再从选中的芯片中依地址码选择出相应的存储单元,以进行数据的存取,这称为字选。片内的字选是由CPU送出的N条低位地址线完成的,地址线直接接到所有存储芯片的地址输入端,N由片内存储容量作2的对数运算决定,而片选信号则是通过高位地址得到的。实现片选的方法分为线选法、全译码法和部分译码法。
习题:现有1024*1b的存储芯片,若用它组成容量为16K*8b的存储器。试求:
(1)实现该存储器所需的芯片数量。
(2)该存储器所需的地址码总位数是多少?其中几位选片?几位用作片内地址?
答:(1)N=(16K*8b)/(1K*1b)=128片,在计算所需芯片总量时只需要明确组成芯片大小和最终目标容量即可。
(2)16K×8=2^14×8,地址线为14根,芯片为1024位=2^10位,则需要10位用于片内地址,剩下4位用作选片。
地址线等条数由生成的最终存储器中地址数目来确定,片内地址是组成单元的所需位数,剩下的便是用来选片的。
习题记录
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/186642.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...