BIOS和DOS中断大全列程_DOS中断_01字符调用类

BIOS和DOS中断大全列程_DOS中断_01字符调用类
字符功能调用类(Character-Oriented Function)

中断INT 21H :

目录:
01H、07H和08H —从标准输入设备输入字符
02H —字符输出
03H —辅助设备的输入
04H —辅助设备的输出
05H —打印输出
06H —控制台输入/输出
09H —显示字符串
0AH — 键盘缓冲输入
0BH —检测输入状态
0CH —清输入缓冲区的输入功能

(1)、功能01H、07H和08H


功能描述

从标准输入设备(如:键盘)读入一个字符。该中断在处理过程中将一直处于等待状态直到有字符可读为止。该输入还可被重定向,如果这样做,则无法判断文件是否已到文件尾

入口参数:

AH =01H,过滤掉控制字符,并回显
   =07H,不过滤掉控制字符,不回显
   =08H,过滤掉控制字符,不回显


出口参数:AL=输入字符的ASCII码

例程:

   1:  assume cs:code
   2:   
   3:  ; 演示int 21h 中断中的 01h, 07h, 08h
   4:  code segment
   5:  ; 过滤控制字符串, 并且回显
   6:  ; output: al
   7:  readStr:
   8:      mov ah, 01h
   9:      int 21h
  10:      ret
  11:      
  12:  ; 过滤控制字符串, 不回显
  13:  readStrNotShow:
  14:      mov ah, 08h
  15:      int 21h
  16:      ret
  17:      
  18:  ; 不过滤控制字符串, 不回显
  19:  readStrNotShow2:
  20:      mov ah, 07h
  21:      int 21h
  22:      ret
  23:  start:
  24:      ;读入10个字符
  25:      mov cx, 10
  26:  s:
  27:      call readStrNotShow2
  28:      loop s
  29:      mov ax, 4c00h
  30:      int 21h
  31:  code ends
  32:  end start

(2)、功能02H


功能描述:

向标准输出设备(如:屏幕)输出一个字符。该输出还可被重定向,如果这样做,则将无法判断磁盘是否满


入口参数

AH=02H
DL=待输出字符的ASCII码
出口参数:

 例程:

   1:  assume cs:code
   2:   
   3:  code segment
   4:  start:
   5:      mov ah, 02h
   6:      mov dl, 'A'
   7:      int 21h
   8:      
   9:      mov ax, 4c00h
  10:      int 21h
  11:  code ends
  12:  end start

(3)、功能03H


功能描述:从辅助设备读入一个字符,该辅助设备的缺省值为COM1
入口参数:AH=03H
出口参数:AL=读入字符的ASCII码

(4)、功能04H


功能描述:向辅助设备输出一个字符,该辅助设备的缺省值为COM1
入口参数:

AH=04H
DL=待输出字符的ASCII码
出口参数:

(5)、功能05H


功能描述:向标准的输出设备输出一个字符。该缺省的输出设备为LPT1端口的打印机,除非用MODE命令来改变
入口参数:

AH=05H
DL=待输出字符的ASCII码
出口参数:

(6)、功能06H


功能描述:控制台(如:键盘、屏幕)输入/输出。如果输入/输出操作被重定向,那么,将无法判断文件是否已到文件尾,或磁盘已满
入口参数:AH=06H,DL=输入/输出功能选择
出口参数:若DL=00H-FEH,则此功能为输出,DL为待输出字符的ASCII码;
若DL=0FFH,则此功能为输入,此时:若ZF=1,则无字符可读,否则,AL=读入字符的ASCII码

(7)、功能09H


功能描述:输出一个字符串到标准输出设备上。如果输出操作被重定向,那么,将无法判断磁盘已满
入口参数:

AH=09H
DS:DX=待输出字符的地址
说明:待显示的字符串以’$’作为其结束标志
出口参数:

例程:

   1:  assume cs:code
   2:   
   3:  data segment
   4:      str db '123456789$', 0
   5:  data ends
   6:   
   7:  ; int 21h ah=09h 根据ds:dx来定位要输出的字符串 字符串用$结尾
   8:  code segment
   9:  start:
  10:      mov ax, data
  11:      mov ds, ax
  12:      
  13:      lea dx, str
  14:      mov ah, 09h
  15:      int 21h
  16:      
  17:      mov ax, 4c00h
  18:      int 21h
  19:  code ends
  20:  end start

(8)、功能0AH


功能描述:

从标准输入设备上读入一个字节字符串,遇到“回车键”结束输入(输入的字符在标准的输出设备上有回显)。如果该输入操作被重定向,那么,将无法判断文件是否已到文件尾

入口参数:

AH=0AH
DS:DX=存放输入字符的起始地址
接受输入字符串缓冲区的定义说明:
  1、第一个字节为缓冲区的最大容量,可认为是入口参数;
  2、第二个字节为实际输入的字符数(不包括回车键),可看作出口参数;
  3、从第三个字节开始存放实际输入的字符串;
  4、字符串以回车键结束,回车符是接受的最后一个字符;
  5、若输入的字符数超过缓冲区的最大容量,则多出的部分被丢弃,系统并发出响铃,直到输入“回车”键才结束输入。
例如:
  BUFF 80, ?, 80 DUP(?)   ;最多接受80个字符
出口参数:无

例程:

   1:  assume cs:code
   2:   
   3:  data segment
   4:      str db 80, ?, 80 dup(0)
   5:  data ends
   6:   
   7:  ; int 21h ah=09h 根据ds:dx来定位要输出的字符串 字符串用$结尾
   8:  code segment
   9:  start:
  10:      mov ax, data
  11:      mov ds, ax
  12:      
  13:      lea dx, str
  14:      mov ah, 0Ah
  15:      int 21h
  16:      
  17:      mov ax, 4c00h
  18:      int 21h
  19:  code ends
  20:  end start

(9)、功能0BH


功能描述:检查标准输入设备上是否有字符可读。该输入操作可被重定向
入口参数:AH=0BH
出口参数:AL=00H——无字符可读;FFH——有字符可读

(10)、功能0CH


功能描述:清空当前的标准输入缓冲区,再读入字符。其输入操作可被重定向
入口参数:AH=0CH
AL=01H、06H、07H、08H或0AH
出口参数:若入口参数AL为0AH,则DS:DX=存放输入字符的起始地址,否则,出口参数AL=输入字符的ASCII码

例程:

请参看 例程1 添加代码mov ah, 0ch

posted @ 2013-07-22 11:11  Ares_  阅读(644)  评论(0编辑  收藏  举报