OK, ik doe een poging.
Je hebt een processor die heeft zijn restart adres op 0 en zijn interruptadres op 3
Op 0 staat dan
jmp main ; dus spring naar eerste instr hoofdpgm
op adres 3 staat dan jmp int0
Dan denk je misschien waarom gebruik je adres 2 en 1 niet. Wel dat is omdat jmp main al drie posities vergt in de knullige processor die ik hier als voorbeeld concipieer.
Is er een interrupt, zoiets als dat je staat te koken en Eneco belt om je te verleiden hun energie af te nemen in plaats van die van Nuon, dan staat daar speciaal een routine voor klaar.
In het voorbeeld zou die naar analogie luiden:
Val dood, ga wat nuttigs doen, mijn ei staat te verbranden, doei.
In het assembler geval heet die
code:
int0 push PSW
pust ACC
push wat er verder niet beschadigd mag worden zoals je ei
scheld die knakker verrot
pop je ei
pop ACC
pop PSW
reti
Je hoofdprogramma, wat je al schreef en in hex goed, kort en krachtig, leesbaar was voor iedereen wiens moeder een heks is/was, wordt dan bij een interrupt van een hartpuls of een secondepuls onderbroken om even wat anders te doen dat directe aandacht vraagt.
Komt er een interrupt (telefoonbel van Essent) dan springt je programmaexecutie altijd naar adres 3, dat doorverwijst naar bovenbeschreven int0 en reti laat hem weer teruggaan naar waar hij gebleven was.
Zoek even in je processor specs hoe dat gaat.
Doei