例: Sound程序3 speaker _on proc push ax call speaker_on 1 al. 61h or 1,3 mov al. 255 out 61h. al out 42h. al pop ax mov CX, 500 ret 2: push CX speaker_on endp mov Cx. 0do00h L2a. speaker_off proc loop L2a push ax pop CX 1.61h loop L2 and al. ofch sub al 1 out 61h. al Jnz pop ax ret call speaker_off speaker_off endp
6 …… call speaker_on mov al, 255 L 1 : out 42 h , al mov cx, 500 L 2 : push cx mov cx, 0 d000 h L 2 a : loop L 2 a pop cx loop L 2 sub al, 1 jnz L 1 call speaker_off …… speaker_on proc push ax in al, 61 h or al, 3 out 61h, al pop ax ret speaker_on endp speaker_off proc push ax in al, 61 h and al, 0fch out 61h, al pop ax ret speaker_off endp …… 例:Sound 程序 3
例:打印机查询输出子程序 print proc near push ax push dx mov dx. 378h ;数据寄存器 out dx. al mov dx. 379h ;状态寄存器 again: In a test al. 80h Je agaIn 打印机忙? mov dx. 37ah ;控制寄存器 mov al. odh out dx. al 送选通信号 jmp $+2 ;展宽选通信号 mov al Och out dx. al pop dx pop ax ret print endp 7
7 print proc near push ax push dx mov dx, 378h ; 数据寄存器 out dx, al mov dx, 379h ; 状态寄存器 again: in al, dx test al, 80h je again ; 打印机忙? mov dx, 37ah ; 控制寄存器 mov al, 0dh out dx, al ; 送选通信号 jmp $+2 ; 展宽选通信号 mov al, 0ch out dx, al pop dx pop ax ret print endp 例:打印机查询输出子程序
3.中断传送方式 中断源:引起中断的事件 外中断(硬中断): 外设的IO请求 可屏蔽中断 电源掉电/奇偶错—非屏蔽中断 内中断(软中断): INT指令/CPU错(除法错、溢出)/为调试程序设置的中断
8 中断源:引起中断的事件 外中断(硬中断): 外设的 I/O 请求 —— 可屏蔽中断 电源掉电 / 奇偶错 —— 非屏蔽中断 内中断(软中断): INT 指令 / CPU 错(除法错、溢出) / 为调试程序设置的中断 3. 中断传送方式
80x86中断源: 非屏蔽中断请求 8259AIRQ0-6系统定时器 2 NMI 可R1键盘 编R2彩色/图形接口 ENTR 程 CPU 中断逻辑 3保留 断IR4串行通讯口 控 保留 制 IR6软盘 INT n INTO除法错单步 器 (PC)R7打印机
9 非屏蔽中断请求 中断逻辑 INT n INTO 除法错 单步 n 4 0 1 CPU 2 NMI 8259A 可 编 程 中 断 控 制 器 ( PIC ) IR0 系统定时器 IR1 键盘 IR2 彩色/图形接口 IR3 保留 IR4 串行通讯口 IR5 保留 IR6 软盘 IR7 打印机 INTR 08 09 0A 0B 0C 0D 0E 0F 80x86 中断源:
CPU响应外设中断请求的条件: 设置CPU中断允许位 PSW中的IF位=1允许中断(ST) 0禁止中断(CL) 设置中断屏蔽位 中断屏蔽奇存器的中断屏蔽位=0允许中断 1禁止中断 8259A 32 中断屏蔽寄存器21H 时 机 中断命令寄存器20H[Eo MOV AL 20H OUT 20H,A 10
10 设置CPU中断允许位: PSW 中的 IF 位 = 1 允许中断 ( STI ) = 0 禁止中断 ( CLI ) 设置中断屏蔽位: 中断屏蔽寄存器的中断屏蔽位 = 0 允许中断 = 1 禁止中断 7 6 5 4 3 2 1 0 定 时 器 键 盘 打 印 机 中断屏蔽寄存器21H 7 6 5 4 3 2 1 0 中断命令寄存器20H EOI MOV AL, 20H OUT 20H, AL 8259A CPU响应外设中断请求的条件: