0
很抱歉,如果這個問題很簡單,但我嘗試了所有我知道的知識,並沒有弄明白。MASM32程序集 - 從控制檯讀取一個數字
我想做一個簡單的過程,從控制檯接受一個字符串和一個計數,並打印計數指定的字符串次數。
一切都很好,但是當我將Count移動到eax的循環中時,get的值變成了亂七八糟,最終導致無限循環打印。
我試圖用atodw將Count更改爲DWORD,但沒有奏效。
下面的代碼:
PrintString PROTO :DWORD, :DWORD
.data
String db 100 DUP(0)
Count db 10 DUP(0)
.code
start:
;1- get user input
invoke StdIn, addr String, 99
invoke StdIn, addr Count, 10
;2- Remove the CRLF from count
invoke StripLF, addr Count
;3- Convert the count to DWORD
invoke atodw, addr InputCount
mov Counter, eax
;4- Call the Printer function
invoke Printer, addr String, addr Count
Printer PROC StringToPrint:DWORD, count:DWORD
mov eax,count ;;;;;; This is the problem I think
Looppp:
push eax
invoke StdOut, StringToPrint
pop eax
dec eax
jnz Looppp
ret
Printer endp
非常感謝,這解決了這個問題。我會看看匈牙利符號,看起來更優雅和高效。 –