Пытаяс понять как работает твоя реализация прерываний нашел один избыточный кусочек кода как мне кажется:
Скрытый текст
Код:
StInt:
xthl ; обмен hl <-> ((sp))
shld im_ret+1 ; сохраним адрес возврата из прерывания
pop h
shld im_hl+1 ; сохраним значение HL при выхове прерывания
push psw
lxi h,2 ;\ вычисляем указатель стека
dad sp ;/
shld im_sp+1 ; сохраним указатель стека
pop psw
push b ;восстановим данные испорченные стеком
lxi sp,im_stek ; временный указатель стека для прерываний
push PSW
push b
push d
[свернуть]
кажется что тут избыточно порталкивание PSW в стек и обратно. Как мне кажется его можно убрать, и заодним убрать смешение SP на 2 в команде DAD
...
Поправь меня пожалуйста если ошибаюсь
...