常用的DOS功能输入输出

时间:2025-04-01 09:03:34
单个字符输入
  • 格式
mov ah,1
int 21h
  • 功能:从键盘输入一个字符并将该字符的ASCII码送入AL中
单个字符输出
  • 格式
mov dl,'字符'
mov ah,2
int 21h
  • 功能:输出DL中的一个字符到显示器的光标处
输入字符后回显
mov ah,1
int 21h
mov dl,al
mov ah,2
int 21h

字符串输入

  • 格式
DS:DX = 字节缓冲区的首地址

mov ah,0ah
int 21h
  • 功能:从键盘输入一串字符到缓冲区,用“回车”结束输入。若输入字母超过缓冲区容纳的个数,则系统忽略此字符并响铃警告
  • 说明:缓冲区的第一个字节单元为允许输入的最大字节数,第2个单元为实际键入字符的个数(由系统自动填入),从第3个单元开始存放键入的字符
  • 例:
;前提:提前设置缓冲区
;然后在使用时将缓冲区的偏移地址放在DS:DX中
BUFFER DB 10,?,10 DUP(?)
...
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET BUFFER
MOV AH,10
INT 21H
  • 输入Hello时缓冲区存储情况
10
5
48
65
6c
6c
6f
0d
显示字符串
  • 格式
mov ah,09h
ds:dx = 字符串地址
int 21h
  • 功能:显示一个以“$”结尾的ASCII码字符串
  • 例:
DISPLAY DB 'Very Good!','$'
...
MOV AX,DATA
MOV DS,AX
LEA DX,DISPLAY
MOV AH,9
INT 21H
换行
data segment
	enter 0ah,0dh,'$'
data ends
code segment
assume cs:code,ds:data
start:
	lea dx,enter
	mov ah,9
	int 21h
	mov ah,4ch
	int 21h
code ends
end start
换行:
mov ah,2
mov dl,10
int 21h
回车:
mov ah,2
mov dl,13
int 21h