3
我試圖在彙編代碼中以1到1的範圍開始進行數字猜測遊戲,然後每次獲得答案時都會加1。程序集猜數遊戲
由於某些原因,雖然當我運行該程序輸出範圍的數字是令人難以置信的高,而不是1,當我輸入1是第一輪的答案,它說我輸了,而不是繼續。所以如果任何人都可以幫助我解決那些很棒的問題!
include \masm32\include\masm32rt.inc
.data
formatString BYTE "guess a number from 1 to %d , if you get it right you continue", 0ah, 0dh, 0
guessstr BYTE 11 DUP (0)
guess DWORD ?
range DWORD 0
answer DWORD 1
prompt BYTE "You lose!", 0
.code
main proc
call seedrand
nextlevel:
move eax, 0
mov range, ebx
add ebx, 1
pushd ecx
call randnum
invoke crt_printf, ADDR formatString, ebx
invoke StdIn, ADDR guessstr, 10
invoke atodw, ADDR guessstr
mov guess, edx
add ecx, 1
cmp eax, ebx
je nextlevel
invoke StdOut, ADDR prompt
jnz skip
seedrand proc
; seeds the random number generator
; _stdcall
invoke GetTickCount ; result goes in eax
invoke nseed, eax
ret
seedrand endp
randomnum proc
; generate a random number
; _stdcall
mov eax, [esp+4]
invoke nrandom, eax
ret 4
randomnum endp
skip:
; return 0
mov eax, 0
ret
main endp
end main
這些聽起來都很不錯。不幸的是,你沒有真正提出一個問題。 –
我編輯它,我想我提到的問題,但實際上並沒有要求他們的幫助 – student
那麼當你在調試器中單步執行時,你會看到什麼?在什麼時候有一個預計不會被採納的分支,或者是一個價值不符合預期的註冊?學會爲asm使用調試器是絕對必要的。 –