【MASM汇编语言快速入门】DOS中断速查表——DOS常用系统功能调用

DOS中断速查表——DOS常用系统功能调用

0. 前言

DOS系统功能调用在中断向量表中的中断号是21h

这也是为什么总是在8086MASM汇编程序中看到int 21h这样的语句, 这样的语句就是在调用DOS的功能, 下面介绍DOS提供的功能

一个例子: DOS字符串输出(helloworld程序必备)

string db 'hello world!$'
mov ah, 09h
mov dx, offset string
int 21h

这段程序不能直接运行, 想知道怎么写出完整的汇编程序可以看【MASM汇编快速入门】最简单的汇编helloword与汇编程序框架:MASM伪指令速查表——存储模型和段的定义-CSDN博客

1. 功能号

在调用DOS功能前需要告诉DOS我需要什么功能, MASM是通过ax寄存器的高字节ah来告诉DOS应该调用什么功能的

所以常看到在int 21h前常常有mov ax, xxxx

2. 入口参数, 出口参数

有些DOS功能需要输入或输出, 比如09h字符串输出功能, 需要告诉DOS要输出什么字符串, 输入参数一般放在dx寄存器中, 输出参数一般放在ax寄存器的低子节的al

3. 功能号, 功能, 参数的对照表

功能号功能入口参数(输入)出口参数(输出)
ah=01h从输入设备(比如键盘)输入一个字符al=输入字符的ascii码
ah=02h从输出设备(比如显示器)输出一个字符dl=字符的ascii码
ah=09h从输出设备(比如显示器)输出一个字符串ds:dx=字符串地址
ah=0ah从输入设备(比如键盘)输入一个字符串ds:dx=字符串地址
ah=0bh判断键盘是否有键按下al=0, 无; al=ffh, 有
ah=4ch程序执行终止al=返回码

4. 示例, hello world程序

运用上面的知识写出hello world程序, 这段程序是可以直接运行的

.model small
.data
string db 'hello world!$'

.code
.startup
mov ah, 09h					; 将功能号写入ah
mov dx, offset string		; 将功能的输入写入dx
int 21h						; 发出中断, 呼叫DOS提供系统功能
.exit 0

end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值