Будет ли содержимое стека гарантированно прежним после выполнения пары команд POP AF/PUSH AF? А на 8080/8085?
Вид для печати
Будет ли содержимое стека гарантированно прежним после выполнения пары команд POP AF/PUSH AF? А на 8080/8085?
Содержимое стека (ячеек памяти стека) будет затёрто значениями аккумулятора и регистра флагов. Если вопрос был про содержимое рег. пары [SP], то оно останется прежним.
Попробую перефразировать вопрос, что бы не было недопонимания. В вершине стека записано слово NNNN. CPU последовательно выполняет команды две команды: POP AF и PUSH AF. Будет ли на стеке гарантированно тоже самое число?
по версии emuzwin будет тоже самое (но это кривой эмулятор :) )
сами push pop на флаги не влияют чтобы что то повредить
но вот можно ли писать в недокументированные флаги
упоминания я не помню
только говориться что их можно читать
- - - Добавлено - - -
ну чисто визуально на кристале у AF все 16 битов
http://static.righto.com/images/z80/...ister_zoom.png
можно предположить что в них можно и писать
и что pop af : push af не будет давать никакого нового результата
вот здесь можно, правда, на аглицком: https://retrocomputing.stackexchange...flags-register
вкратце - у 8080 вообще нет "регистра флагов" как такового, и при пуше байт конструируется
у 8085 вроде как уже отдельный регистр, но всё равно один бит принудительно обнуляется
Вопрос на засыпку однако ))
А насколько критичен ответ ? Если заменить на POP AF : DEC SP : DEC SP , то +1 лишний байт и +1 лишний такт, но гарантированно стек не рухнет ))
- - - Добавлено - - -
Упс ! Соврал, может рухнуть, как впрочем и на POP AF : PUSH AF . Если разрешены прерывания и попадём как раз в разрыв между командами, то что-нибудь точно изменится.