Я новичок в ASM. Я пытаюсь выполнить простую задачу - сумма чисел от 1 до 100, eax
будет содержать сумму.
например: 1 + 2 + 3 + .. + 100
Сумма чисел от 1 до 100
Так вот соответствующий код:
XOR eax, eax ;; Set eax to 0
MOV ecx, 100 ;; We will loop 100 times
my_loop:
ADD eax, ecx ;; We add the ecx register value to eax, ecx decreses by 1 every iteration untill he reaches 0
LOOP my_loop
;;Exit the program, eax is the exit code
push eax
call ExitProcess
Когда я отлаживать файл EXE, eax
является равным 0. Как это возможно?
BTW, есть ли простой способ распечатать значение EAX
на консоли, вместо того чтобы открывать Windbg, чтобы проверить его значение?
вы не показывать большую часть своего кода, но так как вы звоните 'ExitProces s' Я предполагаю, что вы связываетесь с Windows API. Таким образом, у вас должен быть доступ к 'MessageBox' как средство появления окна с некоторой информацией. Вы также можете использовать 'invoke'. – lurker
@mbratch Я связываю его с masm32 и kernel32, так или иначе, программа должна работать, и eax действительно должен иметь сумму 1 + 2 + 3 + .. + 100? – idish
Вы спросили в своем посте о том, как отображать значения без отладчика, так что это было мое предложение. Вы также можете найти 'int 21h', если используете консоль. Я не уверен, почему 'eax' будет' 0', если отладчик не покажет его вам в этом месте (прямо до или после 'push'). – lurker