Skip to content

Instantly share code, notes, and snippets.

@dutchand
Created February 15, 2021 18:56
Show Gist options
  • Save dutchand/d115cdbf821af2702d7f9cb3f42c5c2c to your computer and use it in GitHub Desktop.
Save dutchand/d115cdbf821af2702d7f9cb3f42c5c2c to your computer and use it in GitHub Desktop.
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