Подскажите, здесь приведён пример с прерыванием и выводом графики. Вроде бы разобрался, даже будет работать, если в этот момент не спрайты рисуются. Но возникает вопрос. Если стек SP был на одном адресе, то при переходе на прерывание он уменьшается. Здесь где выделено, он уже уменьшенный и imm_sp он присваивается, уменьшенный, а не каким он был изначально. Ведь выход не RET, а JP. Значит он не увеличится сам. Как это понять? Не должен ли быть он между PUSH и POP?Код:;hl адрес спрайта Код: ;вот это вешаем на прерывание ISR_sub di ex (sp),hl ;обмениваем вершину стека и содержимое HL ld (imm_jp),hl pop hl ;заменяем испорченное слово спрайта push bc ;на текущее слово находящееся в BC ld (imm_sp),sp ld sp,ISR_sp ;здесь идет обработка прерывания ; ... ;---------------------------------- ld sp,$ imm_sp equ $-2 ei jp $ imm_jp equ $-2
И ещё,
это то же, что иКод:ld (imm_jp),hl jp $ imm_jp equ $-2
?Код:ld (imm_jp+1),hl imm_jp jp $




Ответить с цитированием