汇编语言教案第5章.ppt

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

定时器 中断
1Baidu Nhomakorabea.2次/SEC
; INT_TIMER
∶ ∶ INT 1CH ∶ ∶ IRET
INT_1CH PROC IRET
INT_ICH ENDP
RING PROC 1.计数182(10秒) 2.显示字符串
IRET RING ENDP
16
例:编写一个中断处理程序,要求在主程序运行期间, 每隔 10 秒响铃一次,并显示 ‘bell’
.model small .stack .data
mov al, 1ch mov ah, 35h int 21h push es push bx
第八章 输入输出程序设计
CPU MEM I/O接口
总线
I/O设备
1
1. I/O 设备的数据传送方式
查询方式 (程序控制方式) 中断方式 DMA方式 (直接存储器存取方式/成组传送方式)
2
2. 程序直接控制 I/O 方式
I/O 指令是主机与外设进行通信的最基本途径 。DOS 功能调用和BIOS例行程序中的输入/输出 功能也是由IN和OUT指令完成的。
4
例:Sound 程序1
……
mov
in
and
sound: xor
out
mov
wait1: loop
dec
jne
……
dx, 100
al, 61h al, 11111100b al, 2 61h, al cx, 140h wait1 dx sound
设备控制寄存器( 61h )
控制其它外部设备
1
0
1/0 0
n INT n
非屏蔽中断请求
2 NMI
中断逻辑
40 INTO 除法错
1 单步
INTR
8259A IR0
可 IR1
编 程
IR2
中 IR3
断 IR4
控 制
IR5
器 IR6
(PIC) IR7
08 系统定时器 09 键盘 0A 彩色/图形接口 0B 保留 0C 串行通讯口 0D 保留 0E 软盘 0F 打印机
INT 21H
; 设置新的中断向量
POP DS
……
POP DX
POP DS
MOV AL, N
MOV AH, 25H
INT 21H
; 恢复原中断向量
……
INTHAND:
; 中断处理程序
……
IRET
14
中断程序的编写步骤:
主程序:
(1) 设置中断向量 (2) 设置 CPU 的中断允许位 IF (3) 设置设备的中断屏蔽位
例:循环测试某状态寄存器的第2位是否为1
读I/O状态
N 准备好? Y
传送数据
AGAIN: IN TEST JZ
AL, STATUS_PORT AL, 00000100B AGAIN
MOV AL, DATA OUT DATA_PORT, AL
3
轮流查询几种I/O设备:
DEV1: IN AL, STAT1 TEST AL, STAT1_BIT JZ DEV2 CALL FAR PTR PROC1
11
例:为中断类型 N 设置中断向量
…… MOV AX, 0 MOV ES, AX MOV BX, N*4
MOV AX, OFFSET INTHAND
MOV ES: WORD PTR[BX], AX
;偏移地址(N*4)
MOV AX, SEG
INTHAND
MOV ES: WORD PTR[BX+2],AX
键定 时
盘器
OUT 21H,AL
76 5 4
中断命令寄存器20H
EOI
3 2 1 0 MOV AL, 20H OUT 20H, AL
9
中断向量表
00000 类型0的(IP) 类型0的(CS)
00004 类型1的(IP) 类型1的(CS)
中断向量—中断处理程序的入口 地址(段址):(偏址)
4*N 类型N的(IP) 类型N的(CS)
中断处理子程序:
(1) 保存寄存器内容 (2) 如允许中断嵌套,则开中断 ( STI )
(3) 中断处理功能
(4) 关中断 (5) 送中断结束命令( EOI )给中断命令寄存器 (6) 恢复寄存器内容 (7) IRET中断返回
15
例: 编写一个中断处理程序,要求在主程序运行期间, 每隔 10秒响铃一次,同时显示‘ bell ’
用户可利用保留的中断类型号 扩充自己需要的中断功能。
003FC 类型255的(IP) 类型255的(CS)
10
CPU中断过程:
(1)取中断类型:CPU ← type N (2)保护现场:FLAGS、CS、IP入栈 (3)IF=0, TF=0 (4)取中断向量:(4×N)→ IP
(4×N+2)→ CS (5)转中断处理程序
;段地址(N*4+2)
……
INTHAND: …… IRET
;中断处理程序
12
DOS 功能调用(21H)存取中断向量:
设置中断向量: AH = 25H AL = 中断类型号 DS : DX = 中断向量 INT 21H
取中断向量: AH = 35H AL = 中断类型号 INT 21H 返回时送 ES : BX = 中断向量
DEV2: IN AL, STAT2 TEST AL, STAT2_BIT JZ DEV3 CALL FAR PTR PROC2
DEV3: IN AL, STAT3 TEST AL, STAT3_BIT JZ DEV1 CALL FAR PTR PROC3
优:程序安排或修改 设备的优先次序 缺:查询等待浪费 CPU大量有效时间
13
例:用 DOS 功能调用存取中断向量
MOV AL, N
MOV AH, 35H
INT 21H
; 取原中断向量
PUSH ES
PUSH BX
; 保存原中断向量
PUSH DS
MOV AX, SEG INTHAND
MOV DS, AX
MOV DX, OFFSET INTHAND
MOV AL, N
MOV AH, 25H
8
中断的条件:
设置CPU中断允许位:
FLAGS 中的 IF 位 = 1 允许中断 ( STI ) = 0 禁止中断 ( CLI )
设置中断屏蔽位:
中断屏蔽寄存器的中断屏蔽位 = 0 允许I/O设备请求中断 = 1 禁止I/O设备请求中断
8259A
76 5 4
中断屏蔽寄存器21H
打 印 机
3210
IN AL, 21H AND AL,0FDH
2号定时器门控
与 门
放大器
5
例:8.2p287
6
3. 中断传送方式
中断源:引起中断的事件
外中断(硬中断):
外设的 I/O 请求 —— 可屏蔽中断 电源掉电 / 奇偶错 —— 非屏蔽中断
内中断(软中断):
INT 指令 / CPU 错(除法错、溢出)/ 为调试程序设置的中断
7
80x86 中断源:
CPU
相关文档
最新文档