汇编 DOS的中断调用 INT 21H
来源:互联网 发布:淘宝怎么进卖家中心 编辑:程序博客网 时间:2024/05/22 11:39
DOS系统功能调用
这个汇编指令是用于提供DOS系统功能调用。它是由DOS提供的一组实现特殊功能的子程序供程序员在编写自己的程序时调用,以减轻编程的工作量。
分两种,DOS系统功能调用和BIOS中断调用。
链接里都是一些常用的内容,大家可以自己去百度,一定比我这里给出的全面很多,有那种DOS系统功能调用表。
调用步骤大致
- (1)系统功能号送到寄存器AH中;
- (2)入口参数送到指定的寄存器中;
- (3)用INT 21H指令执行功能调用;
- (4)根据出口参数分析功能调用执行情况。
下面归纳5个在汇编中常用的INT 21H系统功能调用。
实例
带返回码的结束(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 ;如果不是1、2、3则继续输入字符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为首地址,”
<例子>:在屏幕上显示“HOW DO YOU DO?”字符串。并且光标回车换行。
DATA SEGMENT STR1 DB 'HOW DU YOU DO?',0DH,0AH,'$'DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV DX,OFFSET STR1;字符串首偏移地址放到DX中 MOV AH,9 NT 21H;输出字符串 MOV AH,4CH INT 21HCODE 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 ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA ;缓冲区所在段基址 MOV DS,AX LEA DX,BUF ;缓冲区首址偏移地址 MOV AH,0AH INT 21H MOV AH 4CH INT 21HCODE ENDS END START
- 汇编 DOS的中断调用 INT 21H
- DOS下的int 10h中断
- Dos 下 int 21h 软中断
- 【转载】DOS中断 INT 21H 大全
- DOS系统功能调用(INT 21H)
- 汇编常用的INT 21H系统调用
- 汇编常用的INT 21H系统调用
- 汇编 DOS系统功能调INT 21H
- 中断INT 21H
- int 21h 中断
- DOS系统功能调用表(INT 21H)
- 常用DOS(INT 21H)功能调用表
- DOS系统功能调用表(INT 21H)
- DOS系统功能调用表(INT 21H)
- DOS系统功能调用表(INT 21H)
- DOS系统功能调用表(INT 21H)
- DOS系统功能调用表(INT 21H)
- DOS系统功能调用表(INT 21H)
- Tomcat使用IDEA远程Debug调试
- PAT乙级——1011 个位数统计 (C/C++)
- Linux 动态链接库
- AndroidStuidio错误之JAR包依赖冲突问题
- js中Date日期初始化方法
- 汇编 DOS的中断调用 INT 21H
- leetcode Valid Sudoku
- PAT乙级 月饼 (25)
- javascript setAttribute使用兼容
- 揭开 Growth Hacking 的神秘面纱(番外篇)+ 大结局
- HDU 2236 无题II 二分+最大匹配
- [TwistedFate]UICollectionView
- java中的集合之Collection(一)
- leetcodeRange Sum Query - Immutable