当前位置: 代码迷 >> 汇编语言 >> 初学汇编-字符的输入与储存,该如何处理
  详细解决方案

初学汇编-字符的输入与储存,该如何处理

热度:7074   发布时间:2013-02-26 00:00:00.0
初学汇编--字符的输入与储存
汇编程序: 用字符输入的方法输入一个1位或2位数。
  要求: 如果连续输入两个0~9之间的字符,则当成是2位数,将结果送存(这个我会);如果输入一个0~9之间的字符,再敲一下回车键,则认为输入的是一个1位数,将结果送存(这个我不会,请问该怎么写?我初学汇编,麻烦说得详细一些,最好给出程序段。)

------解决方案--------------------------------------------------------
data segment
NUM EQU 255
string db NUM,?,NUM dup(?)
msg1 db 'input the string: $'
msg2 db 'digits: $'
crlf db 0dh,0ah,'$'
data ends

code segment
assume ds:data,cs:code
main proc far
start:
push ds
xor ax,ax
push ax
mov ax,data
mov ds,ax

lea dx,msg1
mov ah,9
int 21h

lea dx,string
mov ah,0ah
int 21h

mov ch,0
mov cl,string[1]
mov ax,0
mov si,0
judge:
cmp string[si+2],'0'
jl error
cmp string[si+2],'9'
jg error
inc ax
inc si
loop judge
error:
push ax
lea dx,crlf
mov ah,9
int 21h

lea dx,msg2
mov ah,9
int 21h

pop ax
add al,30h
mov dl,al
mov ah,2
int 21h

ret
main endp
code ends
end start

好久没写汇编了
------解决方案--------------------------------------------------------
大体思路是:

调用DOS int 21中断,取字符,然后判断是否是数字字符,

如果是则转换为数字(也可以不转化看你的需要),然后存储

在.data中的一个数组中。也可以包装一个子过程,用来判断

数字字符。
------解决方案--------------------------------------------------------
汗了,楼主说回两个字符的,但不会一个字符的,好像诡异了点
不过回车不也就一字符么?虽然不是可显示字符。。
  相关解决方案