dos 10号功能调用

作者在 2010-11-04 16:42:55 发布以下内容
10号dos调用
功能: 从键盘接收字符串送入内存的输入缓冲区,同时送显示器显示。
调用前要求: 
先定义一个输入缓冲区
    MAXLEN  DB  100     ;第1个字节指出缓冲区能容纳的字符个数,即缓冲区长度,不能为0
    ACLEN   DB  ?       ;第2个字节保留,以存放实际输入的字符个数
    STRING  DB  100 DUP(?)  ;第3个字节开始存放从键盘输入的字符串。                
调用格式: LEA  DX,MAXLEN(缓冲区首偏移地址)  
           MOV  AH,10
           INT  21H
注意:调用时,要求DS:DX指向输入缓冲区
综合举例:
    简单的人机对话的实现
屏幕显示:What’s your name?     (使用9号DOS功能调用)
用户输入:LiPing ↙     (使用10号DOS功能调用)
屏幕再显示:Hello, LiPing!  (使用9号DOS功能调用)
程序清单:
DATA SEGMENT
BUF  DB  30
ACTL  DB  ?
STR  DB  30 DUP(?)
MESS  DB  ‘What’s your name?’,0DH,0AH, ‘$’
DMESS  DB   0DH,0AH, ‘Hello,$’
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MAIN PROC FAR
PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
LEA DX,MESS
MOV AH,9
INT 21H           ;显示 ‘What’s your name?’
LEA DX,BUF
MOV AH,10
INT 21H           ;从键盘接收用户输入的信息
MOV AL,ACTL       ;取得键入字符串的实际长度
CBW
MOV SI,AX
LEA BX,STR
MOV [BX+SI],BYTE PTR ‘!’       ;在键入的字符串后加‘!’
MOV [BX+SI+1],BYTE PTR ‘$’     ;在‘!’后加‘$’,以便显示
LEA DX,DMESS         ;显示‘Hello!’
MOV AH,9
INT 21H            
LEA DX,STR           ;显示键入的字符串
MOV AH,9
INT 21H         
RET
MAIN ENDP   
CODE    ENDS
 END MAIN
编程 | 阅读 1468 次
文章评论,共0条
游客请输入验证码
文章归档
最新评论