49 lines
1.0 KiB
NASM
49 lines
1.0 KiB
NASM
; This module defines subroutines to input and output bytes from
|
||
; an auxiliary port.
|
||
;
|
||
; name inp -- input byte from port
|
||
;
|
||
; synopsis c = inp(port);
|
||
; int c; returned byte
|
||
; int port; port address
|
||
;
|
||
; description This function inputs a byte from the specified port
|
||
; address and returns it as the function value.
|
||
;
|
||
PGROUP GROUP PROG
|
||
PROG SEGMENT BYTE PUBLIC 'PROG'
|
||
PUBLIC INP,OUTP
|
||
ASSUME CS:PGROUP
|
||
INP PROC NEAR
|
||
PUSH BP ;SAVE BP
|
||
MOV BP,SP
|
||
MOV DX,[BP+4] ;GET PORT ADDRESS
|
||
IN AL,DX ;GET INPUT BYTE
|
||
XOR AH,AH ;CLEAR HIGH BYTE
|
||
POP BP
|
||
RET
|
||
INP ENDP
|
||
;
|
||
; name outp -- output byte to port
|
||
;
|
||
; synopsis outp(port,c);
|
||
; int port; port address
|
||
; int c; byte to send
|
||
;
|
||
; description This function sends the specified character to
|
||
; the specified port.
|
||
;
|
||
OUTP PROC NEAR
|
||
PUSH BP ;SAVE BP
|
||
MOV BP,SP
|
||
MOV DX,[BP+4] ;GET PORT ADDRESS
|
||
MOV AX,[BP+6] ;GET OUTPUT BYTE
|
||
OUT DX,AL
|
||
POP BP
|
||
RET
|
||
OUTP ENDP
|
||
PROG ENDS
|
||
END
|
||
,SP
|
||
MOV DX,[BP+4] ;GET PORT ADDRESS
|
||
MOV AX,[BP+6] |