LPT1D EQU 3BCH LPT1S EQU LPT1D+1 .MODEL SMALL .STACK 100H .CODE ;Hoofdprogramma TERUG: CALL LPTIN ;Lees ingangen van LPT1 in AL. XOR AL,0FH ;Inverteer b3 t/m b0 van AL. CALL LPTOUT ;Schrijf deze waarde naar uitgangen LPT1. CMP AL,0 JNE TERUG ;Spring naar TERUG als AL ongelijk aan 0 is. MOV AL,0FFH CALL LPTOUT ;Schakel alle uitgangen van LPT1 hoog. MOV AH,4CH INT 21H ;Sluit het programma af en keer terug naar OS. ;Subroutine LPTIN ;Register AL bevat na afloop de waarde op I3 t/m I0 van LPT1. LPTIN: MOV DX,LPT1S IN AL,DX ;Lees de inhoud van I/O-adres LPT1S in register AL. AND AL,78H ;Reset niet gebruikte bits. MOV CL,3 SHR AL,CL ;Schuif 3 posities naar rechts. RET ;Subroutine LPTOUT ;Schrijf de inhoud van register AL naar U7 t/m U0 van LPT1. LPTOUT: MOV DX,LPT1D OUT DX,AL ;Schrijf naar I/O-adres LPT1D. RET END