常见名词
CPU,中央处理单元,Central Processing Unit
ALU,算术逻辑单元,Arithmetic and Logic Units
CU,控制单元,控制器,Control Unit
CPU通常由中央处理单元,算术逻辑单元,寄存器组三部分组成
EU,执行单元,Execution Unit
BIU,总线接口单元,Bus Interface Unit
PC,程序计数器,Program Counter
IR,指令寄存器,Instruction Register
GR,通用寄存器,General Register
注意$IO$端口和$IO$接口不是同一个东西
操作系统知识:程序计数器(pc)、指令寄存器(IR)、通用寄存器(GR)、状态寄存器(SR)、程序状态字PSW_pc和ir-CSDN博客
特殊运算符和指令
PTR
用来指定存储器操作数的字长
Byte PTR[BX]
所有单操作数指令要求操作数不能是立即数,如果是存储器操作数,需要指定字长
微型计算机基础概论
微型计算机系统
微型计算机系统 由 硬件系统 和 软件系统 组成 硬件系统 硬件系统 由 微型计算机(主机) 和 外设组成
- 微型计算机(主机)由 微处理器(CPU),存储器 ,IO接口 ,总线 组成
- 外设 就包括键盘,鼠标,显示器,硬盘等
软件系统 软件系统 由 系统软件 和 应用软件 构成
微型计算机运行流程 微机运行的基本流程为,程序存储在存储器中,按程序流程自动连续取出指令并执行;自动连续的实现是程序计数器 PC 的自增;步骤可概括为取指令、译码、执行。修改 PC 指针的值,可实现程序的顺序执行、跳转、循环、过程调用和中断服务等功能。
计算机中的数制与编码
十进制D
,二进制B
,十六进制H
,八进制O
有符号二进制数的表示
最高位是符号位,0表示正号,1表示负号
原码 数值部分保持不变,最高位是符号位 反码 正数的反码与正数的原码一样 负数的反码 等于 负数原码 数值部分 按位取反 补码 正数的补码与正数的反码和原码一样 负数的补码 的符号位 与 负数原码一致,数值部分等于 负数原码 数值部分取反后再加1
特殊数-128
的补码表示为10000000
微处理器与总线
CPU中央处理单元
CPU
是微型计算机的运算和指挥控制中心
一般由ALU(运算器)
,CU(控制单元)
,寄存器组
组成
CPU内还有两个独立部件:EU(执行单元)和BIU(总线接口单元)
微处理器主要性能指标
CPU的字长/位数,及其一次性能处理的位数 CPU主频,指的是CPU时钟频率
CU控制单元
控制器的作用是控制程序的执行,是整个系统的指挥中心 具备以下功能
- 指令控制
- 时序控制
- 操作控制
EU执行单元
EU负责分析指令(指令译码),执行指令 在工作时不断从BIU的指令队列取指令
BIU总线接口单元
BIU主要功能是负责CPU与存储器,IO接口之间的信息传送 BIU可以负责取指令,取操作数,写结果 BIU内部有一个指令队列和地址加法器 地址加法器能产生20位的物理地址
CPU程序执行步骤
- 从存储器取出下一条指令
- 指令译码
- 如果指令需要,从存储器中读取操作数
- 执行指令(算术逻辑运算,IO操作,数据传输等)
- 如果需要,写入存储器 核心步骤,取指令,译码指令,执行指令
工作时序
- 时钟周期:每个时钟脉冲持续的时间
- 总线周期:通过总线进行一次读或写操作的过程称为一个总线周期,一个总线周期包含多个时钟周期
- 指令周期:执行一条指令所需的时间,一个指令周期包含多个总线周期 一个基本的总线周期由四个时钟周期构成,若内存或 IO 接口速度较慢,则还会在 T3 后插入 Tw 等待周期。
写操作为例的总线周期 包含4个时钟周期(T1,T2,T3,T4) T1地址输出,T2缓存,T3和T4数据输出
8088/8086 CPU
8088与8086处理器的区别
8088 外部数据线为8根(8086为16根),为准16位CPU,16 位数据要分两次传送;( 注意:8088和8086均为16位处理 器,内部数据线均为16位,且地址总线均为20位)
指令预取队列:8088为4字节,8086为6字节
两者均有两种工作模式,最小工作模式和最大工作模式
8088/8086指令流水线
采用EU(执行单元)和BIU(总线接口单元)并行工作,可同时取指令,执行指令,分析指令
补充-流水线技术
在指令执行过程中,有几类指令相关影响流水线中指令的执行,使得指令不能在预先设定的执行周期中执行,造成流水线断流
相关问题
结构相关;数据相关;控制相关
结构相关
当CPU的硬件结构不能够同时支持几条指令的执行时,这几条指令将发生结构相关,比如流水线同时访问同一个存储器
数据相关
一条指令的执行需要上一条或者上几条指令的执行结果时 ,会造成流水线的断流现象。
所以,当发生数据相关时,需要尽可能早的把上一条或上几条指令的执行结果 交给相关指令作为操作数。这就需要“内部前推
控制相关
当指令执行到分支指令或者跳转指令时,将产生控制相关,此时会产生流水线断流。 解决方法:
- 阻塞流水线直到确定走向
- 预测分支是否发生,并给予该预测执行指令
8088/8086内存分段
8088/8086内部结构为16位,为了增大内存管理能力使其能产生20位的物理地址,采用了分段管理方法
段首地址即段基地址
20位物理地址=段基地址 * 16+段偏移地址
8088/8086内部寄存器
8088/8086内部寄存器分为 通用寄存器(8个),段寄存器(4个),控制寄存器(2个)
通用寄存器
通用寄存器包括 数据寄存器,地址指针寄存器,变址寄存器
数据寄存器
- AX(Accumulator):累加器,常用于存放算术逻辑运算中的操作数,另外所有的IO指令都是用累加器与外设接口传送信息
- BX(Base):基址寄存器,常用来存放访问内存时的偏移地址(一般和DS一起用DS:[BX])
- CX(Count):计数寄存器,在循环和串操作指令中用作计数器
- DX(Data):数据寄存器,在寄存器间接寻址的IO指令中存放IO端口地址
都可拆分为H,L两个8位寄存器
在做双字节乘除法运算时,DX与AX可以合起来存一个双字长的数(32位),DX存高16位,AX存低16位
地址指针寄存器
- SP(Stack Pointer):堆栈指针寄存器,常用来存放 栈顶偏移地址
- BP(Base Pointer):基址指针寄存器,一般也用来存放访问内存时的偏移地址(一般和SS一起用SS:[BP])
BX和BP区别: (1)作为通用寄存器,二者均可用于存放数据;(2)作为基址寄存器,用BX表示 所寻找的数据在 数据段 ;用BP则表示数据在 堆栈段
变址寄存器
- SI(Source Index):源变址寄存器
- DI(Destination Index):目的变址寄存器
段寄存器
段寄存器,用于存放段基址,即段起始地址的高16位
- CS(Code Segment):代码段寄存器
- SS(Stack Segment):堆栈段寄存器
- DS(Data Segment):数据段寄存器
- ES(Extra Segment):附加数据段寄存器
控制寄存器
- IP(Instruction Pointer):指令指针寄存器,其内容为下一条要执行指令的偏移地址(CS段中)
标志寄存器
- FLAGS:状态寄存器,16位寄存器
状态标志位
- CF(Carry Flag):进位标志位,进行加减运算时,若最高位向前有进位错位,则CF=1
- PF(Parity Flag):奇偶标志位,运算结果低8位中1的个数为偶数,PF=1
- AF(Auxiliary Carry Flag):辅助进位标志位,加减法运算,D3向D4进位时,AF=1
- ZF(Zero Flag):零标志位,运算结果为0时,ZF=1
- SF(Sign Flag):当运算结果最高位为1时,SF=1
- OF(Overflow Flag):当算术结果超出了
带符号数
的范围时,即溢出时,OF=1
控制标志位
- TF(Trap Flag):陷井标志位,也叫跟踪标志位。TF=1时,使CPU处于单步执行指令的工作方式
- IF(Interrupt Enable Flag):中断允许标志位。IF=1使CPU可以响应可屏蔽中断请求
- DF(Direction Flag):方向标志位。在数据串操作时确定操作的方向
IF=1,允许响应可屏蔽中断请求,对应指令:STI IF=0,禁止响应可屏蔽中断请求,对应指令:CLI
DF=0,串操作指令中的地址是增加方向,对应指令:CLD DF=1,串操作指令中的地址是减少方向,对应指令:STD
TF=1,CPU按跟踪方式(单步方式)执行程序
8088外部引脚及其功能
最小模式下的引脚描述
按功能对引脚进行划分:
- 基础工作引脚:$Vcc,GND,CLK(4.77Mhz)$
- 地址总线:${AD}0-{AD}7,A_8-A{15},A{16}-A_{19}$
- 数据总线:${AD}_0-{AD}_7$
- 模式控制引脚:$MN/\overline{MX}$
- 读写控制引脚:$IO/\overline M,\overline{RD},\overline{WR}$
- 中断控制引脚:$INTR,NMI,INTA$
- 复位:$RESET$
- 总线保持请求/响应:$HOLD,HLDA$
- 地址锁存信号:$ALE$
- 外部就绪信号:$READY$
- 测试信号输入:$\overline {TEST}$
- 数据传输方向控制:$DT/\overline R$
- 数据允许信号:$\overline {DEN}$
- 系统状态输出:$\overline{{SS}_0}$(与$IO/\overline M,DT/\overline R$合作)
各引脚具体功能
-
$A_{16}-A_{19}/S_3-S_6$:地址,状态复用的引脚,三态输出。(分时复用)状态信号中$S_6$恒等于0,$S_5$指示中断允许标志位$IF$的状态,$S_4,S_5$组合指示CPU正在使用的段寄存器
-
$A_8-A_{15}$:8位地址信号,三态输出
-
${AD}{0}-{AD}{7}$:地址,数据分时复用的双向信号线,三态。当$ALE=1$时,这些引脚上传输的是地址信号,当$\overline {DEN}=0$时,这些引脚上传输的是数据信号
-
$IO/\overline M$:输入输出/存储器控制信号,三态。该引脚是用来区分当前操作是访问存储器还是访问$IO$端口
-
$\overline {WR}$:写信号输出,三态。当此引脚输出为低电平时,表示CPU正在对存储器或IO端口进行写操作
-
$DT/\overline {R}$:数据传送方向控制信号,三态。高电平时,CPU向存储器或IO端口发送数据;低电平时,CPU从存储器或IO接口接收数据
-
$\overline {DEN}$:数据允许信号,三态。该信号有效时,表示 数据总线 上具有有效信号。它在每次 访问内存或IO接口以及在中断响应期间有效,常用作数据总线驱动信号
-
$ALE$:地址锁存信号,三态输出,高电平有效。它为高电平时,表示CPU地址线上有有效地址
-
$\overline {RD}$:读选通信号,三态输出,低电平有效。其有效时,表示CPU正在对存储器或IO接口进行读操作
-
$READY$:外部同步控制输入信号,高电平有效。它是由被访问的内存或IO设备所发出的响应信号。它为高电平时,表示存储器或IO设备已经准备好,CPU可以进行数据传送 。CPU在T3的周期采样$READY$信号,若其为低,CPU自动插入等待周期$T_w$
-
$INTR$ :可屏蔽中断请求输入信号,高电平有效。CPU在每条指令的最后一个周期采样该信号,以决定是否进入中断响应周期
-
$\overline {TEST}$:测试信号输入引脚
-
$NMI$:非屏蔽中断请求输入信号,上升沿触发。这个引脚上的中断请求信号不能用让软件屏蔽,CPU在当前指令
-
$RESET$:系统复位输入信号,高电平有效。
-
$\overline {INTA}$:中断响应信号输出,低电平有效,此信号是CPU对中断请求信号$INTR$ 的响应。 在响应过程中,CPU在$\overline {INTA}$上连续输出两个负脉冲用作外部中断的中断向量码的读选通信号
-
$HOLD$:总线保持请求信号输入,高电平有效。当某一总线主控设备要占用系统总线时,通过此引脚向CPU提出请求
-
$HLDA$:总线保持响应信号输出,高电平有效。这是CPU对$HOLD$请求的响应信号。CPU收到$HOLD$信号后,就会对其做出响应,一方面会使CPU的所有三态输出的地址信号,数据信号和对应的控制信号变为高阻态;同时输出一个有效的$HLDA$,表示CPU已放弃对总线的控制。当CPU检测到$HOLD$信号变低后,就立即使$HLDA$变低,同时恢复对总线的控制
-
${SS}_0$:系统状态信号输出
-
$CLK$: 时钟信号输入引脚
-
$Vcc$:5V电源输入引脚
-
$GND$:地线
8088/8086结构功能
外部结构
总线
总线定义
总线是传输信号或信息的公共路径,是遵循同一技术规范的连接与操作方式
总线特点
公共性,可同时挂在多个设备
总线分类
按传送的信息类型分类
- 数据总线(Data Bus)
- 地址总线(Address Bus)
- 控制总线(Control Bus)
按总线的层次结构划分
- 前端总线
- 系统总线
- 外设总线
总线结构
单总线结构,多总线结构
总线基本功能
总线上任意时刻只能允许一对设备进行信息交换
- 总线传输同步:协调通信双方的传输操作
- 总线仲裁控制:避免多个设备同时使用总线造成的冲突,确定总线上哪个设备可以占用总线传输数据
- 出错处理:检错和处理
- 总线驱动:增加驱动能力
总线的数据传送
1.同步定时的传输方式
用公共的时钟统一各部件数据发送和接收的时机 (严格按节拍进行,不需要握手信号,效率高)
2.异步定时的传输方式
用控制和状态信号协调各部件数据发送和接收的时机(应答式)
3.半同步定时的传输方式
允许不同速度的部件协同工作,主控设备可以根据从设备的状态延长总线 时钟周期,但总线周期一定是时钟周期的整数倍
常用系统总线和外设总线标准
常用的系统总线标准包括:ISA 总线、PCI 总线、PCIE 总线、AGP 总线 常用的外设总线标准包括:SATA 总线、USB 总线、RS485 总线、IDE 总线、RS232 总线
指令系统
指令:控制计算机完成指定操作并能够被计算机所识别的命令。 指令系统:一台计算机能够识别的所有指令的集合称为该机的指令系统
指令格式: 操作码 操作数1,操作数2
操作数数量:零操作数指令,单操作数指令,双操作数指令
指令中操作数类型:立即操作数,寄存器操作数,存储器操作数 寄存器操作数的指令执行速度> 立即数操作数> 存储器操作数
CISC(Complex Instruction Set Computer),复杂指令系统计算机 RISC(Reduced Instruction Set Computer),精简指令系统计算机
指令性指令是CPU中实际存在的可执行的语句。指示性语句是用于说明程序结构,变量等的语句,后者在编译过程中执行,编译完成后不再存在
对于每个指令
- 指令码的含义
- 指令对操作数的要求
- 指令对标志位的影响
- 指令的功能
寻址方式
立即寻址(Immediate Addressing)
源操作数是立即数,立即数存放在代码段
MOV AX,3102H
直接寻址(Direct Addressing)
操作数是存储器操作数,存放的地址由指令直接给出
MOV AX,[3102H]
寄存器寻址(Register Addressing)
操作数为CPU内部寄存器
MOV AX,BX
寄存器间接寻址(Register Indirect Addressing)
寄存器存放的不是数据本身,而是存放数据的偏移地址 寄存器间接寻址方式中 存放操作数偏移地址 的寄存器只允许是 $SI,DI,BX,BP$,它们也被称为间址寄存器
- 选择$SI,DI,BX$作为间址寄存器时,操作数在数据段,段基址由$DS$决定
- 选择$BP$作为间址寄存器,则操作数在堆栈段,段基地址由$SS$决定
允许段重设
MOV AX,[BX]
MOV AX,ES:[SI]
寄存器相对寻址
操作数在内存中的偏址地址由间址寄存器的值加上一个8位或16位的偏移量
MOV AX,DATA[BX]
MOV AX,[BX+DATA]
基址-变址寻址
基址-变址寻址方式由一个基址寄存器存的值和一个变址寄存器存的值 相加得到偏移地址
- 不允许出现两个基址寄存器
- 不允许出现两个变址寄存器
MOV AX,[BX][SI]
MOV AX,[SI][BX]
MOV AX,[BX+SI]
基址-变址-相对寻址
所寻地址在内存中,偏移地址由一个基址寄存器、一个变址寄存器和数值偏移 量相加给出。其它规定同“基址-变址寻址”
MOV AX,DATA[SI][BX]
MOV AX,[BX+DATA][SI]
MOV AX,[BX+SI+DATA]
MOV AX,[BX+SI]DATA
MOV AX,[BX]DATA[SI]
隐含寻址
指令中隐含了部分固定的操作数的地址
MUL BL
把AL与BL相乘的乘积放入AX
堆栈段
规定由SS指示堆栈段的段基址,堆栈的最低地址
堆栈指针SP始终指向堆栈的顶部(栈顶)。堆栈的最高地址叫栈底
栈的压入指令
PUSH src
栈的弹出指令
POP dest
操作原则
- 操作数为1个字,且只能是寄存器或存储器操作
- 存放数据从高地址向低地址方向增长
- 堆栈段位置由SS决定,SP指向栈顶
- PUSH压入过程为先减SP再压数据
|
|
- POP弹出过程为先弹数据再加SP
|
|
堆栈主要用途:保护现场
数据传送指令
数据传送指令的执行均不影响标志位
一般传送指令MOV
MOV dest,src
对操作数要求:
- 两个操作数字长相同
- 两个操作数不能同时为存储器操作数
- 不能用立即数直接给段寄存器赋值
- 两个操作数不能同时为段寄存器
- IP和CS只作为MOV的源操作数,不做目标操作数
- FLAGS整体不能作为操作数
两个操作数不能同时为存储器操作数,原因是存储器不能确定字长,是在存储器中取1个字节还是多个字节,没有限定
堆栈操作指令PUSH和POP
PUSH src
POP dest
操作数为1个字,且只能是寄存器或存储器操作,不能是立即数
交换指令XCHG
功能:交换源地址与目标地址中的内容
XCHG OPRD1,OPRD2
输入/输出指令IN和OUT
功能:对输入/输出端口进行读写 输入指令IN用于从IO端口读数据到累加器AL(AX)中 输出指令OUT用于把累加器AL(AX)的内容写到IO端口 IO端口寻址
- 直接寻址:指令中的IO端口地址为8位
|
|
- 寄存器间接寻址:端口地址为16位,由DX寄存器指定
|
|
操作原则
- 只有AL或AX可以与I/O端口进行数据交换
- IO端口地址可以是8位立即数指向的地址(即直接寻址)或由DX保存的16 位地址(即间接寻址) 当端口地址是16位时,只能用DX取给定端口地址
取偏移地址指令LEA (Load Effect Address)
功能:将存储器操作数的16位偏移地址送到指定寄存器
LEA reg16, mem
操作原则
- 源操作数必须是存储器操作数,如:
LEA BX, BUFFER
LEA BX, [SI]
- 目标操作数必须是16位通用寄存器,最好使用间址寄存器(BX, SI, DI, BP) 源操作数必须是存储器操作数
算数运算指令
不带进位和带进位的加减指令 无符号和有符号的乘除指令
算术运算指令的执行会影响状态标志位 乘法指令执行结果为相乘数的双倍字长 除法指令被除数是除数的双倍字长
乘法指令
乘法指令采用隐含寻址,隐含了存放被乘数的累加器AL或AX,以及存放结果的AX或AX,DX
无符号乘法指令
MUL BYTE PTR[BX]
有符号乘法指令
IMUL OPRD
除法指令
DIV OPRD
如果$OPRD$是单字节数
意思是$AX/OPRD$
结果:AL=商,AH=余数
如果$OPRD$是双字节数
意思是$DX,AX/OPRD$
结果:AX=商,DX=余数
算数移位指令
非循环移位
算数移位,逻辑移位 左移,右移
循环移位
分为带进位移位和不带进位移位
存储器
RAM(Random-Acess Memory)一般可分为SRAM(静态RAM),DRAM(动态RAM) ROM(Read Only Memory)一般可分为 掩膜ROM,一次性可写ROM,EPROM,EEPROM,闪速存储器Flash
高位地址,选通芯片 低位地址,选芯片的读写单元
译码,将输入的一组高位地址信号通过变换,产生一个有效的输出信号,用于选中某一个存储器芯片,从而确定了该存储器芯片在内存的地址范围
全地址译码 用全部高位地址信号作为译码信号,使得存储器芯片的每一个单元都占据一个唯一的内存地址 部分地址译码 用部分高位地址信号作为译码信号,使得被选中存储器芯片占有几组不同的地址范围
Cache高速缓冲器 Cache高速缓冲存储器,Cache是构成内存储器的部件之一,设置Cahce的原因是内存的速度与处理器的工作速度不匹配
微机中的存储器系统
- Cache存储器系统
- 虚拟存储器系统 Cache存储系统 Cache存储系统主要有Cache高速缓冲器和主内存构成,有硬件系统负责管理
IO系统
输入输出系统 在计算机系统中,通常把处理器和主存储器之外的部分统称为输入/输出系统, 包括输入/输出设备、输入/输出接口和输入/输出软件
IO接口 IO接口就是外设连接到系统总线上的一组逻辑电路的总称
IO端口 端口是接口电路中用于缓存数据及控制信息的部件 CPU与I/O接口进行通信实际上是通过I/O接口内部的一组寄存器实现的,这些寄存器通常称为I/O端口(I/O Port)。它包括3种类型:数据端口、状态端口和命令(控制)端口
IO端口编址方式 分为统一编址和独立编址
- I/O端口与内存单元统一编址,指令及控制信号统一,内存地址资源减少
- I/O端口独立编址,内存地址资源充分利用,使用不同的控制信号,能够应用于端口的指令较少
输入接口需要具备数据控制能力,一般采用三态门接口,防止外设的输入影响数据总线,如74LS244
输出接口需要具备数据锁存能力,一般采用锁存器接口,如74LS273
基本输入输出方式
1.无条件传送方式 2.查询方式 3.中断方式 4.直接存储器存取方式(DMA)
中断
CPU执行程序中,由于发生了某种随机的事件(外部或内部),引起CPU暂时 中断正在运行的程序,转去执行一段特殊的服务程序(称为中断服务程序或 中断处理程序),以处理该事件,该事件处理完后又返回被中断的程序继续 执行,这一过程称为中断
中断响应过程
可屏蔽外部中断响应过程
通过两个连续的中断响应总线周期获取中断类型码 获取中断向量后并调用中断,服务程序
内部中断响应过程
无中断响应总线周期 中断类型码固定或由指令(INT n)给出
主要芯片
1.计数器8253
特殊引脚
- CLK——时钟脉冲输入
- GATE——门控信号输入
- OUT——定时输出
编程方式
- 控制字直接写入控制寄存器
- 计数值写入对应计数器
工作方式
总览
- 16位减法计数,计数值减为0时输出相应控制信号
- 输出控制信号的形式可通过软件设置
方式0——计数结束中断
软件启动,不自动重复计数 计时结束输出高电平,输出可以用作中断请求信号
不自动重复计数是指 每写入一次计数初值只计数一个周期
方式1——可重复触发的单稳态触发器
硬件启动,不自动重复计数 但是可以通过GATE重复触发计数,当GATE出现上升沿时,下一个CLK的下降沿开始计数 计数结束后,OUT端输出高电平
方式2——频率发生器
既可以软件启动,也可以硬件启动 自动重复计数,OUT端输出N-1个时钟周期的高电平,1个时钟周期的低电平
方式3——方波发生器
软硬件启动,自动重复计数 输出对称方波(连续方波) N为偶数,完全对称,N为奇数,正脉冲会长一点
方式4——软件触发选通
软件启动,不自动重复计数 计数结束输出一个CLK宽度的低电平
方式5——硬件触发选通
硬件启动,不自动重复计数 波形与方式4一致,计数结束输出一个CLK宽度的低电平
小结
需要两个写脉冲——两次写操作
- 第一次写脉冲写入控制字
- 第二次写脉冲写入计数初值
能输出连续波形的只有方式2和方式3
2.可编程并行接口8255
三个端口
A口:支持0,1,2工作方式 B口:支持0,1工作方式 C口,支持0工作方式
工作方式
方式0——基本输入输出方式
方式1——选通工作方式
方式1输出接口A
$\overline {OBF}$:接口输出缓冲器满信号,告诉外设可以从该端口读走信号 $\overline {ACK}$:外设从端口取走数据,发出响应信号 外设取走信号后,发出$\overline {ACK}$响应信号,同时使$\overline {OBF}=1$,同时还会产生一个有效的$INTR$信号
方式1输入接口A
$\overline {{STB}_A}$:外设写入 ${{IBF}_A}$:当输入缓冲器满后,接口发出的高电平有效信号
方式2——双向传送方式
可以既作为输入口,又作为输出口 只有A口可以工作在此模式下,当A口工作在方式2时,B口可以工作在方式0或1
控制字
方式控制字:用于确定3个端口的工作方式及数据传送方向
位控制字:仅用于C端口,可设置C口某位的初始状态(高低电平)
D7=1,方式控制字 D7=0,位控制字
3.DA转换芯片DAC0832
差动输出,双缓冲
工作方式
单缓冲工作方式
双缓冲工作方式
4.AD转换芯片ADC0809
5.可编程中断控制器8259A
特殊引脚
$INT$:接CPU的中断请求引脚 $\overline {INTA}$:接CPU的中断响应引脚 $A0$:8259A内部寄存器选择信号 $CAS0-CAS2$:多个8259级联引脚时使用,级联控制线 $\overline {SP}$:在非缓冲模式下,用来指定8259A是从片还是主片,$\overline {SP}$=1的8259是主片
内部结构
工作过程
工作方式
中断优先方式与中断嵌套
(1)固定优先级方式 (2)循环优先级方式
屏蔽中断源的方式
普通屏蔽方式:对IMR某位置1,则屏蔽该位对应的中断请求
级联工作方式
(1)主片、从片有不同的地址 (2)主片、从片分别进行编程
8259A的编程
初始化编程
初始化命令字ICW1(初始化字):单片/多片级联、电平/边沿触发
初始化命令字ICW2(中断向量码):给CPU提供中断向量
注意:例如,写入ICW1,端口地址为20H,写入ICW2时,端口地址为21H
初始化命令字ICW3(级联控制字):指出哪个引脚进行了级联
初始化命令字ICW4(中断结束方式字):给出8259A结束中断处理的方式
操作方式编程
操作命令字OCW1(中断屏蔽字):某位为1则该引脚中断被屏蔽 操作命令字OCW2(中断结束和优先级循环):指定优先级顺序和中断结束方式 操作命令字OCW3(屏蔽方式和状态读出控制字):设置特殊屏蔽、查询方式