#start=Traffic_Lights.exe# #start=Timer_500ms.exe# #start=Taste_INT0Ah.exe# .data .stack 32 .code .startup mov dx, 0 mov es, dx mov dx, offset isr_8 mov es:[20h], dx mov es:[22h], cs mov dx, offset isr_Taste mov es:[28h], dx mov es:[2Ah], cs mov al, 1 out 10h, al main: cli mov cs:sekunde, 0 mov si, cs:index mov ax, cs:phase[si] out 4, ax jmp keinnacht nacht: cmp cs:blinken, 0 je leucht mov ax, 0000o out 4, ax jmp keinnacht leucht: mov ax, 2222o out 4, ax mov cs:blinken, 2 keinnacht: sti warte: jmp warte isr_Taste: cli mov dx, 0040h mov es, dx cmp es:[00FFh], 0 je inv mov es:[00FFh], 0 jmp weiter inv: mov es:[00FFh], 1 weiter: iret isr_8: cli pusha mov dx, 0040h mov es, dx dec cs:count jnz end_isr8 mov cs:count, 2 cmp es:[00FFh], 0 je tag dec cs:blinken jmp nacht tag: inc cs:sekunde mov si, cs:index mov cx, cs:zeit[si] cmp cs:sekunde, cx jb end_isr8 cmp cs:index, 14 je isr8_1 add cs:index, 2 jmp main isr8_1: mov cs:index, 0 end_isr8: popa iret Phase dw 1414o, 1212o, 1111o, 3131o, 4141o, 2121o, 1111o, 1313o zeit dw 6 , 2 , 3 , 2 , 6 , 2 , 3 , 2 first db 0 count db 2 sekunde dw 0 index dw 0 blinken db 2 end