DOS功能的调用:主要包含三方面的子程序:设备驱动(基本I/O),文件管理和其他(包括内存管理,自取时间,自取终端向量,总之程序等)随着DOS版本的升级,这种DOS功能调用的子程序数量也在不断的增加,功能恶搞更加完备,使用也更加方便

调用的方法

可以按照下面方法调用DOS功能

【1】根据需调用的功能调用准备入口参数,有部分调用是不需要入口参数的,但是大部分的功能调用需要入口参数,在调用前应该准备好入口参数

【2】把功能调用号送到AH

【3】发软中断指令INT 21H

基本的I/O的调用

1:带回响键盘输入(1号功能调用)

功能:从标准输入设备上读一字符,并将该字符回显在标准输出设备上,通常情况下,输入设备就是键盘,输出设备就是屏幕,如果键盘无字符可读,则一直等待,

直到有字符可读

入口参数:无

出口参数:AL = 督导字符的代码(ASCII码)

说明:如果独到的字符是ctrl+c或者CTRL+Break,则结束工作

2:不带回响键盘输入的输入(8号功能的调用)

除读到的输入字符不在屏幕上显示意外,同1好功能调用相似

3:直接键盘输入(7号调用功能)

功能:从标准输入上读取一个字符,通常情况下,标准输入就是键盘,如果键盘无字符可读,则一直等待到有字符可读

入口参数:无

出口参数:AL= 读到字符的代码

说明:不检查读到的字符是否是CTRL +C或者是CTRL+break

   不回显读到的字符

4:显示输出(2号功能嗲用)

功能:向标准输入设备写一字符,通常情况下,标准输出设备就是屏幕

入口参数:DL = 要输出的字符(ASCII码)

出口参数:无

说明:在显示输出时检查是否按照CTRL+C或者CTRL+Break

5:直接控制台输入输出

功能:字节控制台输入输出,通常情况下,控制台输入就是键盘输入,控制台输出就是屏幕输出

入口参数:若DL = 0FFH,表示输入,否则表示输出

出口参数:输入时:ZF =1 ,表示无字符可读,ZF= 0表示读到字符,AL= 输入字符代码;输出时:无

说明:

【1】:在输入时,如果无字符可读,并不等待

【2】:不检查CTRL+C或者CTRL+Break

【3】在读到字符时也不回显

【4】再输入时,如果AL = 0,表示用户曾按下过一个扩展键,在下一次调用该功能是,返回该扩展按键的扫描码

【5】在输出时,不解释表符等特殊控制符

6:显示字符串(9号功能调用)

功能:在标准输出上显示一个祝福穿,通常标准输出就是屏幕

入口参数:DS:DS= 需要输出字符串的首地址,字符串字符‘$’为结束标志

出口参数:无

说明:在现实输出时检查是否按下:CTRL +C或者是CTRL+BREAK,如果是则结束程序

输入字符串(0AH功能的调用)

功能:从输入上读一个字符串,通常情况下,标准输入就是键盘

入口参数:DS:DX = 缓冲区首地址

出口参数:接收到的输入字符串在缓冲区中

说明:(1)缓冲区第一字节置为缓冲区的最大容量,可以认为是入口参数,缓冲区第二字节存放实际读入的字符数,可认为是出口参数的一部分,第三字节开始存放接受的字符串

(2)字符串以回车符结束,回车符是字符串接收到的最后一个字符

(3)如果输入的字符串超过缓冲区所能容纳的最大字符数,则随后的输入字符被丢弃并且响铃,直到遇到回车符为止

(4)如果在输入时按下CTRL+C或者CTRL+break,则程序结束

(8)去键盘输入状态(0BH号功能的调用)

功能:判别在标准输入设备上是否有字符可读

入口参数:无

出口参数:AL= 0 表示无字符可读

     AL = 0FFH表示有字符可读

(9)清楚缓冲区后再输入(0CH功能调用)

功能:清除输入缓冲区要执行的功能号

出口参数:决定于清除输入缓冲区后执行的功能

说明:清除缓冲区后执行的功能室01h,06h,07h或者0Ah,如果不是这样,则不输入

打印输出:(5号功能调用)

功能:向链接在第一个并行口上的打印机输出一字符

入口参数DL = 要打印字符的ASCII码

出口参数:无

说明:打印机可能不立即打印指定的字符

示例代码:

 ;程序功能,写一个程序,他接受一个字符串,然后显示其中数字符的个数,英文字母的个数和字符串的个数

 MLENGTH  =
DSEG SEGMENT
BUFF DB MLENGTH
DB ?
DB MLENGTH DUP()
MESS0 DB 'Please input :$'
MESS1 DB 'Length = $'
MESS2 DB 'X = $'
MESS3 DB 'Y = $'
DSEG ENDS
;
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
START: MOV AX,DSEG
MOV DS,AX
MOV DX,OFFSET MESS0
CALL DISPMESS
MOV DX,OFFSET BUFF
MOV AH,
INT 21H
CALL NEWLINE
MOV BH,
MOV BL,
MOV CL,BUFF+
MOV CH,
JCXZ COK
MOV SI,OFFSET BUFF+ AGAIN:MOV AL,[SI]
INC SI
CMP AL,''
JB NEXT
CMP AL,''
JA NODEC
INC BH
JMP SHORT NEXT
NODEC: OR AL,20H
CMP AL,'a'
JB NEXT
CMP AL,'z'
JA NEXT
INC BL
NEXT: LOOP AGAIN
;
COK: MOV DX,OFFSET MESS1
CALL DISPMESS
MOV AL,BUFF+
XOR AH,AH
CALL DISPAL
CALL NEWLINE
;
MOV DX,OFFSET MESS2
CALL DISPMESS
MOV AL,BH
XOR AH,AH
CALL DISPAL
CALL NEWLINE
;
MOV DX,OFFSET MESS3
CALL DISPMESS
MOV AL,BL
XOR AH,AH
CALL DISPAL
CALL NEWLINE
;
;暂停,任意键关闭
mov ah,
int 21h
mov ah,4ch ;结束,可以修改al设置返回码
int 21h
;
;子程序名称:DISPAL
;功能:用十进制数的形式显示8位二进制数
;入口参数:AL =8位二进制数
;出口参数:无
DISPAL PROC
MOV CX,
MOV DL,
DISP1:DIV DL
XCHG AH,AL
ADD AL,''
PUSH AX
XCHG AH,AL
MOV AH,
LOOP DISP1
MOV CX,
DISP2: POP DX
CALL ECHOCH
LOOP DISP2
RET
DISPAL ENDP
;
;显示dx所指的提示内容,其他子程序说明略
;
DISPMESS PROC
MOV AH,
INT 21H
RET
DISPMESS ENDP
;
;
;显示dx所指的字符,其他子程序说明略
ECHOCH PROC
MOV AH,
INT 21H
RET
ECHOCH ENDP
;
;略去子程序NEWLINW,该子程序列于源程序ASM中
NEWLINE PROC
PUSH AX
PUSH DX
MOV DL,0DH
MOV AH,
INT 21H
MOV DL,0AH
MOV AH,
INT 21H
POP DX
POP AX
RET
NEWLINE ENDP CSEG ENDS
END START

代码解析:DSEG中定义了缓冲区以及要提示的信息的字符常量

DISPMESS    PROC
MOV AH,
INT 21H
RET
DISPMESS ENDP

在主函数中调用DOS功能9显示提示字符变量;显示变量信息

之后调用DOS功能10,获取字符变量,字符的参数入口地址是DX,

之后调用NEWLINE在显示功能中调用的是DOS功能2,其中回车符的ASCII是0DH,换行符的ASCII的是0AH

最后的DOS调用时是使用1这个使得DOS暂停一下,看输出结果

之后用BH数字符计数器和BL字母符计数器

之后用变址寄存器SI指向字符串的首地址

版权所有,转载请注明链接地址:http://i.cnblogs.com/?postid=3705527&update=1

DOS功能的调用的更多相关文章

  1. x01.os.5: DOS 功能调用

    DOS 功能调用(INT 21)-------------------------------AH = 0-2E 适用 DOS 1.0 以上版本AH = 2F-57 适用 DOS 2.0 以上版本AH ...

  2. 汇编语言常用的DOS功能调用

    今天掌握了汇编语言常用的DOS功能调用,现在列出来供参考. 1.单字符输入(1号调用) 格式:MOV AH,1 INT 21H 功能:达到输入状态,从键盘上输入字符的ASCII码送入AX中,并送显示器 ...

  3. 对TControl和TWinControl相同与不同之处的深刻理解(每一个WinControl就相当于扮演了整个Windows的窗口管理角色,主要是窗口显示和窗口大小)——TWinControl就两个作用(管理子控件的功能和调用句柄API的功能)

    TControl是图形控件,它本身没有句柄,所以不能直接使用WINAPI显示,调整位置,发消息等等,只能想办法间接取得想要的效果,但是可以直接使用一些不需要句柄的API,比如InvalidateRec ...

  4. 2017.10.18 微机原理与接口----汇编语言语法和DOS功能调用

    4.1 汇编语言中的基本数据 ·标识符 ·常数 ·变量具有三个属性: (1)段地址(SEG):变量所在段的段地址 (2)偏移地址(OFFSET):变量所在段内的偏移地址 (3)类型(TYPE):每个变 ...

  5. 汇编 DOS的中断调用 INT 21H

    DOS系统功能调用 这个汇编指令是用于提供DOS系统功能调用. 它是由DOS提供的一组实现特殊功能的子程序供程序猿在编写自己的程序时调用,以减轻编程的工作量. 分两种,re=view"> ...

  6. WordPress页面函数功能代码调用大全

    WordPress模板基本文件 style.css 样式表文件index.php 主页文件single.php 日志单页文件page.php 页面文件archvie.php 分类和日期存档页文件sea ...

  7. C#5.0新增功能02 调用方信息

    连载目录    [已更新最新开发文章,点击查看详细] 通过使用调用方信息特性,可获取有关方法的调用方的信息. 可以获取源代码的文件路径.源代码中的行号和调用方的成员名称. 此信息有助于跟踪.调试和创建 ...

  8. Flex打印功能FlexPrintJob调用

    收藏下很详细的学习资料 http://wenku.baidu.com/view/b3d4f40702020740be1e9bf8.html import mx.printing.FlexPrintJo ...

  9. WX支付功能的调用

    1.引入js. 2.微信支付的js.此处有的理解不知对不对,是照着老大的例子整改的~ $('.button').click(function () { var giftId = $('.show'). ...

随机推荐

  1. Unrecognized Windows Sockets error: 0: JVM_Bind异常

    根据端口查看 根据PID查看具体的进程 任务管理器->查看-选择列,选中PID 然后查看任务管理器.

  2. 李洪强iOS开发之 - 实现九宫格并使用SDWebImage下载图片

     李洪强iOS开发之 - 实现九宫格并使用SDWebImage下载图片  源码:  // //  ViewController.m //  08-九宫格扩展 // //  Created by 李洪强 ...

  3. lintcode:Coins in a Line 硬币排成线

    题目 硬币排成线 有 n 个硬币排成一条线.两个参赛者轮流从右边依次拿走 1 或 2 个硬币,直到没有硬币为止.拿到最后一枚硬币的人获胜. 请判定 第一个玩家 是输还是赢? 样例 n = 1, 返回  ...

  4. 欧拉工程第69题:Totient maximum

    题目链接 欧拉函数φ(n)(有时也叫做phi函数)可以用来计算小于n 的数字中与n互质的数字的个数. 当n小于1,000,000时候,n/φ(n)最大值时候的n. 欧拉函数维基百科链接 这里的是p是n ...

  5. ASP.NET连接数据库并获取数据

    关键词:连接对象的用法SqlConnection,SqlCommand,SqlDataAdapter *数据访问方式的写法 工具/原料 VS SQL SERVER 2012 R2 方法/步骤1: 1. ...

  6. zenmap 的扫描方式

    第一种:Intense scan (nmap -T4 -A -v) 一般来说,Intense scan可以满足一般扫描 -T4 加快执行速度 -A 操作系统及版本探测 -v 显示详细的输出 第二种:I ...

  7. Android IllegalStateException: The specified child already has a parent问题解决办法

    最近遇到一个很让人头疼的问题,使用viewpager动态添加页面或者删除页面时出现了问题(java.lang.IllegalStateException: The specified child al ...

  8. Android Handler与多线程

    本文首先解释一下handler是用来干嘛的,然后通过例子介绍其在多线程中的应用. 什么是Handler handler通俗一点讲就是用来在各个进程之间发送数据的处理对象.在任何进程中,只要获得了另一个 ...

  9. 修改linux命令行提示符路径显示

    命令显示行太长,影响观感,这样需要修改,具体方法: 1. 修改 ~/.bashrc,在最后一行添加: export PS1='[\u@\h\W]$' 其中\u是当前用户名,\h是当前主机名,\w显示当 ...

  10. Spring IoC — 基于XML的配置

    1.属性注入 注意点: 1)如果类中显示定义了一个带参的构造函数,则一定还要显示提供一个无参构造函数,否则使用属性注入时将抛出异常. 2)JavaBean关于属性命名的特殊规范.Spring只会检查B ...