初学汇编--字符的输入与储存
汇编程序: 用字符输入的方法输入一个1位或2位数。
要求: 如果连续输入两个0~9之间的字符,则当成是2位数,将结果送存(这个我会);如果输入一个0~9之间的字符,再敲一下回车键,则认为输入的是一个1位数,将结果送存(这个我不会,请问该怎么写?我初学汇编,麻烦说得详细一些,最好给出程序段。)
[解决办法]
datasegment
NUMEQU255
stringdbNUM,?,NUM dup(?)
msg1db'input the string:$'
msg2db'digits:$'
crlfdb0dh,0ah,'$'
dataends
codesegment
assume ds:data,cs:code
mainprocfar
start:
pushds
xorax,ax
pushax
movax,data
movds,ax
leadx,msg1
movah,9
int 21h
leadx,string
movah,0ah
int 21h
movch,0
movcl,string[1]
movax,0
movsi,0
judge:
cmpstring[si+2],'0'
jlerror
cmpstring[si+2],'9'
jgerror
inc ax
incsi
loopjudge
error:
pushax
leadx,crlf
movah,9
int 21h
leadx,msg2
movah,9
int 21h
popax
addal,30h
movdl,al
movah,2
int 21h
ret
mainendp
codeends
endstart
好久没写汇编了
[解决办法]
大体思路是:
调用DOS int 21中断,取字符,然后判断是否是数字字符,
如果是则转换为数字(也可以不转化看你的需要),然后存储
在.data中的一个数组中。也可以包装一个子过程,用来判断
数字字符。
[解决办法]
汗了,楼主说回两个字符的,但不会一个字符的,好像诡异了点
不过回车不也就一字符么?虽然不是可显示字符。。