-98- | PC机汇编语言实战精解 | ![]() |
|||||||||||||||||||
程序设计技术也可以完成字符串的输入。请看下面的程序: GETSTR.ASM |
|||||||||||||||||||||
data mess buffer data code main input: main code |
segment assume db db db ends segment assume proc mov mov mov mov int mov inc cmp jnz mov mov mov int mov int endp ends end |
ds:data 0dh,0ah 10 dup(20h) '$' cs:code far ax,data ds,ax bx,offset buffer ah,1 21h byte ptr [bx],al bx al,0dh input byte ptr [bx],0ah dx,offset mess ah,9 21h ah,4ch 21h main |
;定义10个空格作为存储字符串的缓冲区 ;定义一个'$'作为字符串结束符 ;初始化DS寄存器指向数据段 ;BX寄存器指向字符串缓冲区 ;选择DOS API的01功能 ;等待键盘输入 ;将键盘输入的字符存入缓冲区 ;缓冲区指针加1 ;输入的字符是回车符吗? ;不是回车符则返回INPUT处继续接收字符 ;是回车符,在回车符后面填入一个换行符 ;DX寄存器指向MESS ;显示输入的字符串 ;结束进程 |
||||||||||||||||||
在程序的数据区内定义了10BYTES的存储区用于存放字符,我们把这个存储区称为字符的"缓冲区"。后面的程序连续用INT 21H的1号功能接收字符并存入缓冲区内,直至收到回车符。采用这种方法接收字符串有两个缺陷:一是不好限制输入字符串的长度,尽管只定义了10个BYTE的缓冲区;二是字符一经输入就不好改变,你必须保证一次输入正确。当然我们可以增加代码解决这两个问题,不过就这个问题而言最佳的解决方法就是采用DOS提供的一个功能调用接收字符串,这就是INT 21H的0AH功能: | |||||||||||||||||||||
![]() |
功能号:0AH 用 途:从键盘接收一个字符串到缓冲区中。 参 数:AH=0AH DS:DX指向输入缓冲区首 |
||||||||||||||||||||
Copyright © 2004-2015 Reanimator | www.cookmoon.org |