aport EQU 60h bport EQU 61h cport EQU 62h sport EQU 63h sbyte EQU 8bh picbest EQU 20h picfrei EQU 21h irq7vek EQU 3ch irq7fre EQU 7fh irq7bes EQU 67h irq6vek EQU 38h irq6fre EQU 0bfh irq6bes EQU 66h prog SEGMENT ASSUME CS:prog, ES:prog, DS:prog, SS:prog ORG 100h start: mov al, sbyte out sport, al push es push ax mov ax, 0 mov es, ax ;extra segment auf 0 mov ax, offset minus ;? mov es:irq6vek, ax ;? mov es:irq6vek+2, cs ;? pop es ;? pop ax ;? in al, picfrei ;Maskenregister einlesen and al, irq6fre ;solange irq6=hi out picfrei, al ;bestätigen push es push ax mov ax, 0 mov es, ax ;extra segment auf 0 mov ax, offset plus ; mov es:irq7vek, ax ; mov es:irq7vek+2, cs ; pop es ; pop ax ; in al, picfrei ;Maskenregister einlesen and al, irq7fre ;solange irq7=hi out picfrei, al ;bestätigen sti ;? schleife: in al, cport ;? test al, 01h ;? jnz schleife ;? ende: mov ah, 04ch ;? int 21h ;? minus PROC push ax in al, aport ;aport lesen sub al, 1 ;berechnen das ;dezimal out aport, al ;und neu schreiben mov al, irq6bes ;bestätigungswert für irq6 out picbest, al ;bestätigen pop ax ;? iret ;interrupt routine beenden minus ENDP plus PROC push ax in al, aport ;aport lesen add al, 1 ;berechnen daa ;dezimal out aport, al ;neu schreiben mov al, irq7bes ;bestätigungswert für irq7 out picbest, al ;bestätigen pop ax ;? iret ;interrupt routine beenden plus ENDP prog ends end start