从键盘输入一个字符:
功能号01
入口参数:无
功能:等待从键盘读入一个字符,将字符的ASCII码送到AL,同时将该字符显示在屏幕上,调用方法:
mov ah 01h
int 21h
说明:输入一个字符的时候不需要按enter键结束输入,若只按enter键,则AL中就是enter回车的ASCII码。
显示一个字符:
功能号:02
入口参数:DL=要显示的字符的ASCII码
出口参数:无
功能:在当前光标位置显示DL中的字符后,然后光标右移。
调用方法示例:
mov dl, 'A'
mov ah ,02h
int 21h
显示一个字符串:
功能号:09
入口参数: DS:DX=欲显示的字符串在内存中的首地址,字符串必须以'$'作为结束标志,'$'不属于被显示的字符
出口参数:无
功能:在当前光标的位置,显示由DS:DX为首地址,'$'作为结束标志的字符串。
string db 'hello,I am yangwan','$'
mov ax, seg string
mov ds, ax
mov dx, offset string
mov ah, 09h
int 21h
从键盘读入一个字符串:
功能号:0AH
入口参数: DS:DX = 输入字符串的缓冲区的首地址
输入缓冲区的格式:第0个字节给出输入缓冲区最多能容纳的字符串的个数(1-255,包括回车字符),由应用程序设置,第一个字节
存放实际输入的字符串中字符的个数(不包括回车字符),由系统在输入字符串后自动设置。从第2个字节开始存放实际输入的字符串。
最后回车字符的ASCII码为0DH
出口参数:无
功能:从键盘读入一个字符存放在由DS:DX指定的缓冲区内。
说明:
在输入字符串后,必须按enter键结束输入
当输入的字符个数达到输入缓冲区所能容纳的字符的个数减1的时候,随后的输入将不被系统接收,且响铃警告。
BUF DB 100 ;定义输入缓冲区,最多能容纳99个字符和一个回车字符
DB ? ;定义实际输入的字符串中字符的个数
STR DB 100 DUP(100) ;存放实际输入的字符串
MOV AX ,SEG BUF
MOV DS ,AX
MOV DX, OFFSET BUF
MOV AH,0AH
INT 21H
codeseg segment
assume ds:codeseg,cs:codeseg
start:
push cs
pop ds
mov ax,1111011011100101B
xor ax,0ffffh
mov dl,0
next:
test ax,0ffffh
jz endpro
shr ax,1
jnc continue
inc dl
continue:
jmp next
endpro:
or dl,30h
mov ah,02h
int 21h
mov ah,4ch
int 21h
mov dl,0Dh
mov ah,02h
int 21h
mov dl,0Ah
mov ah,02h
int 21h
codeseg ends
end start
dataseg segment
charbuf db 10
db ?
string db 10 dup(?)
enter db 0Dh,0Ah,'$'
dataseg ends
stackseg segment para stack 'stack'
db 50 dup(?)
stackseg ends
codeseg segment
assume ds:dataseg,cs:codeseg,ss:stackseg
start:
mov ax,dataseg
mov ds,ax ; set the code segment
mov dx,offset charbuf
mov ah,0ah
int 21h
mov dl,charbuf+1
cmp dl,9
ja next ; the buf is full
mov bx,offset string
mov dh,0
add bx,dx
mov byte ptr[bx],'$'
next:
mov dx,offset enter
mov ah,09h
int 21h
mov dx,offset string
mov ah,09h
int 21h
mov dx,offset enter
mov ah,09h
int 21h
mov dl,[charbuf+1]
or dl,30h
mov ah,2
int 21h
mov ah,4ch
int 21h
codeseg ends
end start