回 帖 发 新 帖 刷新版面

主题:DOS中断中怎么实现字符串输入后显示

DOS中断中怎么实现字符串输入后显示

回复列表 (共2个回复)

沙发

用DOS的10号中断读取字符串,再自己往字符串最后加一个'$',这样可以调用09号功能输入字符串了.

具体可查看DOS中断表.

板凳

(1)从键盘读入一个字符 
    功能号:1    
    入口参数:无   
    出口参数:AL=输人字符的ASCII码
功能:等待从键盘读入一个字符,将字符的ASCII码送给AL,同时将该字符显示在屏幕上。
调用方法:
         MOV  AH,l    ;AH中存放的是功能号
         INT 21H
说明:在输入一个字符后,不需要键入回车。若只键入回车,则出口参数AL得到的是回车符的ASCII码0DH。
(2)显示一个字符
   功能号:2    
   入口参数:DL=要显示字符的ASCII码
   出口参数:无 
   功能:在当前光标位置显示DL中的字符,然后光标右移。
   调用方法示例:  下列指令序列用来显示字符’A’
MOV   DL,‘A’
MOV   AH,2
INT    2lH
(3)显示一个字符串 
功能号;9
入口参数;DS:DX=欲显示的字符串在内存的首地址。字符串必须以’$’作为结束标志,’$’不属于被显示的字符串。
出口参数:无
功能:在当前光标位置,显示由DS:DX所指的、以’$’为结束标志的字符串,然后光标右移。
调用方法示例:

STRING    DB  ‘Hello world!’,’$’

下列指令序列用来显示String中的字符串‘Hello world!’。
MOV  AX,SEG STRING 
MOV  DS,AX
LEA   DX,STRING
MOV  AH,9
INT   21H
(4)从键盘读入一个字符串
功能号:0AH
入口参数:DS:DX=输人缓冲区的首地址
输入缓冲区格式:第0个字节给出输入缓冲区最多能容纳的字符个数(1~255,包括回车符),由应用程序设置;第1个字节将存放实际输人的字符个数(不包括回车符),由系统在读入字符串后自动设置;从第2个字节开始存放实际输入的字符串,最后为回车符的ASCII码0DH。
出口参数;无
功能:从键盘读入一个字符串,存入由DS:DX所指的输入缓冲区。
说明:
•在输入字符串后,必须以回车结束。
•当输人的字符数达到了输入缓冲区所能容纳的字符个数减l时,随后的输入将不被系统接收,且响铃警告。
  调用方法示例:
……
    BUF  DB  80           ;定义输入缓冲区,最多容纳79个字符与1个回车符
         DB  ?            ;存放实际输入的字符个数,由系统自动设置
         DB  80 DUP (?)   ;存放实际输入的字符串
……
下列指令序列将从键盘读人字符串(长度<80,并存入输入缓冲区BUF中
   MOV AX,SEG BUF
   MOV DS,AX
   MOV DX,OFFSET BUF
   MOV AH,0AH
   INT 21H
假定的字符串为’ABC’,则输入缓冲区BUF的内容如下:
   BUF+1: 3        ; 输入字符个数为3
   BUF+2: 61H     ;’A’的ASCII码
   BUF+3: 62H     ;’B’的ASCII码
   BUF+4: 63H     ;’C’的ASCII码  
   BUF+5: 0DH     ;回车符的ASCII码  

我来回复

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