.MODEL SMALL
.STACK 64h ; reserva 100 bytes en la pila
.DATA ; Segmento de datos (no hay datos)
.CODE
MAIN PROC FAR
MOV AX, @Data ; Inicializa segmento de datos
MOV DS, AX ; Para que apunte a mi segmento "Data"
;comienzo bucle
l1: mov dx,379h
in al,dx
and al,10h ;el bit normalmente en 1
xor al,10h ;el pulsador lo volveria 0
cmp al,10h
je l2
jmp sube
l2: mov dx,379h
in al,dx
and al,20h
xor al,20h
cmp ah,20h
je l1
jmp baja
mov bl,0h
sube: inc bl
mov dx,378h
mov al,bl ;;
out dx,al
cmp bx,18h
je fin ;si = a 18h finalizar
;
jmp l1
baja: sub bl,1h ;;
mov dx,378h
mov al,bl ;;
out dx,al
jmp l1
fin:
MOV AH,4CH
INT 21H
MAIN ENDP
;=====================================================================
;*************************Generacion del Retardo**********************
;=====================================================================
DELAY PROC NEAR ; Retardo de 300msg
PUSH CX
MOV CX,100
P1: PUSH CX
MOV CX,0FFFFH
P2: LOOP P2
POP CX
LOOP P1
POP CX
RET
;
DELAY ENDP
;---------------------------------------------------------------------
END MAIN