目录 上一页 下一页 下一章

-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

目录 上一页 下一页 下一章