DOS 中断调用实战:INT 21h 文件/键盘/显示操作

什么是 DOS 中断?

DOS 中断是操作系统提供的系统调用。汇编程序通过 INT 21h 请求 DOS 服务。

功能号机制


MOV AH, 功能号  ; 选择服务
; 设置其他参数
INT 21h         ; 调用

常用功能号速查

| 功能号 | 功能 | 输入 | 输出 |

|:--|:--|:--|:--|

| 01h | 键盘输入(带回显) | - | AL=字符 |

| 02h | 显示字符 | DL=字符 | - |

| 09h | 显示字符串 | DX=字符串地址 | - |

| 0Ah | 键盘输入(缓冲区) | DX=缓冲区地址 | - |

| 3Ch | 创建文件 | DX=文件名,CX=属性 | AX=文件句柄 |

| 3Dh | 打开文件 | DX=文件名,AL=模式 | AX=文件句柄 |

| 3Eh | 关闭文件 | BX=文件句柄 | - |

| 3Fh | 读文件 | BX=句柄,DX=缓冲区,CX=字节数 | AX=实际读取 |

| 40h | 写文件 | BX=句柄,DX=缓冲区,CX=字节数 | AX=实际写入 |

| 4Ch | 退出程序 | AL=返回码 | - |

实战:文件读写


; 创建并写入文件
DATA SEGMENT
    FNAME DB 'test.txt', 0
    MSG   DB 'Hello from Assembly!'
    BUF   DB 100 DUP(?)
    HANDLE DW ?
DATA ENDS

CODE SEGMENT
    ASSUME CS:CODE, DS:DATA
START:
    MOV AX, DATA
    MOV DS, AX
    
    ; 创建文件
    MOV AH, 3Ch
    MOV CX, 0
    MOV DX, OFFSET FNAME
    INT 21h
    MOV HANDLE, AX
    
    ; 写入数据
    MOV AH, 40h
    MOV BX, HANDLE
    MOV CX, 20
    MOV DX, OFFSET MSG
    INT 21h
    
    ; 关闭文件
    MOV AH, 3Eh
    MOV BX, HANDLE
    INT 21h
    
    ; 退出
    MOV AH, 4Ch
    INT 21h
CODE ENDS
    END START

总结

掌握 INT 21h,你的汇编程序就能与文件系统、键盘、屏幕交互,从玩具变成工具。

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


原文链接:https://wenyiblog.top/2026/06/asm-13-dos-interrupts/

首发于文艺技术笔记(wenyiblog.top),转载请注明出处。

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