主题:求教 INT 21H AH=0AH
kozzy
[专家分:0] 发布于 2006-12-28 13:09:00
关于这个函数功能的用法
现在只知道
DS:DX=缓冲区首地址
(DS:DX)=缓冲区最大字符数 (DS:DX+1)=缓冲区实际字符数
各位能帮举个实例吗?
回复列表 (共4个回复)
沙发
kozzy [专家分:0] 发布于 2006-12-28 20:05:00
帮帮忙,各位!
板凳
kozzy [专家分:0] 发布于 2006-12-28 20:05:00
帮帮忙,各位!
3 楼
kozzy [专家分:0] 发布于 2006-12-28 23:31:00
天啊!没人知道吗?
4 楼
lingyundingding [专家分:30] 发布于 2006-12-29 09:48:00
例题:利用09h和0ah系统功能调用,实现人-机对话。程序段如下:
data segment
mess db "what is your name?",0ah,0dh,'$'
in_buf db 81,?,81 dup(?) ;为字符缓冲区
data ends
stack segment
sta db 256 dup(?)
stack ends
code segment
assume cs:code,ds:data,ss:stack
start:mov ax,data
mov ds,ax
disp:mov dx,offset mess
mov ah,09h
int 21h ;显示字符串mess
keyi:mov dx,offset in_buf
mov ah,0ah
int 21h ;从键盘读入字符串,最大长度为81个字符,输入结束
字符串实际长度送入in_buf后的第二的字节,字符串的
内容存入从in_buf后的第三个字节开始的地方,并且,
输入的字符串在标准输出设备上有回显
mov dl,oah
mov ah,02h
int 21h
mov dl,odh
mov ah,02h
int 21h ;回车换行
dispo:lea si,in_buf
inc si
mov al,[si]
cbw
inc si
add si ,ax ;指针si指向字符串结束后的第一个单元
mov byte ptr [si],'$' ;送入“$”结束符,便于使用09h功能输出
mov dx,offset in_buf+2
mov ah,09h
int 21h
mov ax,4c00h
int 21h
code ends
end start
我来回复