The pusha/EOI/iret pattern you write here is the same shape every real-mode DOS TSR and early xv6-style teaching kernel uses to hook IRQ 0 and IRQ 1, and forgetting to send the 0x20 EOI byte to the PIC is a real bug that silently stops all further timer or keyboard interrupts from firing. This is the mechanism every preemptive OS scheduler ultimately rides on top of.