输入输出与中断程序设计:硬件交互的底层逻辑

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),转载请注明出处。

posted @ 2026-06-22 19:28  软件工程师文艺  阅读(1)  评论(0)    收藏  举报