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にデバッガを使用することを学ぶことは絶対に不可欠です。 –