我是靠谱客的博主 魁梧爆米花,最近开发中收集的这篇文章主要介绍汇编 DOS的中断调用 INT 21H,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

DOS系统功能调用

这个汇编指令是用于提供DOS系统功能调用。它是由DOS提供的一组实现特殊功能的子程序供程序员在编写自己的程序时调用,以减轻编程的工作量。
分两种,DOS系统功能调用和BIOS中断调用。
链接里都是一些常用的内容,大家可以自己去百度,一定比我这里给出的全面很多,有那种DOS系统功能调用表。

调用步骤大致

  • (1)系统功能号送到寄存器AH中;
  • (2)入口参数送到指定的寄存器中;
  • (3)用INT 21H指令执行功能调用;
  • (4)根据出口参数分析功能调用执行情况。
    下面归纳5个在汇编中常用的INT 21H系统功能调用。
AH功能入口参数出口参数
4CH返回DOS
1键盘输入一个字符到AL中AL=字符
2输出DL寄存器的字符到显示器DL(存放一个字符)
9输出一个以“$”结尾的字符串到显示器DS:字符串所在的段地址 DX:字符串首地址
0AH从键盘输入一个字符串到指定缓冲区DS:缓冲区所在的段地址 DX:缓冲区首地址缓冲区相应位置

实例

带返回码的结束(AH=4CH)

功能:返回DOS
入口参数:无
调用方法


MOV
AH,4CH
INT
21H

通过4CH功能调用能够结束当前正在执行的程序,返回DOS系统,一般用于汇编程序的结束位置。

键盘输入一个字符(AH=1)

功能:从键盘输入一个字符到AL中,AL中为该字符的ASCII码。

入口参数:无

调用方法


MOV
AH,1
INT
21H

执行完上面的系统调用后,出现提示输入光标,从键盘输入一个字符并保存其ASIIC码到AL寄存器中。

<例子>:交互式程序中用户按下数字键1,2,3,程序转入相应的服务子程序,若按下其他键则会继续等待。

KEY:
MOV
AH,1
INT
21H
;系统等待输入一个字符
CMP
AL,'1'
JE
ONE ;如果输入字符为1则跳到标识符ONE处执行
CMP
AL,'2'
JE
TWO ;如上解析
CMP
AL,'3'
JE
THREE
JMP
KEY ;如果不是123则继续输入字符
ONE:
......
TWO:
......
THREE: ...... 

输出显示一个字符(AH=2)

功能:输出DL寄存器中的字符到显示器。
入口参数:被输出显示的字符或者字符ASCII码送到DL寄存器中
调用方法


MOV
DL,字符码
MOV
AH,2
INT
21H

执行完上面的调用后,显示器显示出DL中的字符。


MOV
DL,'6'
(也可以写成6的ASCII码36H,既:MOV
DL,36H)
MOV
AH,2
INT
21H

调用结果在屏幕上光标位置处显示6。

输出一个字符串(AH=9)
功能:输出显示一个以”$”字符结尾的字符串到显示器。
入口参数:DX=字符串偏移地址;DS=字符串的段地址
调用方法


MOV
AX,字符串所在的段地址
MOV
DS,AX
MOV
DX,字符串的首址偏移地址
MOV
AH,9
INT
21H

执行上面调用,输出以DS:DX为首地址,” "" ”字符前面加上0DH(回车),0AH(换行)字符。

<例子>:在屏幕上显示“HOW DO YOU DO?”字符串。并且光标回车换行。

DATA SEGMENT
STR1 DB 'HOW DU YOU DO?',0DH,0AH,'$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET STR1;字符串首偏移地址放到DX中
MOV AH,9
NT 21H;输出字符串
MOV AH,4CH
INT 21H
CODE ENDS
END START

从键盘输入一个字符串到缓冲区(AH=0AH)

功能:从键盘输入一串ASCII码字符到缓冲区,输入结束为缓冲区的个数或者“回车”字符。
入口参数:DX=缓冲区首偏移地址;DS=缓冲区段地址
调用方法


MOV
AX,缓冲区的首址的段地址
MOV
DS,AX
MOV
DX,缓冲区的首址的偏移地址
MOV
AH,0AH
INT
21H

执行完上面调用,将从键盘接受字符串送到内存的输入缓冲区(由DS:DX指定缓冲区),要求预先定义一个缓冲区,缓冲区的第一个字节指定容纳的最大字符个数,由用户给出;第二个字节存放实际的最大字符个数,由系统最后添入;从第三个字节开始存放从键盘接受的字符,直到ENTER键结束。

DATA SEGMENT
BUF
DB
20;存放最大字符个数20个
DB
?,
;存放实际输入字符个数
DB
20 DUP(?)
;存放输入字符
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV
AX,DATA
;缓冲区所在段基址
MOV
DS,AX
LEA
DX,BUF
;缓冲区首址偏移地址
MOV
AH,0AH
INT
21H
MOV
AH
4CH
INT
21H
CODE ENDS
END
START

最后

以上就是魁梧爆米花为你收集整理的汇编 DOS的中断调用 INT 21H的全部内容,希望文章能够帮你解决汇编 DOS的中断调用 INT 21H所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部