题目
试着编制一程序,从键盘输入一行字符,要求第一个键入的字符必须是空格,如不是,则退出程序;如是,则开始接受键入的字符并顺序放在首地址为BUFFER的缓冲区中(空格不存入),直到接收到第二个空格符时退出程序。
思路
这一程序要求接受的字符从空格开始从空格结束,因此程序必须区分所接受的空格是不是第一个字符,设立标志位存储单元FLAG,一开始置为0,接受空格后置为1。
代码
datasg segment
buffer db 80 dup(?)
flag db ?
datasg ends
;---------------------------
codesg segment
assume cs:codesg,ds:datasg,es:datasg
main proc far
start:
push ds
sub ax,ax
push ax
mov ax,datasg
mov ds,ax
mov es,ax
;----------------------------
mov bx,0 ;偏移地址
mov flag,0
next:
mov ah,01
int 21h
mov cl,flag ;判断最低位是否为1,也可用test flag,01h
shr cx,1 ;jnz follow
jc follow ;标志位为1
cmp al,20h
jnz exit ;不是空格则退出
mov flag,1
jmp next
follow:
cmp al,20h ;是空格则退出
jz exit
mov buffer[bx],al
inc bx
jmp next
;----------------------------
exit:
ret
main endp
codesg ends
end start
调试
第一个字符不是空格,正常退出
第一个字符是空格
查看是否存入BUFFER