PDA

Просмотр полной версии : стек



kolorimage
06.04.2009, 17:02
у меня задание-
сохранить в стеку регистры общего назначения одной командой,Вызвать подпрограмму которая изменит между собой в стеку значение регистров Ах Di,Cx i Si .После выполнения процедуры зчитать со стека значения регистров одной командой.
Как сохранять и зчитать я знаю (pusha,popa)
Но как поменять Ах Di,Cx i Si немогу найти ..а здавать то надо(лабораторные,я студент)

somewhere
06.04.2009, 17:14
pusha
mov bp, sp
mov ax, [bp+WWWW]
xchg ax, [bp+XXXX]
mov [bp+WWWW], ax
mov ax, [bp+YYYY]
xchg ax, [bp+ZZZZ]
mov [bp+YYYY], ax
popa

Где WWWW, XXXX, YYYY, ZZZZ - смещения сохраненных регистров общего назначения в стеке AX, DI, CX, SI соответственно, относительно нового указателя стека после выполнения pusha. Эти смещения могут быть вычислены, если почитать в каком порядке pusha помещает регистры на стек. Поскольку порядок не алфавитный, то я уже не помню и оставлю эту простую задачу вам.

kolorimage
06.04.2009, 17:29
Спасибо огромное..я всьо понял:)