Я пытаюсь сделать ряд игр с угадыванием в коде сборки, который начинается с диапазона от 1 до 1, а затем увеличивается на 1 каждый раз, когда вы правильно отвечаете.Сборочный номер Guessing Game
По какой-то причине, хотя при запуске программы число, которое выводится для диапазона, невероятно высокое, а не 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 абсолютно необходимо. –