стек

Низкоуровневое программирование портов, микроконтроллеров и т.д.

Модератор: Andy

Ответить
kolorimage
Сообщения: 6
Зарегистрирован: 06 апр 2009, 14:58

стек

Сообщение kolorimage » 06 апр 2009, 16:02

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

Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 16:14
Откуда: 71 RUS
Контактная информация:

Re: Пормогите с программой

Сообщение somewhere » 06 апр 2009, 16: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 помещает регистры на стек. Поскольку порядок не алфавитный, то я уже не помню и оставлю эту простую задачу вам.
It's a long way to the top if you wanna rock'n'roll

kolorimage
Сообщения: 6
Зарегистрирован: 06 апр 2009, 14:58

Re: Пормогите с программой

Сообщение kolorimage » 06 апр 2009, 16:29

Спасибо огромное..я всьо понял :)

Ответить