回 帖 发 新 帖 刷新版面

主题:求教 INT 21H AH=0AH

关于这个函数功能的用法
现在只知道
DS:DX=缓冲区首地址
(DS:DX)=缓冲区最大字符数 (DS:DX+1)=缓冲区实际字符数 
各位能帮举个实例吗?

回复列表 (共4个回复)

沙发

帮帮忙,各位!

板凳

帮帮忙,各位!

3 楼

天啊!没人知道吗?

4 楼

例题:利用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

我来回复

您尚未登录,请登录后再回复。点此登录或注册