Created
February 15, 2021 18:49
-
-
Save dutchand/8c81998b7aeb58ba33b5ef6f42be1923 to your computer and use it in GitHub Desktop.
CONTROL REMOTO DE UNA RESISTENCIA ELECTRICA
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
STACK SEGMENT PARA STACK 'STACK' | |
DB 256 DUP(00H) | |
STACK ENDS | |
;--------------------------------------------------------------------------------------------------------------------------------------- | |
DATA SEGMENT PARA PUBLIC 'DATA' | |
TRAMA_ENQ DB 55H,55H,16H,16H,05H,0FFH | |
TRAMA_ACK DB 55H,55H,16H,16H,06H,0FFH | |
TRAMA_NAK DB 55H,55H,16H,16H,15H,0FFH | |
TRAMA_EOT DB 55H,55H,16H,16H,04H,0FFH | |
TRAMA_RECIBIDA DB 6 DUP(00H) | |
TRAMA_TEXTO DB 12 DUP(00H) | |
BLOQUE_TEXTO DB 2 DUP(00H) | |
TAMAÑO_BLOQUE DB 2 | |
BANDERA DB 17H | |
TEXTO1 DB 'CONTROL REMOTO DE UNA RESISTENCIA ELECTRICA', '$' | |
TEXTO2 DB 'TECLEE 1 PARA TRANSMITIR, 2 PARA RECIBIR O ENTER PARA TERMINAR', '$' | |
TEXTO3 DB 'TRANSMICION (PC CONTROL DEL PROCESO) ', '$' | |
TEXTO4 DB 'RECEPCION (PC A CONTROL REMOTO) ', '$' | |
TEXTO5 DB 'COMUNICACION TERMINADA', '$' | |
TEXTO6 DB 'PROCESO ENCENDIDO', '$' | |
TEXTO7 DB 'PROCESO APAGADO', '$' | |
TEXTO8 DB 'TECLEE "e" PARA ENCENDER Y "a" PARA APAGAR, SEGUIDO DE "x" PARA CONFIRMAR', '$' | |
TEXTO9 DB ' ', '$' | |
DATA ENDS | |
;--------------------------------------------------------------------------------------------------------------------------------------- | |
CODE SEGMENT PARA PUBLIC 'CODE' | |
PRINCIPAL PROC FAR | |
ASSUME CS: CODE | |
MOV AX, DATA | |
MOV DS, AX | |
ASSUME DS: DATA | |
;INIC UART | |
;RAZON EN BAUDIO (9600 BAUDIOS) | |
MOV DX,03FBH | |
MOV AL,80H | |
OUT DX,AL | |
;BIT mS | |
MOV DX,03F8H | |
MOV AL,0CH | |
OUT DX,AL | |
;BIT MS | |
MOV DX,03F9H | |
MOV AL,00H | |
OUT DX,AL | |
;CARACTERISTICAS DEL CARACTER A TRANSMITIR | |
MOV DX,03FBH | |
MOV AL,1BH | |
OUT DX,AL | |
;CREAR VISTA PRINCIPAL | |
;MODO DE VIDEO | |
MOV AH, 00H | |
MOV AL, 18 | |
INT 10H | |
MOV SI, OFFSET TEXTO2 | |
CALL CREAR_VISTA | |
MOV DX, 0503H | |
CALL MOVER_CURSOR | |
MOV SI, OFFSET TEXTO9 | |
CALL MOSTRAR_TEXTO | |
;TRANSMITIR O RECIBIR? | |
INICIO: MOV AH, 00H | |
INT 16H | |
CMP AL, '1' | |
JZ TR | |
CMP AL, '2' | |
JZ RE | |
CMP AL, 0DH | |
JZ FIN | |
JMP INICIO | |
;TRANSMITIR DATO | |
TR: MOV SI, OFFSET TEXTO3 | |
CALL CREAR_VISTA | |
CALL TRANSMICION | |
JMP FIN | |
;RECIBIR DATO | |
RE: MOV SI, OFFSET TEXTO4 | |
CALL CREAR_VISTA | |
CALL RECEPCION | |
;TERMINAR COMUNICACIÓN | |
FIN: CALL LIMPIAR_PANTALLA | |
MOV DH, 0EH | |
MOV DL, 30 | |
CALL MOVER_CURSOR | |
MOV SI, OFFSET TEXTO5 | |
CALL MOSTRAR_TEXTO | |
;ESPERAR INTERRUPCION DE TECLADO | |
MOV AH, 00H | |
INT 16H | |
;REGRESA EL CONTROL AL DOS | |
MOV AH, 4CH | |
MOV AL, 00H | |
INT 21H | |
PRINCIPAL ENDP | |
;--------------------------------------------------------------------------------------------------------------------------------------- | |
TRANSMICION PROC NEAR | |
PUSH AX | |
PUSH BX | |
PUSH DI | |
;ENVIAR TRAMA_ENQ | |
N1: MOV BX, OFFSET TRAMA_ENQ | |
CALL ENVIA_TRAMA | |
;VERIFICAR SI SE RECIBIO LA TRAMA_ENQ | |
;RECIBIR TRAMA_ACK | |
MOV BX, OFFSET TRAMA_RECIBIDA | |
CALL RECIBE_TRAMA | |
MOV BX, OFFSET TRAMA_RECIBIDA | |
MOV AL, [BX+4] | |
CMP AL, 06H ;ACK | |
JNZ N1 | |
;CREAR BLOQUE DE TEXTO CON CARACTER LEIDO DEL TECLADO | |
N2: MOV DX, 0603H | |
CALL MOVER_CURSOR | |
MOV BX, OFFSET BLOQUE_TEXTO | |
CALL CREAR_BLOQUE_TEXTO | |
;CREAR TRAMA_TEXTO | |
MOV BX, OFFSET TRAMA_TEXTO | |
MOV DI, OFFSET BLOQUE_TEXTO | |
CALL CREAR_TRAMA_TEXTO | |
;ENVIAR TRAMA_TEXTO | |
N3: MOV BX, OFFSET TRAMA_TEXTO | |
CALL ENVIA_TRAMA | |
;VERIFICAR SI SE RECIBIO LA TRAMA_TEXTO | |
;RECIBIR TRAMA_ACK | |
MOV BX, OFFSET TRAMA_RECIBIDA | |
CALL RECIBE_TRAMA | |
MOV BX, OFFSET TRAMA_RECIBIDA | |
MOV AL, [BX+4] | |
CMP AL, 06H ;ACK | |
JNZ N3 | |
;MOSTRAR ORDEN DADA AL PROCESO | |
MOV SI, OFFSET BLOQUE_TEXTO | |
CALL BUSCAR_SECUENCIA_DE_CARACTERES | |
CMP AL, 01H | |
JZ MOSTRAR_ENCENDER | |
CMP AL, 00H | |
JZ MOSTRAR_APAGAR | |
JMP CONTINUAR1 | |
MOSTRAR_ENCENDER: MOV SI, OFFSET TEXTO6 | |
CALL CREAR_MENSAJE | |
JMP CONTINUAR1 | |
MOSTRAR_APAGAR: MOV SI, OFFSET TEXTO7 | |
CALL CREAR_MENSAJE | |
;COMPROBANDO SI ES LA ULTIMA TRAMA DE TEXTO | |
CONTINUAR1: CMP BANDERA, 03H ; ETX | |
JNZ N2 | |
;ENVIAR TRAMA EOT | |
MOV BX, OFFSET TRAMA_EOT | |
CALL ENVIA_TRAMA | |
POP DI | |
POP BX | |
POP AX | |
RET | |
TRANSMICION ENDP | |
;--------------------------------------------------------------------------------------------------------------------------------------- | |
RECEPCION PROC NEAR | |
PUSH AX | |
PUSH BX | |
PUSH CX | |
PUSH SI | |
;RECIBIR TRAMA_ENQ | |
Q1: MOV BX, OFFSET TRAMA_RECIBIDA | |
CALL RECIBE_TRAMA | |
MOV BX, OFFSET TRAMA_RECIBIDA | |
MOV AL, [BX+4] | |
CMP AL, 05H ;ENQ | |
JNZ Q1 | |
;ENVIAR TRAMA_ACK | |
MOV BX, OFFSET TRAMA_ACK | |
CALL ENVIA_TRAMA | |
;RECIBIR TRAMA_TEXTO | |
Q2: MOV BX, OFFSET TRAMA_TEXTO | |
CALL RECIBE_TRAMA | |
;COMPROBANDO ERRORES | |
MOV BX, OFFSET TRAMA_TEXTO | |
MOV AH, [BX+7+TAMAÑO_BLOQUE+1] ;CCB RECIBIDO | |
ADD BX, 07H | |
CALL CALCULAR_CCB | |
CMP AH, AL | |
JZ Q3 | |
;ENVIAR TRAMA_NAK | |
MOV BX, OFFSET TRAMA_NAK | |
CALL ENVIA_TRAMA | |
JMP Q2 | |
Q3: ;ENVIAR TRAMA_ACK | |
MOV BX, OFFSET TRAMA_ACK | |
CALL ENVIA_TRAMA | |
;MOSTRAR ORDEN DADA AL PROCESO | |
MOV SI, OFFSET BLOQUE_TEXTO | |
CALL BUSCAR_SECUENCIA_DE_CARACTERES | |
CMP AL, 01H | |
JZ ENCENDER | |
CMP AL, 00H | |
JZ APAGAR | |
JMP CONTINUAR | |
ENCENDER: CALL ENCENDER_PROCESO | |
MOV SI, OFFSET TEXTO6 | |
CALL CREAR_MENSAJE | |
JMP CONTINUAR | |
APAGAR: CALL APAGAR_PROCESO | |
MOV SI, OFFSET TEXTO7 | |
CALL CREAR_MENSAJE | |
;COMPROBANDO SI ES ULTIMA TRAMA | |
CONTINUAR: MOV BX, OFFSET TRAMA_TEXTO | |
MOV AH, [BX+7+TAMAÑO_BLOQUE] | |
CMP AH, 03H ;ETX | |
JNZ Q2 | |
POP SI | |
POP CX | |
POP BX | |
POP AX | |
RET | |
RECEPCION ENDP | |
;--------------------------------------------------------------------------------------------------------------------------------------- | |
RUTTX PROC NEAR | |
PUSH DX | |
PUSH AX | |
;PUEDO TRANSMITIR DATO? | |
MOV DX, 03FDH | |
R1: IN AL, DX | |
TEST AL, 20H | |
JZ R1 | |
POP AX | |
;ESCRIBIR REGISTRO TX | |
MOV DX, 03F8H | |
OUT DX, AL | |
POP DX | |
RET | |
RUTTX ENDP | |
;--------------------------------------------------------------------------------------------------------------------------------------- | |
RUTRX PROC NEAR | |
PUSH DX | |
;HAY DATO RECIBIDO? | |
MOV DX, 03FDH | |
R2: IN AL, DX | |
TEST AL, 01H | |
JZ R2 | |
;LEER REGISTRO RX | |
MOV DX, 03F8H | |
IN AL, DX | |
POP DX | |
RET | |
RUTRX ENDP | |
;--------------------------------------------------------------------------------------------------------------------------------------- | |
ENVIA_TRAMA PROC NEAR | |
push ax | |
A: MOV AL, [BX] | |
CALL RUTTX | |
MOV AL, [BX] | |
CMP AL, 0FFH | |
JZ B | |
INC BX | |
JMP A | |
B: pop ax | |
RET | |
ENVIA_TRAMA ENDP | |
;--------------------------------------------------------------------------------------------------------------------------------------- | |
RECIBE_TRAMA PROC NEAR | |
PUSH AX | |
PUSH CX | |
MOV CX, 05 | |
C: CALL RUTRX | |
MOV [BX], AL | |
INC BX | |
LOOP C | |
CMP AL, 01H ;SOH | |
JZ D | |
MOV AL, 0FFH | |
MOV [BX], AL | |
D: CALL RUTRX | |
MOV [BX], AL | |
INC BX | |
CMP AL, 0FFH | |
JNZ D | |
POP CX | |
POP AX | |
RET | |
RECIBE_TRAMA ENDP | |
;--------------------------------------------------------------------------------------------------------------------------------------- | |
CREAR_BLOQUE_TEXTO PROC NEAR | |
PUSH AX | |
PUSH CX | |
MOV CL, TAMAÑO_BLOQUE | |
MOV CH, 00H | |
T1: MOV AH, 00H | |
INT 16H | |
MOV [BX], AL | |
;IMPRIMIENDO EL TEXTO LEIDO | |
MOV AH, 0EH | |
INT 10H | |
CMP AL, 0DH | |
JZ T2 | |
INC BX | |
LOOP T1 | |
JMP FT | |
T2: MOV BANDERA, 03H | |
CMP CX, 02H | |
JNZ FT | |
INC BX | |
MOV AL, 00H | |
MOV [BX], AL | |
FT: POP CX | |
POP AX | |
RET | |
CREAR_BLOQUE_TEXTO ENDP | |
;--------------------------------------------------------------------------------------------------------------------------------------- | |
CALCULAR_CCB PROC NEAR | |
PUSH CX | |
MOV CL, TAMAÑO_BLOQUE | |
MOV CH, 00H | |
MOV AL, [BX] | |
DEC CX | |
C1: INC BX | |
XOR AL, [BX] | |
LOOP C1 | |
POP CX | |
RET | |
CALCULAR_CCB ENDP | |
;--------------------------------------------------------------------------------------------------------------------------------------- | |
CREAR_TRAMA_TEXTO PROC NEAR | |
PUSH AX | |
PUSH CX | |
;FIL | |
MOV AL, 55H | |
MOV[BX], AL | |
MOV[BX+1], AL | |
;SYNC | |
MOV AL, 16H | |
MOV[BX+2], AL | |
MOV[BX+3], AL | |
;SOH | |
MOV AL, 01H | |
MOV[BX+4], AL | |
;ENCABEZAMIENTO | |
MOV AL, TAMAÑO_BLOQUE | |
MOV[BX+5], AL | |
;STX | |
MOV AL, 02H | |
MOV[BX+6], AL | |
;TEXTO | |
MOV CL, TAMAÑO_BLOQUE | |
MOV CH, 00H | |
PUSH BX | |
ADD BX, 7 | |
E1: MOV AL, [DI] | |
MOV[BX], AL | |
INC DI | |
INC BX | |
LOOP E1 | |
POP BX | |
CMP BANDERA, 03H | |
JZ E2 | |
MOV AL, 17H | |
MOV[BX+7+TAMAÑO_BLOQUE], AL | |
JMP E3 | |
E2: MOV AL, 03H | |
MOV[BX+7+TAMAÑO_BLOQUE], AL | |
E3: ;CALCULAR CCB | |
PUSH BX | |
ADD BX, 7 | |
CALL CALCULAR_CCB | |
POP BX | |
MOV[BX+7+TAMAÑO_BLOQUE+1], AL | |
MOV AL, 0FFH | |
MOV[BX+7+TAMAÑO_BLOQUE+2], AL | |
POP CX | |
POP AX | |
RET | |
CREAR_TRAMA_TEXTO ENDP | |
;--------------------------------------------------------------------------------------------------------------------------------------- | |
MOSTRAR_TEXTO PROC NEAR | |
PUSH AX | |
PUSH BX | |
PUSH CX | |
MO: MOV AL, [SI] | |
CMP AL, '$' | |
JZ THEEND | |
MOV AH, 09H | |
MOV BH, 00H | |
MOV BL, 0FH | |
MOV CX, 1 | |
INT 10H | |
MOV AH, 03H | |
MOV BH, 00H | |
INT 10H | |
INC DL | |
CALL MOVER_CURSOR | |
INC SI | |
JMP MO | |
THEEND: POP CX | |
POP BX | |
POP AX | |
RET | |
MOSTRAR_TEXTO ENDP | |
;--------------------------------------------------------------------------------------------------------------------------------------- | |
MOVER_CURSOR PROC NEAR | |
PUSH AX | |
PUSH BX | |
MOV AH, 02H | |
MOV BH, 00H | |
INT 10H | |
POP BX | |
POP AX | |
RET | |
MOVER_CURSOR ENDP | |
;--------------------------------------------------------------------------------------------------------------------------------------- | |
CREAR_VISTA PROC NEAR | |
PUSH AX | |
PUSH BX | |
PUSH CX | |
PUSH DX | |
;DISEÑANDO VISTA | |
;IMPRIMIR CARTEL2 | |
MOV DX, 0403H | |
CALL MOVER_CURSOR | |
CALL MOSTRAR_TEXTO | |
;IMPRIMIR CARTEL1 | |
MOV DX, 0103H | |
CALL MOVER_CURSOR | |
MOV SI, OFFSET TEXTO1 | |
CALL MOSTRAR_TEXTO | |
;IMPRIMIR CARTEL3 | |
MOV DX, 0503H | |
CALL MOVER_CURSOR | |
MOV SI, OFFSET TEXTO8 | |
CALL MOSTRAR_TEXTO | |
;IMPRIMIR LINEA SUPERIOR1 | |
MOV DH, 00H | |
MOV DL, 00H | |
CALL MOVER_CURSOR | |
MOV AH, 09H | |
MOV AL, 0DFH | |
MOV BH, 00H | |
MOV BL, 0EH | |
MOV CX, 79 | |
INT 10H | |
;IMPRIMIR LINEA SUPERIOR2 | |
MOV DH, 02H | |
MOV DL, 00H | |
CALL MOVER_CURSOR | |
MOV AH, 09H | |
MOV AL, 0DCH | |
MOV BH, 00H | |
MOV BL, 0EH | |
MOV CX, 79 | |
INT 10H | |
;IMPRIMIR LINEA INFERIOR | |
MOV DH, 29 | |
MOV DL, 00H | |
CALL MOVER_CURSOR | |
MOV AH, 09H | |
MOV AL, 0DCH | |
MOV BH, 00H | |
MOV BL, 0EH | |
MOV CX, 79 | |
INT 10H | |
;IMPRIMIR LINEA IZQUIERDA | |
MOV DH, 0 | |
MOV DL, 0 | |
CALL MOVER_CURSOR | |
MOV CX, 30 | |
V3: MOV AH, 09H | |
MOV AL, 0DDH | |
MOV BH, 00H | |
MOV BL, 0EH | |
PUSH CX | |
MOV CX, 1 | |
INT 10H | |
MOV AH, 03H | |
MOV BH, 00H | |
INT 10H | |
INC DH | |
CALL MOVER_CURSOR | |
POP CX | |
LOOP V3 | |
;IMPRIMIR LINEA DERECHA | |
MOV DH, 0 | |
MOV DL, 79 | |
CALL MOVER_CURSOR | |
MOV CX, 30 | |
V4: MOV AH, 09H | |
MOV AL, 0DEH | |
MOV BH, 00H | |
MOV BL, 0EH | |
PUSH CX | |
MOV CX, 1 | |
INT 10H | |
MOV AH, 03H | |
MOV BH, 00H | |
INT 10H | |
INC DH | |
CALL MOVER_CURSOR | |
POP CX | |
LOOP V4 | |
POP DX | |
POP CX | |
POP BX | |
POP AX | |
RET | |
CREAR_VISTA ENDP | |
;--------------------------------------------------------------------------------------------------------------------------------------- | |
CREAR_MENSAJE PROC NEAR | |
PUSH AX | |
PUSH BX | |
PUSH CX | |
PUSH DX | |
;DISEÑANDO VISTA | |
;IMPRIMIR CARTEL1 | |
MOV DH, 14 | |
MOV DL, 32 | |
CALL MOVER_CURSOR | |
CALL MOSTRAR_TEXTO | |
;IMPRIMIR LINEA SUPERIOR | |
MOV DH, 10 | |
MOV DL, 20 | |
CALL MOVER_CURSOR | |
MOV AH, 09H | |
MOV AL, 0DFH | |
MOV BH, 00H | |
MOV BL, 0CH | |
MOV CX, 40 | |
INT 10H | |
;IMPRIMIR LINEA INFERIOR | |
MOV DH, 17 | |
MOV DL, 20 | |
CALL MOVER_CURSOR | |
MOV AH, 09H | |
MOV AL, 0DCH | |
MOV BH, 00H | |
MOV BL, 0CH | |
MOV CX, 40 | |
INT 10H | |
;IMPRIMIR LINEA IZQUIERDA | |
MOV DH, 10 | |
MOV DL, 20 | |
CALL MOVER_CURSOR | |
MOV CX, 8 | |
VM3: MOV AH, 09H | |
MOV AL, 0DDH | |
MOV BH, 00H | |
MOV BL, 0CH | |
PUSH CX | |
MOV CX, 1 | |
INT 10H | |
MOV AH, 03H | |
MOV BH, 00H | |
INT 10H | |
INC DH | |
CALL MOVER_CURSOR | |
POP CX | |
LOOP VM3 | |
;IMPRIMIR LINEA DERECHA | |
MOV DH, 10 | |
MOV DL, 60 | |
CALL MOVER_CURSOR | |
MOV CX, 8 | |
VM4: MOV AH, 09H | |
MOV AL, 0DEh | |
MOV BH, 00H | |
MOV BL, 0CH | |
PUSH CX | |
MOV CX, 1 | |
INT 10H | |
MOV AH, 03H | |
MOV BH, 00H | |
INT 10H | |
INC DH | |
CALL MOVER_CURSOR | |
POP CX | |
LOOP VM4 | |
;LAZO DE TIEMPO | |
MOV AX, 60000 | |
LT2: MOV CX, 60000 | |
LT1: | |
LOOP LT1 | |
DEC AX | |
CMP AX, 0 | |
JNZ LT2 | |
POP DX | |
POP CX | |
POP BX | |
POP AX | |
CALL LIMPIAR_MENSAJE | |
RET | |
CREAR_MENSAJE ENDP | |
;--------------------------------------------------------------------------------------------------------------------------------------- | |
LIMPIAR_PANTALLA PROC NEAR | |
PUSH AX | |
PUSH CX | |
PUSH DX | |
MOV DX, 00H | |
CALL MOVER_CURSOR | |
MOV AH, 0EH | |
MOV AL, 20H | |
MOV CX, 2400 | |
LI: INT 10H | |
LOOP LI | |
MOV DX, 00H | |
CALL MOVER_CURSOR | |
POP DX | |
POP CX | |
POP AX | |
RET | |
LIMPIAR_PANTALLA ENDP | |
;--------------------------------------------------------------------------------------------------------------------------------------- | |
LIMPIAR_MENSAJE PROC NEAR | |
PUSH AX | |
PUSH BX | |
PUSH CX | |
PUSH DX | |
;IMPRIMIR CARTEL1 | |
MOV DH, 14 | |
MOV DL, 32 | |
CALL MOVER_CURSOR | |
MOV AH, 09H | |
MOV AL, 20H | |
MOV BH, 00H | |
MOV BL, 0CH | |
MOV CX, 40 | |
INT 10H | |
;IMPRIMIR LINEA SUPERIOR | |
MOV DH, 10 | |
MOV DL, 20 | |
CALL MOVER_CURSOR | |
MOV AH, 09H | |
MOV AL, 20H | |
MOV BH, 00H | |
MOV BL, 0CH | |
MOV CX, 40 | |
INT 10H | |
;IMPRIMIR LINEA INFERIOR | |
MOV DH, 17 | |
MOV DL, 20 | |
CALL MOVER_CURSOR | |
MOV AH, 09H | |
MOV AL, 20H | |
MOV BH, 00H | |
MOV BL, 0CH | |
MOV CX, 40 | |
INT 10H | |
;IMPRIMIR LINEA IZQUIERDA | |
MOV DH, 10 | |
MOV DL, 20 | |
CALL MOVER_CURSOR | |
MOV CX, 8 | |
LM3: MOV AH, 09H | |
MOV AL, 20H | |
MOV BH, 00H | |
MOV BL, 0CH | |
PUSH CX | |
MOV CX, 1 | |
INT 10H | |
MOV AH, 03H | |
MOV BH, 00H | |
INT 10H | |
INC DH | |
CALL MOVER_CURSOR | |
POP CX | |
LOOP LM3 | |
;IMPRIMIR LINEA DERECHA | |
MOV DH, 10 | |
MOV DL, 60 | |
CALL MOVER_CURSOR | |
MOV CX, 8 | |
LM4: MOV AH, 09H | |
MOV AL, 20h | |
MOV BH, 00H | |
MOV BL, 0CH | |
PUSH CX | |
MOV CX, 1 | |
INT 10H | |
MOV AH, 03H | |
MOV BH, 00H | |
INT 10H | |
INC DH | |
CALL MOVER_CURSOR | |
POP CX | |
LOOP LM4 | |
POP DX | |
POP CX | |
POP BX | |
POP AX | |
RET | |
LIMPIAR_MENSAJE ENDP | |
;--------------------------------------------------------------------------------------------------------------------------------------- | |
ENCENDER_PROCESO PROC NEAR | |
PUSH DX | |
PUSH AX | |
;PALABRA DE CONTROL AL TEMPORIZADOR 8255 | |
MOV DX, 0303H | |
MOV AL, 80H | |
OUT DX, AL | |
;HABILITAR (PC0) | |
MOV DX, 0303H | |
MOV AL, 01H | |
OUT DX, AL | |
;ACTIVAR RESISTENCIA (PC1) | |
MOV DX, 0303H | |
MOV AL, 03H | |
OUT DX, AL | |
;PONER SIEMPRE EN CERO (PC3) | |
MOV DX, 0303H | |
MOV AL, 06H | |
OUT DX, AL | |
;GENERAR UN PULSO PARA ESTABLECER LOS VALORES (PC2) | |
MOV DX, 0303H | |
MOV AL, 05H | |
OUT DX, AL | |
; | |
MOV DX, 0303H | |
MOV AL, 04H | |
OUT DX, AL | |
PUSH AX | |
PUSH DX | |
RET | |
ENCENDER_PROCESO ENDP | |
;--------------------------------------------------------------------------------------------------------------------------------------- | |
APAGAR_PROCESO PROC NEAR | |
PUSH DX | |
PUSH AX | |
;PALABRA DE CONTROL AL TEMPORIZADOR 8255 | |
MOV DX, 0303H | |
MOV AL, 80H | |
OUT DX, AL | |
;DESHABILITAR (PC0) | |
MOV DX, 0303H | |
MOV AL, 00H | |
OUT DX, AL | |
;ACTIVAR RESISTENCIA (PC1) | |
MOV DX, 0303H | |
MOV AL, 03H | |
OUT DX, AL | |
;PONER SIEMPRE EN CERO (PC3) | |
MOV DX, 0303H | |
MOV AL, 06H | |
OUT DX, AL | |
;GENERAR UN PULSO PARA ESTABLECER LOS VALORES (PC2) | |
MOV DX, 0303H | |
MOV AL, 05H | |
OUT DX, AL | |
; | |
MOV DX, 0303H | |
MOV AL, 04H | |
OUT DX, AL | |
PUSH AX | |
PUSH DX | |
RET | |
APAGAR_PROCESO ENDP | |
;--------------------------------------------------------------------------------------------------------------------------------------- | |
BUSCAR_SECUENCIA_DE_CARACTERES PROC NEAR | |
INC SI | |
MOV AL, [SI] | |
CMP AL, 'x' | |
JNZ BSCF | |
DEC SI | |
MOV AL, [SI] | |
CMP AL, 'a' | |
JZ BSCA | |
MOV AL, [SI] | |
CMP AL, 'e' | |
JZ BSCE | |
JMP BSCF | |
BSCA: MOV AL, 00H | |
RET | |
BSCE: MOV AL, 01H | |
RET | |
BSCF: MOV AL, 03H | |
RET | |
BUSCAR_SECUENCIA_DE_CARACTERES ENDP | |
;--------------------------------------------------------------------------------------------------------------------------------------- | |
CODE ENDS | |
END PRINCIPAL |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment