微型计算机原理及应用知识点总结

更新时间:2024-01-19 14:52:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一章 计算机基础知识 一、微机系统的基本组成

1.微型计算机系统由硬件和软件两个部分组成。

(1)硬件:

①冯●诺依曼计算机体系结构的五个组成部分:运算器,控制器,存储器,输入设备,输入设备。其特点是以运算器为中心。

②现代主流的微机是由冯●诺依曼型改进的,以存储器为中心。 ③冯●诺依曼计算机基本特点: 核心思想:存储程序; 基本部件:五大部件; 信息存储方式:二进制;

命令方式:操作码(功能)+地址码(地址),统称机器指令; 工作方式:按地址顺序自动执行指令。 (2)软件:

系统软件:操作系统、数据库、编译软件 应用软件:文字处理、信息管理(MIS)、控制软件 二、微型计算机的系统结构

大部分微机系统总线可分为3类:数据总线DB(Data Bus),地址总线AB(Address Bus),控制总线CB(Control Bus)。

总线特点:连接或扩展非常灵活,有更大的灵活性和更好的可扩展性。

三、工作过程

微机的工作过程就是程序的执行过程,即不断地从存储器中取出指令,然后执行指令的过程。 ★ 例:让计算机实现以下任务:计算计算7+10=? 程序:mov al,7 Add al,10 hlt

1

指令的机器码: 10110000(OP) 00000111

00000100(OP) 00001010

11110100(OP)

基本概念:

1. 微处理器、微型计算机、微型计算机系统 2. 常用的名词术语和二进制编码 (1) 位、字节、字及字长

2

(2)数字编码 (3) 字符编码 (4) 汉字编码

3. 指令、程序和指令系统 习题:

1.1,1.2,1.3,1.4,1.5

第二章 8086/8088微处理器 一、8086/8088微处理器

8086微处理器的内部结构:从功能上讲,由两个独立逻辑单元组成,即执行单元EU和总线接口单元BIU。

执行单元EU包括:4个通用寄存器(AX,BX,CX,DX,每个都是16位,又可拆位,拆成2个8位)、4个16位指针与变址寄存器(BP,SP,SI,DI)、16位标志寄存器FLAG(6个状态标志和3个控制标志)、16位算术逻辑单元(ALU)、数据暂存寄存器; EU功能:从BIU取指令并执行指令;计算偏移量。 总线接口单元BIU包括:4个16位段寄存器(CS(代码段寄存器)、DS(数据段寄存器)、SS(堆栈段寄存器)和ES(附加段寄存器))、16位指令指针寄存器IP(程序计数器)、20位地址加法器和总线控制电路、6字节(8088位4字节)的指令缓冲队列;

BIU功能:形成20位物理地址;从存储器中取指令和数据并暂存到指令队列寄存器中。 3、执行部件EU和总线接口部件BIU的总体功能:提高了CPU的执行速度;降低对存储器的存取速度的要求。

4、地址加法器和段寄存器

由IP提供或由EU按寻址方式计算出寻址单元的16位偏移地址(又称为逻辑地址或简称为偏移量),将它与左移4位后的段寄存器的内容同时送到地址加法器进行相加,最后形成一个20位的实际地址(又称为物理地址),以对应存储单元寻址。 要形成某指令码的物理地址(即实际地址),就将IP的值与代码段寄存器CS(Code Segment)左移4位后的内容相加。

【例假设CS=4000H,IP=0300H,则指令的物理地址PA=4000H×10H+0300H=40300H。

3

逻辑地址=4000H: 0300H。

“段加偏移”的寻址机制:物理地址=段基地址(又称段起始地址=段地址×10H)+偏移地址 逻辑地址:其表达形式为“段地址:段内偏移地址”。 二、8086/8088CPU基本执行环境

指令指针(IP)寄存器包含下一条要执行的指令在当前码段中的偏移。

8086/8088的16位标志寄存器F只用了其中的9位作标志位,即6个状态标志位,3个控制标志位。

4

6个状态标志位:

CF(Carry Flag)进位标志:进位或借位时,则CF为1;否则为0。

PF(Parity Flag)奇偶性标志:含有偶数个“1”时,则PF为1;否则为0。 AF(Auxiliary Carry Flag)辅助进位标志:

ZF(Zero Flag)零标志:运算结果为零,ZF为1;否则为0。 SF(Sign Flag)符号标志:OF(Overflow Flag)溢出标志: 3个控制标志位(程序设置(1),清除(0)): DF(Direction Flag)方向标志

IF(Interrupt Enable Flag)中断允许标志 TF(Trap Flag)跟踪(陷阱)标志

存储器组织:

1M字节存储器以64K为范围分为若干段。在寻址一个具体物理单元时,必须要由一个基地址再加上由SP或IP或BP或SI或DI等可由CPU处理的16位偏移量来形成实际的20位物理地址。

三、总线周期

1、时钟周期:时钟脉冲信号的一个循环时间叫一个时钟周期,又称为一个“T”状态,是微处理器工作的最小时间单位 2、总线周期(机器时间):完成一次对存储器或I/O端口的操作所需要的时间。 3、指令周期:执行一条指令所需要的时间。

1个最基本的总线周期由4个时钟周期组成,4个时钟周期又称为4个状态,。 四、8086/8088引脚

地址/数据总线AD15~AD0:分时复用 地址/状态总线:A19/S6~A16/S3: 控制总线:

BHE/S7:表示高8位数据有效,T1输出。

RD:存储器或I/O口读信号,输出,低电平有效,T2~T3有效。

READY:准备就绪信号,输入,高电平有效。READY=1时,表示CPU访问的存储器或I/O端口已准备好传送数据,马上可以进行读/写操作。 TEST:测试信号,输入,低电平有效。

INTR:可屏蔽中断请求信号,输入,电平触发,高电平有效。 CPU每执行完一条指令,即检查INTR,为“1”表示有中断清求,为“0”,则没有。是否响应受标志寄存器中IF的控制

5

NMI:不可屏蔽中断请求信号,输入,上升沿触发。

RESET:复位信号,输入,高电平有效。CPU复位后,从FFFF0H单元开始读取指令。 电源线和地线: VCC,GND

五、8086系统的最小/最大工作方式 最小工作方式:

① INTA:中断响应信号,输出,低电平有效。 ② ALE:地址锁存允许信号,输出,高电平有效。 ③ DEN:数据允许信号,三态输出,低电平有效。 ④ DT/R:数据发送/接收控制信号,三态输出。 ⑤ M/IO:存储器或I/O端口选择信号,三态输出。M/IO=1,表示当前CPU正在访问存储器;M/IO=0,表示当前CPU正在访问I/O端口。

⑥ WR:写信号,三态、输出。当WR=0低电平有效时,表示当前CPU正在对存储器或I/O端口进行写操作。

⑦ HOLD:总线保持请求信号,输入,高电平有效。 ⑧ HLDA:总线请求响应信号,输出,高电平有效。 最大工作方式:

在最大方式系统中,外加有8288总线控制器,一般包含2个或多个处理器。 8282:地址锁存器,8286:数据收发器 第三章 8086指令系统 一、计算机语言

1.机器语言:面向机器,0和1表示机器是否可接受并执行指令。 2.汇编语言:面向人,符号表示,必须翻译才能执行。 汇编语言指令的格式: 一般格式:操作码 操作数

具体格式:标号:操作码(空格分隔符)目的操作数(存放结果),(逗号分隔符)源操作数;注释

一条指令可以无操作数,必须有操作码,不同的机器,操作数个数不同。 3.高级语言

二、指令寻找操作数的寻址方式

操作数通常保存在:(1)指令中(2)CPU内部寄存器中(3)内存单元中(4)I/O端口中;

8086/8088CPU与数据有关寻址方式:

1. 立即寻址 2.寄存器寻址 3.直接寻址 4.寄存器间接寻址5.变址寻址6.基址寻址 7.基址加变址寻址9.相对基址变址寻址10. I/O端口寻址11. 数据串寻址 例:

设DS=1200H,BX=05A6H,SS=5000H,BP=40A0H,SI=2000H,DI=3000H,位移量DISP=1618H,试判断下列指令的寻址方式,并求出在各种寻址方式下,这些寄存器与位移量所产生的有效地址EA和实际地址(物理地址)PA。说明指令执行的结果。 ① MOV AX,[0618H]

这是一条直接寻址方式的指令。

6

EA=0618H

PA=12000H+0618H=12618H

该指令执行的结果是将数据段的实际地址为12618H和12619H两单元中的内容取出送AX。 ② MOV AX,[BX]

这是一条以数据段基址寄存器BX间接寻址的指令。 EA=05A6H

PA=12000H+05A6H=125A6H

该指令执行的结果是将数据段的125A6H和125A7H两单元的字内容取出送AX。 ③ MOV AX,[BP]

这是一条以堆栈段基址寄存器BP间接寻址的指令。由于寻址时用上了BP寄存器,则操作数所默认的段寄存器就是SS。 EA=40A0H

PA=50000H+40A0H=540A0H该指令执行的结果是将堆栈段的540A0H和540A1H两单元的字内容取出送AX。 ④ MOV AX,[DI]

这是一条变址寻址的指令。 EA=3000H

PA=12000H+3000H=15000H

该指令执行的结果是将数据段的15000H和15001H两单元的字内容取出送AX。 ⑤ MOV AX,[BX+DI]

这是一条基址加变址寻址的指令。 EA=05A6H+3000H=35A6H PA=12000H+35A6H=155A6H

该指令执行的结果是将数据段的155A6H和155A7H两单元的字内容取出送AX。 ⑥ MOV AX,[BP+SI+DISP]

这是一条带位移量的基址加变址寻址的指令,又叫相对基址加变址寻址的指令,且操作数的默认段为SS。

EA=40A0H+2000H+1618H=76B8H PA=50000H+76B8H=576B8H

该指令执行的结果是将堆栈段的576B8H和576B9H两单元的字内容取出送AX。 三、指令的寻址=>CS:IP(不用表示,固定的) 转移寻址:用于控制转移类指令。

实质:控制转移类指令通过改变IP和CS值,从新位置开始执行指令。 转移寻址分成2种类型:段内转移和段间转移。 条件转移指令只允许实现段内转移,而且是段内短转移,由指令中直接给出8位地址位移量 无条件转移和调用指令又可分为段内短转移、段内直接转移、段内间接转移、段间直接转移和段间间接转移等5种不同的寻址方式。 段间转移=远转移。 四、指令分类

8086/8088的指令按功能可分为6类:数据传送、算术运算、逻辑运算、串操作、程序控制和CPU控制。

7

1.数据传送类指令

数据传送类指令可完成寄存器与寄存器之间、寄存器与存储器之间、寄存器与I/O端口之间的字节或字传送,共同特点是不影响标志寄存器的内容,分成4种类型。 (1通用数据传送指令

(1)MOV d,s;d←s,即将由源s指定的源操作数送到目标d

源操作数(s)可以是8/16位寄存器、存储器的某个字节/字或者是8/16位立即数;目标操作数(d)不允许为立即数;两者不能同时为存储器操作数。 基本传送指令MOV d,s的类型有以下7种。

8

① MOV mem/reg1,mem/reg2

由mem/reg2所指定的存储单元或寄存器中的8位数据或16位数据传送到由mem/reg1所指定的存储单元或寄存器中,但不允许从存储器传送到存储器。 ② MOV mem/reg,data

将8位或16位立即数data传送到由mem/reg所指定的存储单元或寄存器中。 ③ MOV reg,data

将8位或16位立即数data传送到由reg所指定的寄存器中。 ④ MOV ac,mem

将存储单元中的8位或16位数据传送到累加器ac中。 ⑤ MOV mem,ac

将累加器AL(8位)或AX(16位)中的数据传送到由mem所指定的存储单元中。 使用MOV指令时要注意的问题: CS不能做目的操作数

不能直接从存储器到存储器之间数据传送 2条伪指令:

WORD PTR表示字数据类型 BYTE PTR表示字节数据类型 (2)PUSH和POP

PUSH s:将源操作数(16位)压入堆栈

POP d:将堆栈中当前栈顶两相邻单元的数据字弹出到d

压栈指令PUSH AX:将AX(16位)中的数据压入栈,AX是源操作数,栈顶是目的操作数,由(SS:SP)指向。 出栈指令POP AX:将栈顶信息弹出到AX中,AX是目的操作数,栈顶是源操作数,由(SS:SP)指向。

设当前CS=1000H,IP=0020H,SS=1600H,SP=004CH,则该指令执行时,将当前栈顶两相邻单元1604CH与1604DH中的数据字弹出并传送到CX中,同时修改堆栈指针,SP+2→SP,使之指向新栈顶1604EH。

堆栈是内存中开辟的一个段,存放需要保护的信息(数据、地址)。堆栈操作时应遵循的5点原则:

堆栈的存取操作每次必须是一个字(即2个字节)。

执行压栈指令时,总是从高位地址向低位地址存放数据,而不象内存中的其他段,总是从低地址向高地址存放;执行出栈指令时,从堆栈中弹出数据则正好相反。

堆栈段在内存中的物理地址由SS和SP或SS和BP决定,其中,SS是堆栈段寄存器,它是栈区的最低地址,称为堆栈的段地址;SP是进栈或出栈指令隐含的堆栈地址指针,它的起始值是堆栈应达到的最大偏移量,即指向栈顶地址。堆栈段的范围是SS×16至SS×16+SP的起始值。每执行一次压栈指令,则SP-2,推入堆栈的数据放在栈顶;而每执行一次弹出指令时,则SP+2。BP寄存器用于对堆栈中的数据块进行随机存取,例如,MOV AX,[BP][SI]指令执行后,将把偏移量为BP+SI的存储单元的内容装入AX。

堆栈指令中的操作数只能是寄存器或存储器操作数,而不能是立即数。

对CS段寄存器可以使用压栈指令PUSH CX,但却不能使用POP CS这种无效指令。 (3)XCHG d,s

该指令功能是将源操作数与目标操作数(字节或字)相互对应交换位置。交换可以在通用寄存器与累加器之间、通用寄存器之间、通用寄存器与存储器之间进行。但不能在两个存储单元之间交换,段寄存器与IP也不能作为一个源或目的操作数。

9

(4)XLAT

这是一条用于实现字节翻译功能的指令,又称为代码转换指令。具体地说,它可以将AL寄存器中设定的一个字节数值变换为内存一段连续表格中的另一个相应的代码,以实现编码制的转换。

2)目标地址传送指令 专用于传送地址码的指令,可传送存储器的逻辑地址(即存储器操作数的段地址或偏移地址)至指定寄存器中,共包含3条指令:LEA、LDS和LES。 (1) LEA d,s 取有效地址指令。功能:把用于指定源操作数(它必须是存储器操作数)的16位偏移地址(即有效地址)传送到一个指定的16位通用寄存器中。 (2) LDS d,s

取某变量的32位地址指针指令。功能:从由指令的源s所指定的存储单元开始,由4个连续存储单元中取出某变量的地址指针(共4个字节),将其前两个字节(即变量的偏移地址)传送到由指令的目标d所指定的某16位通用寄存器,后两字节(即变量的段地址)传送到DS段寄存器中。 (3) LES d,s 这条指令与LDS d,s指令的操作基本相同,其区别仅在于将把由源所指定的某变量的地址指针中后2个字节(段地址)传送到ES段寄存器,而不是DS段寄存器。 3)标志位传送指令

用于传送标志位,共有4条。 (1) LAHF指令功能:将标志寄存器F的低字节(共包含5个状态标志位)传送到AH寄存器中,双操作数,固定寻址,所以被隐藏。

(2)SAHF指令功能:将AH寄存器内容传送到标志寄存器F的低字节。

(3)PUSHF指令功能:将16位标志寄存器F内容入栈保护。其操作过程与前述的PUSH指令类似。

(4)POPF指令功能:将当前栈顶和次栈顶中的数据字弹出送回到标志寄存器F中。 4)I/O数据传送指令 (1)IN累加器,端口号

端口号可以用8位立即数直接给出;也可以将端口号事先安排在DX寄存器中,间接寻址16位长端口号(可寻址的端口号为0~65535)。IN指令是将指定端口中的内容输入到累加器AL/AX中。

(2)OUT 端口号,累加器

与IN指令相同,端口号可以由8位立即数给出,也可由DX寄存器间接给出。OUT指令是将累加器AL/AX中的内容输出到指定的端口。

OUT PORT,AL ;端口PORT←AL,即将AL中的字节内容输出到由PORT直接指定的端口。PORT:符号地址,表示端口直接地址。

OUT DX,AX ;端口(DX)←AX,即将AX中的字内容输出到由DX所指定的端口。

I/O指令只能用累加器作为执行I/O数据传送的机构,直接寻址范围为0~255,寻址大于255的端口地址时,必须用间接寻址的I/O指令。例如,在IBM PC/XT微机系统中,既用了0~255范围的端口地址,也用了255~65535范围的端口地址。 2.算术运算指令 1)加法指令

(1) ADD d,s ;d←d+s

指令功能:将源操作数与目标操作数相加,结果保留在目标中。并根据结果置标志位。

10

2.内存(半导体存储器)的概述

1)主存功能:存放当前运行的程序和数据,供CPU直接访问;存放多机共享的数据,兼顾实现多机通信。

2)主存连接:主存<—>系统总线<—>CPU

系统总线:AB:地址来自CPU的AR寄存器;CB:包括IO/M、WE/RD、Ready等引脚;DB:数据通过CPU的DR寄存器中转。 3)主存分类

RAM:易失性存储器,如U盘;ROM:非易失性存储器; MOS RAM分静态(Static)和动态(Dynamic)RAM两种。 双极性RAM的特点:存取速度快。

静态MOS RAM 的特点:价格便宜,功耗低。内存:MOS 4)内存(半导体存储器)组成和结构 地址译码方式:单译码方式、双译码方式 二、计算机的内存 1.静态RAM

简称SRAM,基本存储电路:RS触发器。

Intel 6116:双列直插式,24引脚,存储容量2K*8位 2.动态RAM 简称DRAM Intel 2116:16K*1位,由于受封装引线的限制,只有7条地址输入线,1条数据线;采用地址线分时复用的技术;控制信号:CAS列,RAS行;

工作方式:写操作:电容充电;读操作:破坏性读出,重写刷新;定时刷新:保持电容电平。

16

特点:定时刷新、分时复用。 3. EPROM芯片

Intel 2716容量为2K×8位,采用NMOS工艺和双列直插式封装 三、存储器的扩充和与CPU连接 1、存储器的扩充

⑴位数的扩充:用固定容量、位数一定的芯片扩充成固定容量、位数较多的存储器。 如:需要2KX8位的存储器:2KX1需8片; 需要2KX8 位的存储器:2KX4需2片; 需要2KX16位的存储器:2KX1需16片; 需要2KX16位的存储器:2KX4需4片。 ⑵字扩展(地址扩展):用一定容量、位数固定的存储芯片扩充成较大容量位数固定的存储器。

如:需要64KX8位的存储器:16KX8需4片; 需要64KX8位的存储器:2KX8需32片。

⑶字、位扩展:用固定容量、固定位数的芯片扩展成较大容量、较大位数的存储器。 如:用16KX4 的存储芯片扩展成64KX8的存储器: 位扩展:需2片; 字扩展:需4片; 共需芯片:2X4=8片。 2、存储器芯片片选信号CS的处理 ⑴芯片介绍:Intel 74LS138和6116 ①3-8译码器74LS138

②存储芯片Intel6116(2KX8) ⑵片选信号的处理方法

①全译码法:片内寻址未用的全部高位地址线都参加译码,译码输出作为片选信号。 ②部分译码:用片内寻址外的高位地址的一部分译码产生片选信号。

③线选法:高位地址线不经过译码,直接(或经反相器)分别接各存储器芯片的片选端来区别各芯片的地址。 例:用Intel 6116芯片组成8KB RAM,设CPU为8086(设地址线为20根),译码器采用74LS138,问题:

1、需要几片6116?

2、地址线和数据线各为多少根?

3、每一片的地址范围是多少?如何确定?是否有重叠区? 4、如何连线?(包括地址线、数据线和状态线) 全译码

分析:①6116为2KX8芯片,需组成8KX8的存储器,只需进行字扩展,需4片。

②要求地址范围是00000H~01FFFH,4片的地址范围分别为:第一片:00000H ~007FFH;第二片:00800H ~00FFFH;第三片:01000H ~017FFH;第四片:01800H ~01FFFH

17

分析结果:

①A0~A10作为芯片片内寻址;

②A11~A13作为74LS的A、B、C端; ③A14~A19组合产生G1、G2A、G2B

部分译码

第六章 计算机接口技术 一、计算机的接口 1.接口的基本结构

线性译码

2.接口的电路信号

接口对外设连接的信号要求 1)数据信号

(1)数字量:通常为8位二进制数或ASCII代码。

(2)模拟量:计算机检测、数据采集或控制的大量的现场信息等 (3) 开关量:一些“0”或“1”两个状态的量 2)状态信号

状态信息是反映外设当前所处工作状态的信息,以作为CPU与外设间可靠交换数据的条件。

18

3)控制信号:用于控制外设的启动或停止。 二、数据传输方式

1.无条件的程序传送方式

定义:用程序——定时——用IN或OUT指令——进行信息的输入或输出。 条件:外设随时都处于数据(设备)准备好状态,无须检测器状态。 2.程序查询传送方式 1)查询输入 (1)接口电路

(2)程序流程

(3)程序编码

POLL: IN AL,STATUS_PORT ;读状态端口的信息

TEST AL,80H ;设“准备就绪”(READY)信息在D7位 JE POLL ;未“准备就绪”,则循环再查

IN AL,DATA_PORT ;已“准备就绪”(READY=1),则读入数据 说明:

POLL:标号;IN:操作码;AL:累加器;STATUS_PORT:符号地址;TEST:检测;JE POLL条件转移,结果是0则返回;

:19

2)查询输出 (1)接口电路

(2)程序流程

(3)查询部分的程序为:

POLL: IN AL,STATUS_PORT;从状态端口输入状态信息 TEST AL,80H;检查BUSY位 JNE POLL;BUSY则循环等待

MOV AL,STORE;否则,从缓冲区取数据 OUT DATA_PORT,AL;从数据端口输出

其中,STATUS_PORT是状态端口的符号地址;DATA_PORT是数据端口的符号地址;STORE是存放数据单元的地址偏移量。

3.中断传送方式

所谓中断是外设或其他中断源中止CPU当前正在执行的程序,而转向为该外设服务(如完成它与CPU之间传送一个数据)的程序,一旦服务结束,又返回原程序继续工作。 中断传送方式的好处是:大大提高了CPU的工作效率。

20

4、DMA传送方式

DMA(Direct Memory Access)方式

第七章 可编程接口芯片技术 一、可编程并行接口芯片8255A

21

? 8255A是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口,共

24位,其各端口工作方式由软件编程设定。

? 8255A是应用最广泛的可编程并行接口芯片,使用方便,通用性强。 1.

8255A的内部结构及引脚功能

8255A是40个引脚双列直播插式芯片,有三个可存取数据的端口,分别是A口、B口、C口,可以通过编程来设置其工作方式;有一个控制端口,可以通控制端口设置8255A 数据端口的工作方式。

22

2.

8255A的工作方式

? A口可工作于方式0、方式1、方式2 ? B口可工作于方式0、方式1 ? C口只能工作于方式0 1)方式0—基本输入输出

在方式0下,每一个端口都作为基本的输入或输出口,端口C口的高4位和低4位以及端口A口、端口B都可独立地设置为输入口或输出口。 2)方式1—单向选通输入输出

三个数据端口分为A、B两组,分别称为A组控制和B组控制。端口A和端口B仍作为数据的输入或输出口,端口C作为联络控制信号,被分成两部分,一部分作为端口A和端口B的联络信号,另一部分仍可作为基本的输入输出口。 3)方式2—双向选通输入输出

端口A的方式2可使8255A与外设进行双向通信,既能发送数据,又能接收数据。可采用查询方式和中断方式进行传输。

3.8255A的编程

1).8255A的控制字 (1)方式选择控制字

(2)端口C置位/复位控制字

23

【例】设8255A的A口和B口工作在方式0,A口作为输入端口,接有8个开关;B口为输出端口,接有8个发光二极管。系统硬件电路如图所示,不断扫描开关Ki,当开关K0闭合时,点亮LED0、LED2、LED4、LED6,其它LED暗;当开关K1闭合时,点亮LED1、LED3、LED5、LED7,其它LED暗;当开关K0和K1同时闭合时退出。设8255A端口A、端口B、端口C及控制端口的地址分别为200H~203H。试编写程序。

解:首先确定工作方式控制字。根据题意,A口为输入端口,B口输出端口,均工作在方式0下,端口C没使用,设没有用到的控制字中对应位设置为0,所以8255A的控制字为:

24

CODE SEGMENT

ASSUME CS:CODE

START:MOV AL,90H ; 8255初始化 MOV DX,203H

AGAIN:MOV DX,200H IN AL,DX

TEST AL,03H ; 检测K0 K1 JZ EXIT

TEST AL,01H ;检测K0 JZ DISP_0

TEST AL,02H ;检测K1

JZ DISP_1 JMP AGAIN

DIAP_0: MOV AL,55H ;偶位上LED亮,奇位上LED暗 MOV DX,201H OUT DX,AL JMP AGAIN

DIAP_1: MOV AL,0AAH ;奇位上LED亮,偶位上LED暗 MOV DX,201H OUT DX,AL JMP AGAIN EXIT: MOV AH,4CH INT 21H CODE ENDS

END START

小结:

1.8255A支持哪几种传送方式?

答:支持无条件的程序传送方式、程序查询传送方式、中断传送方式3种传送方式。 2.支持多少条单元、地址、地址线? 答:4条单元,2条地址,2条地址线。 3.4个单元地址值如何确定? 答:通过2条地址A0、A1确定。

4.假设A、B、C都工作在方式0,8255接一个外设,能否实现查询传递,原因是什么,怎么实现?

答:方式0:基本的输入输出工作方式 方式0有以下特点:

①任何一个端口都可用作输入或输出。

②由A口、B口、C口高4位与C口低4位4组组合成不同的输入/输出组态。 方式0只能用无条件传送或按查询方式传送。

所以,能实现,将A口与B口作为数据端口,将C口的4位规定为控制信号输出口,另外4位规定为状态输入口,用C口配合A口与B口工作。

25

二、可编程定时器/计数器8253

? 8253是Intel公司生产的通用可编程定时/计数器,定时时间与计数次数由用户事

先设定。

? 8253的读/写操作对系统时钟没有特殊的要求,可应用于由任何一种微处理器组成

的系统中,可作为可编程的方波频率发生器、分频器、实时时钟、事件计数器和单脉冲发生器等。

1.8253的内部结构及引脚功能

2)8253的引脚功能

8253采用双列直插式封装,有24个引脚。

26

3)8253的工作方式

? 8253的每个计数器都有6种工作方式:方式0~方式5。 ? 这6种工作方式的不同点是:

? 输出波形不同

? 启动计数器的触发方式不同

? 计数过程中GATE信号对计数过程的影响不同

4)8253的初始化 (1) 8253方式控制字

(2)8253初始化编程

8253初始化编程步骤是:

? 先写控制字到8253的控制端口。

? 再写计数器初值到相应的计数器端口。

例:在8086系统中,设8253的计数器0工作在方式2,二进制计数,计数初值为2000,8253的计数器1工作在方式3,BCD码计数,计数初值为100,8253端口地址为40H~43H。试编写初始化程序。

27

AL,34H ;方式控制字00110100B=34H

OUT 63H,AL ;将控制字送入8253A控制端口63H MOV AX,2000 ;初值送AX寄存器

OUT 60H,AL ;将初值的低8位输出计数通道0端口60H MOV AL,AH ;初值的高8位送AL寄存器

OUT 60H,AL ;将将初值的高8位输出计数通道0端口60H

8253计数器1的初始化程序如下:

MOV AL,57H ;方式控制字01010111B=57H

OUT 63H,AL ;将控制字送入8253A控制端口63H

MOV AL,100H ;初值100送AL寄存器,因为BCD码计数,要送100H OUT 61H,AL ;将初值的低8位输出计数通道1端口61H

【例】硬件图如图所示,。要求将一输入频率为2MHz信号,利用8253做一个秒信号发生器,其输出接一发光二极管,以0.5秒点亮,0.5秒熄灭的方式闪烁指示。设8253的通道地址为400H~403H。

28

MOV AL,34H ;或36H MOV DX,403H

OUT DX,AL ;写计数器0方式控制字 MOV DX,400H MOV AX,20000

OUT DX,AL ;写计数器0计数初值低8位 MOV AH,AL

OUT DX,AL ;写计数器0计数初值高8位 MOV AL,56H MOV DX,403H

OUT DX,AL ;写计数器1方式控制字 MOV DX,401H MOV AL,100

OUT DX,AL ;写计数器1计数初值低8位

三、可编程串行通信接口芯片8251A 1.基本概念

1).并行通信、串行通信。 2).传输速率

在并行通信中,传输速率用每秒传输的字节数表示,单位是:Bps。

在串行通信中,传输速率用波特率来表示。波特率是指单位时间内传送的二进制数据的位数,是衡量串行数据传送速度的重要指标。波特率的单位是:波特,1波特=1位/秒(bps)。 常见的标准波特率有:110bps、1200bps、9600bps和115200bps。 3).发送/接收时钟

在发送数据时,发送器在发送时钟的有效沿作用下将移位寄存器的数据按位移位串行输出;

29

在接收数据时,接收器在接收时钟的有效沿作用下对接收数据按位采样,并按位串行移入移位寄存器。

发送/接收时钟是对数据信号进行同步的,其频率将直接影响设备发送/接收数据的速度。发送/接收时钟频率一般是发送/接收波特率的n倍,n称为波特率因子,一般取1、16、32或64。

4).异步串行通信和同步串行通信

(1)异步串行通信中的异步是指发送端和接收端不使用共同的时钟,也不在数据中传送同步信号,但接收方与发送方之间必须约定传送数据的帧格式和波特率。

在异步串行通信中,通信双方以一个字符(含附加位)作为数据传输单位(一个数据帧),而且发送方传送字符的时间是不定的。在传输一个字符时,总是以起始位(1位,低电平)开始,以停止位(1、1.5或2位,高电平)结束。为了使数据可靠传送,还可包含奇偶校验位。

(2)同步串行通信

在异步串行通信中数据的每一帧都需要附加起始位和停止位,因而降低了传送有效数据的效率。对于快速传送大量数据的场合,为了提高数传的效率,一般采用同步串行传送方式。 同步传送时,无需起始位、停止位。每一帧包含较多的数据,在每一帧开始处使用1-2个同步字符以表示一帧的开始。

同步传送要求对传送的每一位在收发两端保持严格同步,发送、接收端可使用同一时钟源以保证同步。

2.可编程串行通信接口芯片8251A 1).8251A的基本功能

? 能以同步方式或异步方式进行工作。

? 工作于同步方式时,每个字符可定义为5、6、7或8位,可以选择进行奇校

验、偶校验或不校验。内部能自动检测同步字符实现内同步或通过外部电路获得外同步,波特率为0~64K。

? 工作于异步方式时,每个字符可定义为5、6、7或8位,用1位作为奇偶校

验(可选择)。时钟速率可用软件定义为通信波特率的1、16或64倍。能自动为每个被输出的数据增加1个起始位,并能根据软件编程为每个输出数据增加1个、1.5个或2个停止位。异步方式下,波特率为0~19200bps。 ? 8251A能进行出错检测,具有奇偶、溢出和帧错误等检测电路。

? 具有独立的接收器和发送器,因此,能够以单工、半双工或全双工的方式进

行通信。并且提供一些基本控制信号,可以方便地与调制解调器连接。

2).8251A的内部结构

30

3).8251A的引脚功能

5.8251A的命令字和状态字 1)方式选择命令字

31

2)工作命令字

3)状态字

【例9-10】试编写程序段,用异步串行通信方式输出STRING开始字符串‘Receiver ready $’,$字符串的结束标记。设8251A数据端口地址为90H,方式命令状态端口地址为91H。 MOV AL,0 OUT 91H, AL OUT 91H, AL OUT 91H, AL MOV AL,40H

OUT 91H, AL ;写入复位命令

MOV AL,7EH ;一个停止位,偶校验,8个数据位 ;波特率因子16

OUT 91H, AL ;写入方式选择命令字 MOV BX, OFFSET STRING ;BX指向缓冲区首址 WAIT:IN AL, 81H ;读状态字

TEST AL, 1 ;测试TxRDY位

JZ WAIT ;为0,未准备好 等待 MOV AL ,[BX] ;取一个字符

CMP AL, ’ $ ’ ;判断是否是结束标志

32

JE EXIT

OUT 90H,AL ;输出字符 JMP WAIT

EXIT: …… ;结束

【例9-11】试编写程序段,用异步串行输入方式输入1000个数据,存放到内存BUF开始的单元中。要求使8251A工作在异步方式,波特率系数为16,数据长度为7位,偶校验,2个停止位。设8251的端口地址为80H和81H。 MOV AL,0FAH

OUT 81H, AL ;写入方式选择字 MOV AL,37H

OUT 81H, AL ;写入工作命令字 LEA BX, BUF ;BX指向缓冲区首址 MOV CX, 1000 ;设置计数器初值 WAIT0:IN AL, 81H ;读状态字 TEST AL, 2 ;测RxRDY位

JZ WAIT0 ;未收到字符等待 IN AL, 80H ;从数据口读入数据

MOV [BX],AL ;将字符保存到缓冲区 INC BX ;缓冲区指针下移一个单元 IN AL,81H ;读状态字

TEST AL, 38H ;判断有无三种错误 JNZ ERROR ;有错,则转出错处理程序 LOOP WAIT0 ;没错,判是否结束循环 JMP EXIT ;结束

ERROR: CALL ERR_PRO ;转入错误处理程序 EXIT: ……

四、中断技术

1.中断的基本概念

33

1)中断:随机事件、暂停现行程序、处理(执行)中断程序、返回原程序继续执行。 2)中断的优点:节省CPU时间,实现实时处理。 3)中断过程描述

4)中断过程的基本概念

(1)中断源:抽象随机事件;实际设备发出的中断申请中断的信号

(2)中断类型号——中断源的(名字)编号,0~255。

(3)中断服务子程序——处理事件的程序(每个中断源对应自己的)

(4)中断向量——中断服务子程序(入口)起始地址,逻辑地址=段地址:偏移地址 (5)中断向量表——集中存放中断向量的表。

一张中断向量表包含256个中断向量,每个向量包含4个字节,2个低地址字节是IP偏移量,2个高地址字节是CS段地址,中断向量表需256*4K=1M存储空间,设置在存储器的最低端,即00000H~003FFH。CPU对编号n(中断类型码)乘以4得到4n指向该中断向量的首字节,CPU将把有关的标志位和断点地址的CS和IP值入栈。

四、8259A

8259的工作状态和操作方式,由CPU的命令而定。

命令有两种

34

ICW1~ICW4是在计算机系统启动时由初始化程序设置的,一旦确定,在系统工作过程中,一般不再改变。

OCW1~OCW3是由应用程序设定的,用来对中断处理过程实现动态控制。 1、8259的初始化命令字ICW1~ICW4

● ICW1~ICW4在初始化程序中设定,且在整个工作过程中保持不变。 ● ICW1~ICW4必须按顺序设定。 ●ICW1写入8259偶地址中(A0=0)。 ●ICW2~ICW4写入8259奇地址中(A0=1)。 ①ICW1的格式及含义 D7~D5位无效

D4=1,特征位,表示初始化命令ICW1。 D3:LTIM 中断信号IR0~IR7的触发方式 0:边沿 1:高电平 D1:SGNL 是否单片方式 0:多片级联 1:单片 D0:IC4 是否有 ICW4

0:无 1:有 ②ICW2的格式及含义 在写ICW1之后,对A0=1

的端口第一次写入的数据是ICW2 。

中断类型码=(T7~T3)+ 中断源引入管脚编号 如:写入20H,中断类型码为20H~27H; 00100000 写入40H,中断类型码为40H~47H; 01000000 写入45H,中断类型码仍为40H~47H. 01000101 ③ICW3的格式及含义

系统中有级联(ICW1.SNGL=0),在ICW2之后写ICW3。 对于主片:置1的位表示对应的引脚IR有从片级联。

对于从片:用D2~D0表示和主片的对应引脚级联。

④ICW4的格式及含义(ICW1.IC4=1)

例:设某8086系统中使用一片8259A,其端口地址为210H、211H,若系统要求中断请求为电平触发,其8个中断源的类型码为

60H~67H,不用缓冲方式,采用中断自动结束方式,试编写初始化程序段。 解:按要求确定初始化命令字

ICW1: 0 0 0 1 1 0 1 1 B=1BH ICW2: 0 1 1 0 0 0 0 0 B=60H ICW4: 0 0 0 0 1 0 1 0 B=0AH 初始化程序段:

MOV DX,210H ;DX指向偶地址端口 MOV AL,1AH ;

35

OUT DX,AL ;写入ICW1

MOV DX,211H ;DX指向奇地址端口 MOV AL,60H ;

OUT DX,AL ;写入ICW2 MOV AL, 0AH

OUT DX,AL ;写入ICW4 2、8259的操作命令字OCW1~OCW3

8259A有三个操作命令字OCW1~OCW3,程序员可以使用这三个命令字在应用程序里随时改变8259A的工作方式,而且设置时,次序可以随意。但是对端口地址有严格要求,即OCW1必须写入奇端口地址,OCW2和OCW3必须写入偶端口地址。 ①OCW1的格式及含义—中断屏蔽字(IMR) 某一位为“1”时,对应这一位的中断请求受到屏蔽。为“0”时开放该位中断。

如OCW1=08H,则IR3管脚上的中断请求被屏蔽. ② OCW2的格式及含义—设置优先级循环方式和中断结束方式

③OCW3-特殊屏蔽方式和查询方式操作字 功能:●设定特殊屏蔽方式; ●设置中断查询方式;

●设置对8259寄存器的读出。 8259A初始化 MOV AL, 13H ;写ICW1,单片,边沿触发,要ICW4 OUT 20H,AL

MOV AL,8 ;写ICW2,中断类型号从8开始 OUT 21H,AL

MOV AL,0DH ;写ICW4,缓冲工作方式,8088/8086配置 OUT 21H,AL

MOV AL,0 ;写OCW1,允许IR0~IR7全部8级中断请求 OUT 21H,AL

Intel 8259A的应用举例

1. 中断接口的设计

将单片8259A接入8088系统中,设计其端口地址为FFF0H和FFF1H,其具体连接如下图所

36

示。8259A由于只有一根地址线,因此它在系统中只占用两个端口地址。8259A内部的7个命令寄存器和3个状态寄存器的寻址是将这两个端口地址结合操作命令、特定数据位、严格的写入次序等来实现对8259A内部 寄存器的寻址,如下表所示。

37

2. 中断程序的编写

当把8259A接入系统后,就需要编写该接口的中断程序。中断程序由两个部分组成:中断接口的初始化程序和中断处理程序。

1) 初始化中断控制器8259A

初始化包括两个方面,一是初始化8259A的初始状态,二是完成中断向量表的设置

(1) 初始化8259A。由于8259A的ICW有严格的写入次序,因此,编程时必须根据其规定的初始化顺序对四个ICW进行初始化操作。 其初始化程序如下:

MOV DX,0FFF0H ;8259A口地址,A0=0

MOV AL,13H ;初始化字“00010011”送ICW1 OUT DX,AL ;单片,边沿触发,需要ICW4 MOV DX,0FFF1H ;8259A口地址,A0=1

MOV AL,0F8H ;初始化字“11111000”送ICW2 OUT DX,AL ;设置起始中断向量码(IRO)为F8H MOV AL,03H ;初始化字“00000011”送ICW4

OUT DX,AL ;8086/8088模式,AEOI,非缓冲,一般全嵌套方式

(2) 设置中断向量。

对IBM-PC/XT机,是在计算机启动过程中将中断向量表写入内存的。对用户自行设计的中断接口,当初始化完成后,需要人为设置中断向量表,以使设计的中断向量与相应的中断处理程序建立连接。这样,当CPU响应这些中断源的中断请求时,便能根据中断向量找到相应的处理程序,进行相应的中断服务。

假设8个中断源对应的中断处理程序在内存中存放的地址标号为PROG0(IR0)、PROG1(IR1)、PROG2(IR2)、…、

PROG7(IR7),则中断向量表的设置程序如下:

INT_IRO: MOV AX,0 ;设置IR0对应的中断向量表

MOV DS,AX ;段地址设定在内存的最底端

MOV SI,3E0H ;IR0的中断向量(F8H)对应的内存地址“4*F8” MOV AX,OFFSET PROG0 ;取得IR0中断处理程序的偏移地址 MOV [SI],AX ;偏移地址写入中断向量对应的“4*F8”地址处 MOV AX,SEG PROG0 ;取得IR0中断处理程序的段地址

MOV [SI+2],AX ;段地址写入中断向量对应的“4*F8+2”地址处

如果设置IR1对应的中断向量表,根据ICW2,IR1对应的中断向量为F9H,只要将上述程序的F8H换为F9H,PROG0换为PROG1,即可完成IR1对应中断向量表的设置。

当然,用户也可以利用DOS的25H功能调用来设置中断向量表,其调用方法为:

功能号→AH 中断向量→AL

中断处理程序段地址→DS 中断处理程序偏移地址→DX

38

INT 21H

assume cs:code

code segment public org 100h start: mov cx,0 start1: cli

mov dx,04a0h

mov ax,13h

out dx,ax ;ICW1, ICW4 NEEDED mov dx,04a2h mov ax,80h

out dx,ax ;ICW2 中断类型80h mov ax,01

out dx,ax ;ICW4 mov ax,00h

out dx,ax ;OCW1, 开放所有中断 mov ax,0

39

mov ds,ax

mov si,200h ;初始化中断向量表 mov ax,offset hint mov ds:[si],ax add si,2

mov ds:[si],100h mov ax,0

;jmp start sti waiting:

cmp ax,55h nop nop nop nop nop nop nop nop

jne waiting ;没发生中断,则等待 nop nop

mov dx,04b0h xor cx,0ffh mov ax,cx

out dx,ax ;LED灯亮灭一次 jmp start1 nop

40

本文来源:https://www.bwwdw.com/article/nooo.html

Top