Created
February 15, 2021 18:56
-
-
Save dutchand/d115cdbf821af2702d7f9cb3f42c5c2c to your computer and use it in GitHub Desktop.
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' | |
CARTEL_TRANSMISION DB ' Transmitiendo $' | |
CARTEL_RECEPCION DB ' Recibiendo $' | |
CARTEL_T DB 13,10,' Transmision [ t ] $' | |
CARTEL_R DB 13,10,' Recepcion [ r ] ',0DH,0AH,'$' | |
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_TEXTO DB 60 DUP (00H) | |
SOH DB 01H | |
STX DB 02H | |
CCB DB 00H | |
ETX DB 03H | |
ETB DB 17H | |
NAK DB 15H | |
ACK DB 06H | |
ENQ DB 05H | |
EOT DB 04H | |
CONTEO DB 00H | |
PRESENTACION DB 13,10,' PROYECTO DE LENGUAJE ENSAMBLADOR',0DH,0AH,'$' | |
MENU DB 13,10,' Menu ',0DH,0AH,'$' | |
ENCENDER_VENTILADOR DB 13,10,' Oprimir [ e ] para mandar a encender el ventilador $' | |
APAGAR_VENTILADOR DB 13,10,' Oprimir [ a ] para mandar a apagar el ventilador $' | |
ELECCION DB 13,10,' Eleccion: $' | |
BANDERA DB 00 | |
TRAMA_DATO DB 55H,55H,16H,16H,01H ;,01H,02H,00H,00H,03H,00H,0FFH | |
DATA ENDS | |
CODE SEGMENT PARA PUBLIC 'CODE' | |
PRINCIPAL PROC FAR | |
ASSUME CS : CODE | |
MOV AX, DATA | |
MOV DS, AX | |
MOV ES, AX | |
ASSUME DS: DATA | |
CALL PROGRAMACION_UART ; RUTINA DE INICIALIZACION DEL UART | |
MOV DX, OFFSET PRESENTACION | |
CALL MOSTRAR_CARTEL | |
MOV DX, OFFSET MENU | |
CALL MOSTRAR_CARTEL | |
MOV DX, OFFSET CARTEL_T | |
CALL MOSTRAR_CARTEL | |
MOV DX, OFFSET CARTEL_R | |
CALL MOSTRAR_CARTEL | |
ATRAS:CALL ATENCION_TECLADO1 | |
CMP AL,'T' | |
JZ TRANSMITIR | |
CMP AL, 't' | |
JZ TRANSMITIR | |
CMP AL,'R' | |
JZ RECIBIR | |
CMP AL,'r' | |
JZ RECIBIR | |
JMP ATRAS | |
TRANSMITIR: | |
PUSH AX | |
MOV DX, OFFSET ELECCION | |
CALL MOSTRAR_CARTEL | |
POP AX | |
CALL MOSTRAR_CARACTER | |
;CALL ENVIAR_TRAMA | |
; APARTIR DE AQUI COMENZARA LA COMUNICACION CON EL OTRO TERMINAL CODIGO | |
; COMIENZO DE LA COMUNICACION CON EL OTRO TERMINAL | |
; AQUI TERMINA EL CODIGO PARA LA COMUNICACION CON EL OTRO TERMINAL | |
MOV DX, OFFSET ENCENDER_VENTILADOR | |
CALL MOSTRAR_CARTEL | |
MOV DX, OFFSET APAGAR_VENTILADOR | |
CALL MOSTRAR_CARTEL | |
MOV DX, OFFSET ELECCION | |
CALL MOSTRAR_CARTEL | |
CALL ATENCION_TECLADO | |
RECIBIR: | |
MOV AH,4CH | |
INT 21H | |
PRINCIPAL ENDP | |
PROGRAMACION_UART PROC NEAR ; PROCEDIMIENTO PARA INICIALIZAR EL UART | |
MOV DX, 03FBH ; RAZON EN BAUDIOS DESCARADA | |
MOV AL, 80H | |
OUT DX, AL | |
MOV DX, 03F8H ; BYTE ms | |
MOV AL, 0CH | |
OUT DX, AL | |
MOV DX, 03F9H ; BYTE MS | |
MOV AL, 00H | |
OUT DX, AL | |
MOV DX, 03FBH ; CARACTERISTICAS DEL CARACTER | |
MOV AL, 1BH | |
OUT DX, AL | |
MOV DX, 03FCH ; AUTODIASNOGTICO | |
MOV AL, 10H | |
OUT DX, AL | |
RET | |
PROGRAMACION_UART ENDP | |
ENVIAR_TRAMA PROC NEAR ; PROCEDIMIENTO PARA ENVIAR TRAMA | |
SALTAR: MOV AL, [SI] | |
CALL TRANSMISION | |
INC SI | |
CMP AL, 0FFH | |
JZ SALIR | |
JMP SALTAR | |
SALIR: | |
RET | |
ENVIAR_TRAMA ENDP ;FIN PROCEDIMIENTO PARA ENVIAR TRAMA | |
TRANSMISION PROC NEAR ; PROCEDIMIENTO PARA TRANSMITIR | |
PUSH AX | |
MOV DX, 03FDH | |
SALTO3: IN AL,DX | |
TEST AL, 20H | |
JZ SALTO3 | |
POP AX | |
MOV DX, 03F8H | |
OUT DX, AL | |
RET | |
TRANSMISION ENDP ; FIN PROCEDIMIENTO PARA TRANSMITIR | |
RECEPCION PROC NEAR ; PROCEDIMIENTO PARA RECEPCIONAR | |
MOV DX, 03FDH | |
N1: in AL,DX | |
TEST AL, 01H | |
JZ N1 | |
MOV DX, 03F8H | |
IN AL, DX | |
RET | |
RECEPCION ENDP ; FIN PROCEDIMIENTO PARA RECEPCIONAR | |
ARMAR_TRAMA PROC NEAR ; PROCEDIMIENTO PARA ARMAR TRAMA DE TEXTO | |
MOV DI, OFFSET TRAMA_DATO | |
ADD DI, 5 | |
MOV CX, 20 | |
MOV AL, CONTEO | |
MOV [DI], AL | |
INC DI | |
MOV AL, STX | |
MOV [DI], AL | |
INC DI | |
N6: MOV AL, [SI] | |
CMP AL, 0DH | |
JZ N8 | |
MOV [DI], AL | |
INC SI | |
INC DI | |
LOOP N6 | |
MOV AL, ETB | |
MOV [DI], AL | |
INC DI | |
JMP N7 | |
N8: INC CONTEO | |
MOV AL,ETX | |
MOV [DI], AL | |
INC DI | |
N7: MOV AL, CCB | |
MOV [DI], AL | |
INC DI | |
MOV AL, 0FFH | |
MOV [DI], AL | |
RET | |
ARMAR_TRAMA ENDP | |
SINCRONIZAR_COMUNICACION PROC NEAR | |
MOV SI, OFFSET TRAMA_ENQ | |
CALL ENVIAR_TRAMA | |
RET | |
SINCRONIZAR_COMUNICACION ENDP | |
MOSTRAR_CARTEL PROC NEAR ; RUTINA PARA MOSTRAR CARTELES | |
MOV AH, 09 | |
INT 21H | |
RET | |
MOSTRAR_CARTEL ENDP | |
ATENCION_TECLADO PROC NEAR ; | |
N5: MOV AH,0 | |
INT 16H | |
CMP AL, 'A' | |
JNZ N2 | |
MOV BANDERA, 0 | |
JMP SALTO1 | |
N2: CMP AL,'a' | |
JNZ N3 | |
MOV BANDERA, 0 | |
JMP SALTO1 | |
N3: CMP AL, 'E' | |
JNZ N4 | |
MOV BANDERA, 1 | |
JMP SALTO1 | |
N4: CMP AL, 'e' | |
JNZ N5 | |
MOV BANDERA, 1 | |
JMP SALTO1 | |
SALTO1: MOV AH,14 ; PARA MOSTRAR UN CARACTER | |
MOV BX,0 | |
INT 10H | |
RET | |
ATENCION_TECLADO ENDP | |
ATENCION_TECLADO1 PROC NEAR | |
MOV AH,0 | |
INT 16H | |
RET | |
ATENCION_TECLADO1 ENDP | |
MOSTRAR_CARACTER PROC NEAR | |
MOV AH,14 ; PARA MOSTRAR UN CARACTER | |
MOV BX,0 | |
INT 10H | |
RET | |
MOSTRAR_CARACTER ENDP | |
ESPACIO_ENTRE_CARTELES PROC NEAR | |
MOV AH,06 | |
MOV DL,0DH | |
INT 21H | |
MOV AH,06 | |
MOV DL,0DH | |
INT 21H | |
RET | |
ESPACIO_ENTRE_CARTELES ENDP | |
CODE ENDS | |
END PRINCIPAL |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment