汇编--学习笔记(四)-DOS功能调用
来源:互联网 发布:seo诊断seo8 编辑:程序博客网 时间:2024/06/01 08:53
一、基本知识
DOS 功能调用是指汇编程序通过INT 21H软中断来调用DOS内部子程序完成特定的一系列操作的一种方法。
在学习和使用汇编语言过程中,用户不可能,也没有必要从最底层的第一个操作开始。例如打印字符串,若所有工作都由用户程序去做,是不现实的。而调用系统已有的程序就是一种有效的方法。而DOS功能调用就提供了这种方法。
1、调用方法
调用前将功能号送AH寄存器,同时根据功能号规定的要求准备好所有的参数,然后执行INT 21H。
例如:显示一个字符‘A’
MOV DL,41H ;字符‘A’的ASCII码41HMOV AH,02HINT 21H
二、常用的DOS功能调用
1、“1号功能”–1H功能调用—-从键盘读入一个字符
MOV AH,01HINT 21H ;读入的字符在AL寄存器
2、“2号功能”–2H功能调用—-显示器输出一个字符
MOV DL,字符 ;ASCII码,例如:41H;MOV DL,41H ;输出‘A’,方法一;MOV DL,'A' ;输出‘A’,方法二MOV AH,02HINT 21H
3、“9号功能”–9H功能调用—-显示器输出一串字符
DS 指向字符串所在的段 ;一般不必显式地装入DX 指向字符串串首的位移 ;例如:MOV DX,OFFSET HMMOV AH,09HINT 21H
说明:
要求字符串必须以’$’作结束标志,回车换行用0DH,0AH
。例如:
HM DB 'hello world',0DH,0AH,'$' ;在数据段定义
4、“40号功能”–40H功能调用—-显示器输出一串字符
DS 指向字符串所在的段 ;一般不必显式地装入DX 指向字符串串首的位移 ;例如:MOV DX,OFFSET HM--位移用OFFSETCX 为字符串长度BX 送入1MOV AH,40HINT 21H
说明:
字符串不必以’$’作结束标志,回车换行用0DH,0AH
但应给出字符串长度。例如:
比较:
与9号功能比较,40号功能多两个参数,但是不必美元符结束。
HM DB 'hello world',0DH,0AH,'$' ;在数据段定义
5、4CH功能调用—-结束程序
MOV AH,4CH ;或MOV AX,4C00HINT 21H
三、结束程序返回DOS的方法
1、在COM文件或DEBUG下
所写程序可以用INT 20H
或INT 3H
结束程序。
2、在汇编源程序中:
(1)可用 4CH 功能调用结束程序。例如:
MOV AH,4CH ;或MOV AX,4C00HINT 21H
(3)可用RET结束程序。
但必须将执行模块定义为过程。例如:
P1 PROC FAR PUSH AX MOV AX,02H ADD AX,05H RETP1 ENDP......END P1
40号功能输出字符串:
DATA SEGMENT HM DB 'hello yuanlifu!',0DH,0AH;显示字符串 LM EQU $-HM ;$在表达式中,表示当前地址DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX ;装入数据段寄存器 MOV DX,OFFSET HM MOV CX,LM ;字符长度 MOV BX,01H ;规定BX送1 MOV AH,40H ;40H功能调用 INT 21H MOV AH,4CH ;结束程序 INT 21HCODE ENDSEND START
9号功能输出字符串–方法一:
DATAS SEGMENT STRING DB 'hello yuanlifu!!','$';显示字符串DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV AX,DATAS MOV DS,AX LEA DX,STRING MOV AH,9 INT 21H MOV AH,4CH INT 21HCODES ENDS END START
9号功能输出字符串–方法二
DATA SEGMENT HM DB 'hello liefyuan!',0DH,0AH,'$';显示字符串DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATAGO PROC FAR PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV DX,OFFSET HM MOV AH,9 INT 21H RETGO ENDPCODE ENDS END GO
阅读全文
1 0
- 汇编--学习笔记(四)-DOS功能调用
- 汇编dos功能调用
- 汇编dos功能系统调用
- 汇编学习笔记(四)
- 【汇编】DOS功能调用-常用输入输出
- 汇编常用的DOS功能调用
- Win32汇编学习笔记(四)
- IL 汇编学习笔记(四)
- 学习16位DOS汇编笔记
- 汇编相关(ASCII码字符表 DEBUG命令 BIOS功能调用表 DOS功能调用表 汇编语言错误信息表)
- 汇编dos系统调用(输入输出篇)
- UNIX环境高级编程学习笔记(四)不调用fcntl函数实现dup2的功能
- 栈——汇编学习笔记(四)
- android逆向学习,笔记(四)ARM汇编基础
- 【80X86汇编语言学习】【DOS功能调用】基本IO功能 (二)
- 【80X86汇编语言学习】【DOS功能调用】基本IO功能
- linux学习笔记(四)系统调用
- DOS功能调用
- POJ 1177 Picture 笔记
- 你需要理解的 Java 反射机制知识总结
- Python压缩文件
- 4883: [Lydsy2017年5月月赛]棋盘上的守卫
- 在网页中使用个性字体
- 汇编--学习笔记(四)-DOS功能调用
- VS2010快速调整格式
- <测试架构师修炼之道>读书笔记1
- hdu 3341 Lost's revenge
- 将输入的密码变成*的代码
- 输出正整数二进制的位置(难度:半颗星)
- TCP组包问题
- C语言-数据结构-创建栈
- 基于jsp,servlet的简单图书馆管理软件