termineertaak: ; Opgave 3
;
; gooit de taak die deze routine oproept uit de takenlijst
; en zet de uitvoering verder met een andere taak uit de takenlijst
mov [Huidige_Taak], dword 0
; Nu moeten we zoeken een andere taak om uit te voeren.
push eax
push ecx
mov eax, [Huidige_Taak]
mov ecx, [Huidige_Tick]
.zoeker:
add eax, 8
cmp eax, takenlijst + (MAX_TAKEN * 8)
jl .verder_zoeken
lea eax, [takenlijst]
.verder_zoeken:
cmp dword[eax], 0
je .zoeker
cmp dword[eax+4], ecx
jg .zoeker
; Nieuwe taak is gevonden.
mov [Huidige_Taak], eax
mov esp, [eax]
pop ecx
pop eax
ret