— назначает новое основание стека Ао=E800 в текущем сегменте стековой памяти, сохранив при этом адрес текущей вершины в незадействованном регистре;
— загружает в стек содержимое регистров микропроцессора в последова-тельности: dx,ax,bx,cx с использованием команды "mov";
— возвращает из стека с использованием команды "pop" данные в регистры в соответствии с заданным порядком перестановки: <bx>-ax, <ax>-dx, <dx>-cx, <cx>-bx;
—восстанавливает старую вершину стека.
Я написал но она не работает((.
mov si,sp; сохранил старую вершину стека
mov sp,E800; назначил основание
mov dx,1122; загрузил данные в регистр dx
mov ax,3344; ......
mov bx,5566; ......
mov cx,7788; ......
mov [E7FE],dx; здесь вроде (как я думаю) загружаю в стек по адресу E7FE данные из dx
mov [E7FC],ax; .....
mov [E7FA],bx; .....
mov [E7F8],cx; .....
pop bx; читаю из стека в соответствии с заданным порядком
pop ax; ......
pop dx; ......
pop cx; ......
mov sp,si; вернул старую вершину стека
int 20
Адреса выбрал такие так как стековая память организована по принципу LIFO и при загрузке в стек указываем младший адрес для МБ а старший байт пойдет по следущему адресу(вроде так). Выполняю прогу по шагам, в регистры все загружаю нормально,а когда читаю из стека они принимают 0000, а должны bx=7788 ax=5566 и т.д. В чем я ошибья?


