输入输出与中断程序设计:硬件交互的底层逻辑
I/O 端口
CPU 通过端口与外设通信。x86 有独立的 I/O 地址空间(64KB)。
端口读写指令
IN AL, DX ; 从 DX 指向的端口读入 AL
OUT DX, AL ; 将 AL 写入 DX 指向的端口
中断向量表(IVT)
内存 0000:0000 处的 1KB 空间,存放 256 个中断处理程序地址:
| 中断号 | 功能 |
|:--|:--|
| 00h | 除零错误 |
| 08h | 定时器中断 |
| 09h | 键盘中断 |
| 10h | BIOS 显示服务 |
| 13h | BIOS 磁盘服务 |
| 21h | DOS 系统调用 |
中断处理流程
1. CPU 收到中断请求
2. 保存 FLAGS、CS、IP 到栈
3. 从 IVT 查找处理程序地址
4. 跳转到处理程序
5. IRET 返回
自定义中断处理程序
; 安装自定义中断
CLI ; 关中断
MOV AX, 0
MOV ES, AX
MOV WORD PTR ES:[09h*4], OFFSET MyISR
MOV WORD PTR ES:[09h*4+2], CS
STI ; 开中断
; 中断服务程序
MyISR PROC
PUSH AX
; 处理键盘输入
POP AX
IRET
MyISR ENDP
BIOS 中断
| 中断 | 功能号 | 用途 |
|:--|:--|:--|
| INT 10h | AH=00h | 设置显示模式 |
| INT 10h | AH=0Eh | 显示字符(TTY)|
| INT 13h | AH=02h | 读磁盘扇区 |
| INT 16h | AH=00h | 读取键盘按键 |
总结
中断是硬件与软件的桥梁。理解中断机制,你就掌握了操作系统与硬件对话的语言。
下一篇:《多模块程序设计与混合编程:C 语言调用汇编》
原文链接:https://wenyiblog.top/2026/06/asm-14-io-interrupts/
首发于文艺技术笔记(wenyiblog.top),转载请注明出处。

浙公网安备 33010602011771号