微机原理复习(杏)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理复习
1.微型计算机结构(3总线结构:地址总线、数据总线、控制总线)
有16根数据线和20根地址,8086可寻址的内存地址空间达220,即1MB; 8086可寻址的I/O地址空间达216,即64KB;
2.8086内部组成,BIU和EU的功能及各自的组成,熟知相应寄存器、功能部件在哪个接口部件中。
EU负责指令的执行;
算术逻辑单元(ALU),可完成8位或16位操作数进行算术或逻辑运算; 8个16位通用寄存器(AX、BX、CX、DX、SI、DI、SP和BP);标志寄存器;
BIU负责CPU与存储器、I/O设备之间的数据传送。
◆4个16位段寄存器(DS、CS、ES、SS); 8086中有4个16位段寄存器,它
们是:CS(代码段寄存器)、DS(数据段寄存器)、SS(堆栈段寄存器)和
ES(附加段寄存器)
◆指令指针寄存器(IP);指令指针寄存器IP提供下一条要取出的指令所在存
储单元的16位偏移地址。
◆20位的地址加法器;
8086CPU采用段地址、段内偏移地址两级存储器寻址方式,由一个20位地址加法器根据16位段地址和16位段内偏移地址计算出20位的物理地址PA(Physical Address)。
其计算方法是:将CPU中的16位段寄存器内容左移4位(×16)与16位的逻辑地址(又称偏移地址)在地址加法器内相加,得到所寻址单元的20位物理地址。
▪物理地址 = 段地址×10H+偏移地址
假设(CS)=FE00H,(IP)=0400H,那么下一条要取出的指令所在内存单元的20位物理地址PA=FE00H×10H+0400H=FE400H。
3.8086的寄存器结构
寄存器是CPU内部用来存放地址、数据和状态标志的部件,8086有14个16位寄存器和8个8位寄存器
数据寄存器AX、BX、CX、DX
指针和变址寄存器SP、BP、SI、DI
标志寄存器FR
FR是一个16位的寄存器。
9个位用作标志位:
◆状态标志位有6个,控制标志位有3个
CF:进位标志:指令执行后,如果运算结果在最高位上产生了一个进位或借
位,则CF=1;否则,CF=0。
ZF:零标志:如果运算结果为0,则ZF=1;否则,ZF=0。
SF:符号标志:如果运算结果为正数,则SF=0;否则,SF=1。
OF:溢出标志:如果运算过程产生了溢出,则OF=1;否则,OF=0。
IF中断允许标志: IF=1,允许可屏蔽中断; IF=0,不允许可屏蔽中断。
4.存储器的分段,每段的大小小于等于64K;二十位物理地址是如何形成的;段地址、偏移地址、物理地址的概念及相互之间的关系。
P35
CPU送到AB上的20位的地址称为物理地址
段地址说明逻辑段在主存中的起始位置,存放在段寄存器DS、CS、SS或ES中
偏移地址(也称有效地址EA)说明主存单元距离段起始位置的偏移量,存放在IP、SP、BX、SI、DI、BP中或直接出现在指令中。
采用分段结构的存储器中,把通过段地址和偏移地址来表示的存储单元的地址称为逻辑地址,记为:段地址:偏移地址
◆逻辑地址是物理地址的一种表示方式,不是唯一的。
8086的存储器空间最大可以为多少?怎样用16位寄存器实现对20位地址的寻址?完成逻辑地址到物理地址转换的部件是什么?
若已知DS=200 CS=52FAH,IP=1083H,则下一条要执行指令的物理地址为 B 。
A、54033H
B、54023H
C、53023H
D、53023H
设SP=0016H,若向堆栈中存入1个数据,则SP的值为 B 。
A、0015H
B、0014H
C、0017H
D、0018H
设SP=0016H,执行POP BX指令后,则SP的值为 D 。
A、0015H
B、0014H
C、0017H
D、0018H
8086CPU经加电复位(RESET信号)后,CS寄存器的内容是(FFFFH),IP寄存器的内容是(0000H)
8086/8088加电复位后,执行的第一条指令的物理地址是 B 。
A.0FFFFH
B. FFFF0H
C.0000H
D. 0240H
第三章
1.在8086CPU数据寻址方式中,基址变址寻址中的基址寄存器可以为(BX或BP);变址寄存器可以为(SI或DI)
2.寻址方式的概念,7种与数据相关的寻址方式,那种寻址方式速度最快?
8086CPU支持的7种基本数据寻址方式
(1)立即寻址;(2)寄存器寻址;(3)直接寻址;(4)寄存器间接寻址;(5)寄存器相
对寻址;(6)基址变址寻址;(7)相对基址变址寻址。
3.存储器寻址方式EA和PA的计算。
分别指出下列指令中源操作数的数据寻址方式。
(1)OR AX ,DX 寄存器寻址
(2) MOV DI, 200 立即寻址
(3) MOV DI, [200] 直接寻址
(4) MOV AX, [SI] 寄存器间接寻址
(5) ADD AX ,6[SI] 寄存器相对寻址
(6)MOV CX, [BX][SI] 基址变址寻址
(7)MOV CX, 6[BX][SI] 相对基址变址寻址。
4.汇编指令的功能、执行过程及相关指令对CF、SF、OF、ZF标志位的影响。
其中:NOT 指令不影响标志位,INC,DEC不影响CF标志位;熟知有符号、无符号比较指令的不同;
哪些指令的执行对堆栈有影响(如:CALL、RET、IRET、INT等)。
下面指令执行后,改变AL寄存器内容的指令是 D 。
A、TEST AL,02H
B、OR AL,AL
C、CMP AL,BL
D、AND AL,BL
5.指令
第四章
1.熟知数据定义、段定义、过程定义、明确段与段寄存器建立关系(ASSUME)、源程序结束(END)等伪操作指令;熟知利用“$”自动计算数据个数的方法。
2.伪指令中,可以用来定义字节变量(8位)的是(DB ), 定义字变量(16位)的是(DW )
例、按下列要求,写出各数据定义语句P102
1)DB1 为字节数据序列1,2,5个3,4,5
2) DB2 为字数据6789H
3)DB3 字符串‘STRING’
4)AA 为预留10个字节单元
5)用等值语句给符号COUNT赋予DB1数据区所占字节数,该语句写在最后。
DB1 DB 1, 2, 5DUP(3), 4,5
DB2 DW 6789
DB3 DB ‘STRING’
AA DB 10DUP(?)
COUNT EQU DB2-DB1
例、某数据段定义如下,试列出经汇编后,各存储单元的内容是什么?COUNT值是多少? BUF1的偏移地址是多少?
BUF1 DB 10H,20H
BUF2 DW 30H
COUNT EQU $–BUF1
0000 10H ;BUF1表示DB定义的第一个数的地址
0001 20H
0002 30H
0003 00H
0004 ($的当前地址)COUNT=0004 H -0000 H=4
3.简述汇编语言的上机过程。
(1)编写汇编语言源程序,源程序的扩展名为.asm;
(2)用汇编程序masm将源程序汇编成目标程序,目标程序的扩展名为.obj;
(3)用Link软件将目标程序连接成扩展名为.exe可执行文件;
(4)用debug调试及执行.exe文件
5.汇编程序编程
⏹完整结构
DATA SEGMENT ;数据段定义。
DATA ENDS
CODE SEGMENT ;代码段定义
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX ;初始化DS。
MOV AH,4CH
INT 21H
CODE ENDS
END START
⏹掌握字符的统计、大小写字母的转换、累加等基本算术逻辑运算的方法。
键盘输入字符、显示字符
◆通过调用DOS中断(INT 21H)的1号功能,把输入字符的ASSIC码存人AL寄
存器
MOV AH,01H
INT 21H
◆通过调用DOS中断(INT 21H)的2号功能,把DL寄存器中放存的ASSIC码值
对应的字符在屏幕上显示
MOV DL, 要显示的字符的ASSIC码值
MOV AH,02H
INT 21H
⏹对内存中的字符处理
例:试编写程序将String中的大写字母转换为小写字母,字符串的长度为N。
(要求编写完整汇编语言源程序)
LEA SI, STRING
MOV CX, N
AGAIN : MOV AL, [SI]
INC [SI]
LOOP AGAIN
DSEG segment
String DB …ASSEMBL Y LANGUAGE and INTERFACING Fourth Edition‟N EQU $- String
DSEG ENDS
CODE SEGMENT ;代码段定义
ASSUME CS:CODE,DS: DSEG
START: MOV AX, DSEG
MOV DS,AX ;初始化DS
LEA SI, STRING
MOV CX, N
AGAIN : MOV AL, [SI]
CMP AL, …A‟
JB NEXT
CMP AL, …Z‟
JA NEXT
ADD AL, 20H
NEXT: INC [SI]
LOOP AGAIN
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
END START
例:编写完整汇编语言源程序实现1到10 ,10个数字累加
CODE SEGMENT ;代码段定义
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX ;初始化DS
MOV AX.0
MOV CX,10
MOV BX,1
AGAIN: ADD AX,BX
INC BX
LOOP AGAIN
MOV AH,4CH
INT 21H
CODE ENDS
END START
例:编写完整汇编语言源程序实现以下功能:已知在内存中从STRING单元起存放有1000个带符号字节数据,统计其中‘$’字符的个数并放入COUNT单元。
DSEG segment
String DB …ASSEMBL Y LANGUAGE and INTERFACING Fourth Edition‟
COUNT DW ?
DSEG ENDS
CODE SEGMENT ;代码段定义
ASSUME CS:CODE,DS: DSEG
START: MOV AX, DSEG
MOV DS,AX ;初始化DS
MOV BX,0
LEA SI, STRING
MOV CX, 1000
AGAIN : MOV AL, [SI]
CMP AL, …$‟
JNZ NEXT
INC BX
NEXT: INC SI
LOOP AGAIN
MOV COUNT, BX
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
END START
第五章
1.8086的工作模式
最小模式、最大模式
2.8086的分时复用
低16位地址/数据的复用引脚线, 采用法来实现对地址线和数据线的复用3.时钟周期、总线周期、指令周期的概念
计算机的“时钟”是由振荡源产生的、幅度和周期不变的节拍脉冲,每个脉冲周期称为时钟周期;把CPU通过总线进行某种操作的所需要的时间称为总线周期。
执行一条指令所需要的时间称为指令周期,一个指令周期有一个或若干个总线周期组成;.
一个总线周期有若干个时钟周期组成。
例:8086一个总线周期最少包含多少个时钟周期?什么情况要插入TW等待周期?插入多少个等待周期取决于什么因素?
8086基本总线周期一般由4个时钟周期组成,习惯上分别称为T1状态、T2状态、T3状态和T4状态。
在有些情况下,外设或存储器速度较慢,不能及时地配合CPU传送数据。
这时,外设或存储器会通过“READY”信号线在T3状态启动之前向CPU发一个“数据未准备好”信号,于是CPU会在T3之后插入1个或多个附加的时钟周期等待状态Tw。
8086执行一个读总线周期时,在T3之后插入Tw
例:在8086/8088 CPU中,一个最基本的总线读写周期由4个时钟周期(T状态)组成,在T1状态,CPU往总线上发 B 信息。
A、数据
B、地址
C、状态
D、其它
4.8086/8088相关引脚功能及作用(ALE、WR、RD、NMI、INTR、INTA、HOLD、HLDA、M/IO、READY、MN/MX、AD0~AD15)。
4. 复位后寄存器的值(如IP 、CS )(P209 表5.2)。
5. MOV 、IN 、OUT 指令执行时,WR 、RD 、M/IO 的电平情况
若8086 CPU 引脚状态是M/IO =1RD =1,WR =0,则此时执行的操作是存储器写。
( )
第7章 存储器
1、存储器用来存放程序和数据,是计算机各种信息的存储和交流中心,半导体存储器按存储信息的特性可分为RAM 和只读存储器R O M 两类。
1)RAM 分为SRAM 和 DRAM 。
DRAM 靠分布电容存储信息,为保证DRAM 中内容不丢失,由DRAM 构成的存储器所存储的信息需要定时刷新。
2) R O M 分为:掩模R O M ; PROM (一次可编程只读存储器 );EPROM (紫外线擦除可编程只读存贮器);E2PROM (电可擦除可编程只读存储器)
2、芯片断电后所存的信息不会改变和消失的存储器是ROM 。
ROM 不需要定时刷新。
3、常用静态RAM 、ROM 芯片以及它们的容量,能根据芯片容量判断地址线、数据线的根数。
如:芯片地址线A 0~A 9,容量为210
4、8086最小模式下IO M /为控制信号,当IO M /=0(低电平)时CPU 访问I/O 设备;当IO M /=1(高电平)时CPU 访问存储器。
例:CPU 在执行IN AL ,DX 指令时,其( C )。
A . IO M /为高, RD 为低
B .IO M /为高, WR 为低
C .IO M /为低, R
D 为低 D .IO M /为低, WR 为低
例:CPU 在执行OUT DX ,AL 指令时,其(D )。
A . IO M /为高, RD 为低
B .IO M /为高, WR 为低
C .IO M /为低, R
D 为低 D .IO M /为低, 为低
例:在8086/8088微机系统中,将AL 内容送到I/O 接口中,使用的指令是( D )
A.IN AL ,端口地址
B.MOV AL ,端口地址
C.OUT AL ,端口地址
D.OUT 端口地址,AL
5、 存储器与系统的连接(包括地址线、数据线、控制线的连接,特别是片选信号的产生);
6、 存储器设计
给出地址,设计电路(包括地址线、数据线、控制线的连接,特别是片选信号的产生); 8086系统的存储器分为奇存储体、偶存储体(8086系统将1M 地址空间分成两个512K 地址空间,一半是偶数地址另一半是奇数地址,相应的存储体称为偶体和奇体,偶体和奇体的地址线都是19位), 目的:可以16位访问,也可8位访问
数据线
将数据总线的低8位D 7~D 0与偶体相连,高8位D 15~D 8与奇体相连
●控制线
◆8086系统(最大模式)MWDC、C
MRD
◆8086系统(最小模式
)WR
、RD、M/IO(IO
M/通常作为片选控制信息线)
◆C
MRD、RD连OE,MWDC、WR连WE
◆R O M没有写信号线
●地址线
◆地址线包括A19~A1、A0、
◆其中用A0作偶体的片选信号,作奇体的片选信号。
◆地址总线的A19~A1作为这奇、偶两个存储体的地址线。
◆19条地址线又分为两个部分,其中低位地址线直接作为芯片地址信号线(数量
与芯片地址信号线相同),剩余的高位地址线通过译码电路(方法一:用三八译
码器;方法二:用逻辑门)接芯片片选信号CE。
如:芯片1k容量10根地址
线,A11~A1和芯片地址信号线直接相连,A19~A12通过译码电路连芯片片选信号
◆片内地址线数根据芯片容量确定(如1k容量10根地址线)
◆芯片的地址由译码电路的设计确定
◆使译码电路输出有效信号的地址编码就是芯片的地址
3/8线译码器正常工作G必须接高电平、G2A、G2B必须接低电平
C、B、A 0
Y1Y
0 0 0 0 1
0 0 0 1 0
试使用62256和27256,在8086最大系统中设计具有64KB的RAM和64KB的ROM,RAM地址从80000H开始,ROM地址从F0000H开始。
要求:1)单片存储器RAM和ROM的容量分别是多少?
2)画出数据线、地址线和控制线的连线并注明符号名称;
3)根据需要可以添加部分逻辑器件。
BHE
1、按奇、偶片画数据线
2、控制线(最大模式)
3、连A 19~ A 1 的低位、 A 0、 A 19~ A 1 的低位数量由芯片的地址线数量决定,A 0连偶片、 连奇片
4、连3/8译码电路
根据给定的RAM 地址和ROM 地址,确定A 19~ A 1 的高位编码
RAM 和ROM 连接译码电路信号线多是A 19~ A 16
RAM 地址从80000H 开始,所以 A 19~ A 16的编码为1000
ROM 地址从F0000H 开始,所以 A 19~ A 16的编码为1111 BHE
BHE
第七章
1、计算机对I/O端口编址时通常采用哪几种方法?在8086系统中,采用哪种方法?
两种(1)I/O端口与内存统一编址;
(2)I/O端口独立编址; 在8086系统中,采用I/O端口独立编址
8086中,有专门的指令来访问I/O接口,如输入指令IN,输出指令OUT
2、CPU与外设数据传输的方式:
程序方式(有条件、无条件)、中断方式、DMA方式及各自的特点(优缺点)。
3、CPU与外设之间通过接口传输的信息通常有哪几种?
CPU与I/O设备之间传输的信息可分为数据信息、状态信息和控制信息三类。
4、CPU与外设之间的通过接口交换信息,通常I/O端口有哪几类?
数据端口,状态端口,控制端口
第八章
1.中断处理过程
一个完整的中断处理的过程应包括中断请求、中断判优、中断响应、中断处理(或中断服务)、中断返回5个基本阶段。
2.80X86中断系统的类型(内部中断、外部中断及各自的组成)及它们的优先级;
Intel 80X86系列可以处理256种中断源,每个中断源都有对应的中断类型号(0~255D)
●外部中断
外部中断可分为:
a)非屏蔽中断:
由CPU的NMI引脚引入,NMI上升沿时触发,中断类型号固定为2
b)可屏蔽中断:
受CPU中断允许标志位IF的控制:IF=1(STI (开中断),设置IF=1)时,CPU 响应中断请求;IF=0(CLI (关中断),设置IF=0)时;,CPU屏蔽中断请求,不予响应;由CPU的INTR引脚引入,高电平有效。
中断类型号由中断请求的设备提供。
8086用于中断请求输入的引脚信号是 A 。
A、INTR和NMI
B、INT和NMI
C、INTR和INTA
D、INTE和INET
●内部中断
◆除法错中断
执行除法指令时,若除数为0或商超过寄存器所能表达的范围,则CPU立即产生一个0型中断。
◆溢出中断
如果上一条指令使溢出标志位OF为1,则执行INTO指令产生4型中断。
◆INT n指令中断
8086的指令系统中有一条INT n指令,执行这条指令就会立即产生中断。
中断优先级高到低依次为:除法出错、INT n、INTO,NMI(非蔽屏中断)、,INTR(可蔽屏中断)、,单步。
也就是说对8086CPU系统,中断优先级别最高的是(除法错,软件中断),软件中断优先级别高于硬件中断,非屏蔽中断的优先权高于可屏蔽中断,中断优先级别最低的是(单步中断)。
3. 什么是中断向量和中断向量表?中断向量表位于存储器的什么位置?
需要响应的每一类中断都编写有相应的中断服务程序,并预先装入内存,中断服务程序在内存中的入口地址叫中断向量.
把系统中所有的中断向量集中起来放到存储器的某一区域内,这个存放中断向量的存储区就叫中断向量表或中断服务程序入口地址表。
8086系统把中断向量表安排在内存地址00000H~003FFH区域(1K)。
存放中断向量的4个存储单元的最低地址称为向量表地址指针。
计算方法:
中断类型号×4
用户在应用系统中使用中断时,需要在初始化程序中将中断服务子程序的入口地址装入中断向量表指定的存储单元中,以便在CPU响应中断请求后,由中断向量自动引导到中断服务子程序。
中断向量设置的两种方法(会用其中一种)。
P292
3.8259
8259A可管理具有8级优先权的中断源,通过级联可扩充至管理64级优先权的中断源。
IRR:
8位
接受并锁存来自IR0~IR7的中断请求信号
第i位=1:IRi有请求
第i位=0:IRi没有请求
ISR:
8位
记录正在处理中的所有中断请求
第i位=1:IRi正在处理
在多重中断时,ISR中可能有多位同时被置“1”
某时刻中断控制器8259A的IRR内容是08H,说明其__⎽⎽⎽⎽___⎽引脚有中断请求。
某时刻中断控制器8259A的ISR内容是08H,说明__⎽⎽⎽⎽___⎽中断正在被服务。
8259A可编程中断控制器的中断服务寄存器ISR用于 A 。
A、记忆正在处理中的中断
B、存放从外设来的中断请求信号
C、允许向CPU发中断请求
D、禁止向CPU发中断请求
第九章可编程接口芯片
1.8253内部结构及引脚功能
Intel8253 各个计数通道中三个引脚信号 CLK、OUT 和 GATE 的功能;
2.有3个独立的16位计数通道。
3.每个计数器可按二进制或十进制来计数,时钟脉冲下降沿使计数器进行减1操作。
4.8253的每个计数器的都有6种工作方式
定时器8253有几种工作方式?若要作为外部脉冲计数器,8253应工作在哪种方式?若要产生一个某种频率的连续方波,8253应工作在哪种方式?
.6种工作方式,若要作为外部脉冲计数器8253应工作在方式0,产生方波工作在方式3。
5.8253控制字格式(必须记住),8253各计数器的初始化是有顺序的(即先初始化控制字,后初始化时间常数),而计数器0、计数器1、计数器2的初始化是没有顺序的
8253的最大初值是送00000000H
8253简单编程题
8253简单编程----初始化编程
初始化编程包括:
1)写入控制字
2)写计数初值
●8253的初始化编程
1、确定8253端口地址、
◆每片8253 都由计数器0、计数器1、计数器2和控制口共4个端口
◆8253内部的操作端口的选择由8253的A1、A0输入信号编码决定
A1 A0 = 00-------选计数器0端口
01-------选计数器1端口
10-------选计数器2端口
11-------选控制口端口
◆8253各端口地址由片选信号CS(8253芯片地址)和8253的A1、A0编码决定
如:8253的A1、A0连地址总线的A1、A0
CS的地址为80H,那么计数器0、计数器1、计数器2和控制口分别为:
80H、81H、82H、83H
如:8253的A1、A0连地址总线的A2、A1
CS的地址为40H,那么计数器0、计数器1、计数器2和控制口分别为:
40H、42H、44H、46H
2、写入控制字
◆确定8253用到的计数器工作方式
根据题目要求确定使用的计数器数及各计数器的工作方式
如:OUT输出周期性信号,用方式2或3,如果是方波必须采用方式3
◆对于方式2、3具有分频功能:CLK输入高频周期性信号,OUT输出低频周期性
信号,GATE必须连高电平。
例:已知8253 的CLK2的时钟是4MHz。
要求通过三个定时器级联,实现从OUT2输出频率为1000Hz 的方波,从OUT1输出频率为100Hz 的方波,从OUT0输出频率为1 Hz 的单时钟脉冲波。
1、画出8253 各通道的GATE0~GATE
2、CLK1、CLK2的接线图;
2、选定各通道的工作方式,并计算各自的计数初值;
分析:
工作方式:
用到了计数器0、计数器1、计数器2;
计数器2输出频率为1000Hz 的方波,工作在方式3;
计数器1输出频率为100Hz 的方波,工作在方式3;
计数器0OUT0 输出频率为1 Hz 的单时钟脉冲波,工作在方式2;
画线:
GA TE0~GATE2接高电平
计数器2的输出OUT2接计数器1的输入CLK1
计数器1输出OUT1接计数器0的输入CLK0
◆8253的计数器的工作方式由8253的方式控制字决定
◆8253的各个计数器有自己的方式控制字,计数器0、计数器1、计数器2有三
个方式控制字
01:计数器1 10:计数器2 11:无意义01:只读/写低8位
10:只读/写高8位
11:先读/写低8位
后读/写高8位
001:方式1
X10:方式2
X11:方式3
100:方式4
101:方式5
1:十进制计数
通常可以采用16位初值、二进制数
工作于方式3:
计数器0:00110110B 36H
计数器1:01110110B 76H
计数器2: 10110110B B6H
工作于方式2:
计数器0:00110100B 34H
计数器1:01110100B 74H
计数器2: 10110100B B4H
上例:计数器2方式3:B6H;计数器1方式3:76H;计数器0方式2:34H。
写入控制字
计数器0、计数器1、计数器2有三个方式控制字,多写入8253的控制端口
写入控制字可以由下列三条指令实现
MOV AL,控制字
MOV DX,控制口地址
OUT DX ,AL
注意:对于不同计数器,有不同控制字,但所有计数器都写入控制口
上例控制字:计数器2 ,B6H;计数器1,76H;计数器0,34H
控制口地址:有下图CS和A1、A0连接方式决定
8253的A1、A0连地址总线的A2、A1,CS的地址为40H,那么计数器0、计数器1、
计数器2和控制口分别为: 40H、42H、44H、46H。
控制口地址:46H
计数器2写入控制字:
MOV AL,B6H
MOV DX,46H
OUT DX ,AL
计数器1写入控制字:
MOV AL,76H
MOV DX,46H
OUT DX ,AL
计数器0写入控制字:
MOV AL,34H
MOV DX,46H
OUT DX ,AL
3、写入计数初值
计数初值(TC)
对于方式2、3来说,具有分频功能
f in表示CLK的信号输入频率
f out表示OUT的信号输出频率
N表示计算器的初始值
初值N=f in/f out
8253一个计数通道最大的计数值是65536,如计算计数值超过8253的最大计数值65536,需要利用多个通道串接来实现
一般可采用16位初值,分两次写入,各计数器的初值写入自己的各自端口
MOV AX,计数器初值
MOV DX,计数器地址
OUT DX,AL
MOV AL,AH
OUT DX,AL
上例:计数器2输入4000000HZ,输出1000 HZ,初值 N2=4000000/1000=4000 计数器1输入1000HZ,输出100 HZ,初值 N2=1000/100=10
计数器0输入100HZ,输出1 HZ,初值 N2=100/1=100
写入计数器2初值:
MOV AX,4000
MOV DX,44H
OUT DX,AL
MOV AL,AH
OUT DX,AL
写入计数器1初值:
MOV AX,10
MOV DX,42H
OUT DX,AL
MOV AL,AH
OUT DX,AL
写入计数器0初值:
MOV AX,100
MOV DX,40H
OUT DX,AL
MOV AL,AH
OUT DX,AL
例:硬件图如下,要求将2MHz信号做输入信号,利用8253计数通道做一个秒信号发生器,其输出接一发光二极管,以1秒点亮,1秒熄灭的方式闪烁指示。
要求:
(1)在图中补充画出8253必须使用到的CLK、OUT、GA TE信号的连线并标明符号;(2)写出8253各端口的地址;
(3)计算计数通道0的计数初值(需计算过程);
(4)编写8253初始化程序段。
答:分析:8253计数通道0做一个秒信号发生器,所以OUT0输出方波工作在方式3,假如,CLK0输入2MHz信号,f in=2MHZ ,则OUT0输出0.5 HZ 信号(1秒点亮,1秒熄灭),f out =2HZ,需要
初值N=f in/f out=4MH>一个通道的最大计数值65536
所以需要利用多个通道串接,可取两个计数器,采用级联方式可达到目的。
N=N0*N1=4M=4000000
由于通道1要输出方波信号推动发光二极管,所以通道1应选工作方式3。
对于通道0,只要能起分频作用就行,对输出波形不做要求,所以方式2和方式3都可以选用
(1)OUT0连接CLK1,GA TE0、GA TE1接VCC(或+5V )
(2)计数通道0、计数通道1计数通道2及控制端口地址
分别是80H;81H;82H;83H。
(3) 控制字
计数通道0:方式2:00110100B 34H
方式3:00110110B 36H
计数通道1:方式3:01110110B 76H
(3)初值N=f in/f out=1MH
根据N=N0*N1取N0=4000,N1=1000
(4)参考程序:
计数通道0初始化:
计数通道0 取初值N0=1000
MOV AL,36H(或34H)
MOV DX,83H
OUT DX, AL
MOV AX,4000
MOV DX, 80H
OUT DX, AL
MOV AL,AH
OUT DX, AL
计数通道1初始化:
计数通道1 取初值N1=1000
MOV AL,76H
MOV DX,83H
OUT DX, AL
MOV AX,1000
MOV DX, 81H
OUT DX, AL
MOV AL,AH
OUT DX, AL
已知8253 的CLK2的时钟是4MHz。
要求通过三个定时器级联,实现从OUT2输出频率为1000Hz 的方波,从OUT1输出频率为100Hz 的方波,从OUT0输出频率为1 Hz 的单时钟脉冲波。
1、画出8253 各通道的GA TE0~GATE
2、CLK1、CLK2的接线图;
2、选定各通道的工作方式,并计算各自的计数初值;
3、编写各通道的初始化程序段。
(说明:方波用方式3,单时钟脉冲波用方式2)
8255
1、8255A有3个8位并行I/O口,共24位,其各端口工作方式由软件编程设定
2、8255工作方式,其中:PA口有方式0,方式1,方式2,PB口有方式0,方式1,PC口只方式0。
3、8255的方式控制字、端口C的位操作控制字(必须写入控制端口),控制字的格式必须记住。
判断要对 8255A 的端口 C 的某一位进行置位/复位设置,可对端口 C写入相应的控制字来实现。
(X)
8255的编程
1、根据连接的外部设备确定各个口的工作方式
通常工作在方式0,获取外部设备的状态或信息的端口用输入、送数据或控制信号给外部设备的端口用输出
2、8255的初始化
1)确定8255A的控制字
例:硬件如下图所示,试编程实现,循环监测开关S0,当S0断开数码管显示1,当S0闲闭合数码管显示0。
8255A的端口地址范围为60H~63H。
要求:(1)写出8255各端口的地址;
(2)写出8255初始化程序,初始化时无关项置0;
(3)编写实现以上功能的汇编语言程序段。
用到A口、B口,A口方式0输出,B口方式0输入
控制字:10000010B 82H
2)写控制字
控制字写到控制口
A1A0= 00------- PA(可读/写)
01------- PB (可读/写)
10------- PC (可读/写)
11------- 控制口(可写)
8255的A1、A0连地址总线的A1、A0,CS的地址为60H,那么PA、PB、PC和控制
口分别为: 60H、61H、62H、63H。
控制口地址:63H
控制字写入控制口指令:
MOV AL,控制字
MOV DX,控制口地址
OUT DX ,AL
上例:
MOV AL,82H
MOV DX,63H
OUT DX ,AL
3)8255的工作编程
1、通过端口读取外部设备的输入信息和状态语句:
通过IN指令从与外部设备连接的端口,读入AL寄存器
MOV DX,口地址
IN AL, DX
上例:开关连PB 口,读PB 口
MOV DX,61H
IN AL, DX
2、从读取的端口信息中提取端口连接的设备状态信息
通常获取的是整个端口的数据(8位),往往只有其中几位连接外部设备,可以通过AND 指令(把没有使用的位清零)提取有效的状态信息。
语句:
AND AL, 8位二进制编码有用的信号线填1没有填0
上例:只有PB0连接一个开关
AND AL, 00000001B
保留PB0其余置0
3、判断外设状态
不同的外部设备状态对应不同的数值,通过用比较指令CMP对数值比较来确定外部设备状态。
然后结合条件转业指令JZ根据不同的外部设备状态执行相应的程序
上例:开关合AL为0,开关开AL为1
CMP AL, 0
JZ 开关合的程序地址标号
开关开的程序
4、按要求通过端口驱动外部设备
通过OUT指令送编码信息给与外部设备相连的端口,来控制外部设备的工作MOV DX, 外部设备相连的端口地址
OUT DX ,AL
上例: PA口连接数码管,数码管显示0, PA口送00111111B 3FH;
数码管显示1,PA口送00000110B 06H;
数码管显示0
MOV AL,3FH
MOV DX, 60H
OUT DX ,AL
数码管显示1
MOV AL,06H
MOV DX, 60H
OUT DX ,AL
例::硬件如下图所示,试编程实现,循环监测开关S0,当S0断开数码管显示1,当S0闲闭合数码管显示0。
8255A的端口地址范围为60H~63H。
要求:(1)写出8255各端口的地址;
(2)写出8255初始化程序,初始化时无关项置0;
(3)编写实现以上功能的汇编语言程序段。