この質問が本当に単純な場合は申し訳ありませんが、私が知っていることをすべて試してみましたが、理解できませんでした.
コンソールから文字列とカウントを取得し、カウントで指定された回数の文字列を出力する簡単な手順を作成しようとしています。
すべて問題ありませんが、ループのためにカウントを eax に移動すると、値が台無しになり、印刷の無限ループが発生します。
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