Stack:узел указатель стека
0xDDDD
0xCCCC
0xBBBB
0xAAAA
поп топор Средства:
- 0xAAAA будет помещен в топор
- SS: SP будет указывать теперь 0xBBBB.
Теперь я получаю это.
0xDDDD
0xCCCC
0xBBBB
Я хочу сохранить значение оси.
push ax.
0xDDDD
0xCCCC
0xBBBB
0xAAAA
Здесь я снова иду.
mov ax, [ss:sp+2]
0xBBBB будет загружен в топор.
После выполнения моей функции я хочу удалить как стек, так и 0xAAAA и 0xBBBB из стека. Во-первых, я восстановлю топор.
pop ax. (Now loaded with 0xAAAA)
Как избавиться от 0xBBBB от моего стека? Я просто «поп» без аргументов (это существует?) Или я могу добавить sp, 2?
спасибо.
Загрузить руководства по процессорам от Intel или AMD. Они скажут вам, существует ли «поп» без операндов, что «add sp, 2» будет делать и есть ли какая-либо другая ошибка в инструкциях из вопроса. –
'mov ax, [ss: sp + 2]' не существует и не собирается. 'pop' без аргументов также не существует в сборке x86 и не собирается, используйте для этого' add sp, 2'. 'pop' сам не очищает значения, выпадающие из стека, но обычно они быстро перезаписываются очередным прерыванием. – nrz