【发布时间】:2014-02-20 04:03:32
【问题描述】:
在汇编中读取和读取数组时遇到了一些问题。
这是一个相当简单的程序(尽管此时还远未完成)。我现在要做的就是读取一串(我们假设是数字),将其转换为十进制数,然后打印出来。这是我到目前为止所得到的。截至目前,它打印 str1。输入数字并按 Enter 后,它会再次打印 str1 并冻结。谁能提供一些关于我做错了什么的见解?
INCLUDE Irvine32.inc
.data
buffersize equ 80
buffer DWORD buffersize DUP (0)
str1 BYTE "Enter numbers to be added together. Press (Q) to Quit.", 0dh, 0ah,0;
str2 BYTE "The numbers entered were: ", 0dh, 0ah, 0
str3 BYTE "The total of numbers entered is: ", 0dh, 0ah, 0
error BYTE "Invalid Entry. Please try again.", 0dh, 0ah,0
value DWORD 0
.code
main PROC
mov edx, OFFSET str1
call Writestring
Input:
call readstring
mov buffer[edi], eax
cmp buffer[edi], 0
JL NOTDIGIT
cmp buffer[edi], 9
JG NOTDIGIT
call cvtDec
mov edx, buffer[edi]
call WriteString
jmp endloop
Notdigit:
mov edx, OFFSET error
call writestring
exit
cvtDec:
mov eax, buffer[edi]
AND eax,0Fh
mov buffer[edi],edx
ret
endloop:
main ENDP
END MAIN
【问题讨论】:
-
请尝试调试,一步一步来。
标签: string assembly x86 masm irvine32