У меня возникли трудности с пониманием того, что происходит здесь, насколько это находится в стеке, и где регистры ESP, EBP и SS указывают на в точке в коде, который говорит ЗДЕСЬ. Вот мой кодСборка - Стек, процедуры, ESP, EBP, SS - Помогите мне понять
include \masm32\include\masm32rt.inc
.data?
value DWORD ?
.code
start:
push 42
push 5
call xyz
mov value, EAX
print str$(value)
exit
xyz:
enter 4, 0
; HERE
leave
ret 8
end start
Так что мне нужно, чтобы увидеть, что на стеке.
Вот моя догадка о том, где все (ниже текст стека)
Вам нужно прочитать инструкцию о том, что делает 'enter'. Подсказка: он не выталкивает два операнда в стек. Кроме того, 'ESP' всегда будет указывать на то, что известно как _top стека_, которое на вашем рисунке фактически находится внизу. – Jester
@Jester Я должен был сказать, что в этом стеке он растет снизу вверх, поэтому сначала в конце. Я прочитал ввод, создав фрейм стека, и оставил уничтожить этот стек. Я просто не совсем понимаю это. Больше всякой помощи было бы здорово. Спасибо за ваш комментарий. – tay1392
Если ваш стек растет снизу вверх, то это, конечно, еще хуже. Первое, что ставится на стек, - 42, поэтому по этой логике должно быть внизу. PS: вы можете сделать один шаг кода в отладчике и посмотреть, что происходит с каждой инструкцией;) – Jester