Created
February 15, 2021 18:54
-
-
Save dutchand/a4bc3290206f0614f72d4d047f9fe892 to your computer and use it in GitHub Desktop.
BRUCE LEE/PROFESOR: ING.PEDRO MILA
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
;Encendido y apagado del Cautin | |
;segmento de pila | |
stack segment para stack 'stack' | |
db 256 dup(00H) | |
stack ends | |
;segmento de datos | |
data segment para public 'data' | |
portada db ' ***< PROYECRO DE CURSO DE MAQUINA COMPUTADORAS II >***','$' | |
profesor db 'PROFESOR: ING.PEDRO MILA','$' | |
autor db 'AUTORES: ','$' | |
intg1 db ' BRUCE LEE REYES CAPIRO','$' | |
equipo db 'EQUIPO #3.','$' | |
comienzo db 'INICIADA LA COMUNICACION','$' | |
cadena db 'COMUNICACION TERMINADA','$' | |
cartel db 'SERVICIO NO RECIBIDO DE MAQUINA I','$' | |
linea db 13,10,'$' | |
esperatx db 'ESPERANDO TRANSMICION DE MAQUINA I','$' | |
cartel1 db 'PARA COMEMZAR PULSE - C(c) Y S(s) PARA SALIR: ','$' | |
comfirme db 'desea salir sin apagar el cautin si(s)-no(n)','$' | |
aux db 0 | |
terminar db 'Oprima una tecla para terminar...','$' | |
Tramas db 26 dup(?) | |
;Tram_Comamdo db 10(00) | |
Trama_ACK db 55H,55H,16H,16H,06H,0FFH,0DH | |
Trama_NAK db 55H,55H,16H,16H,15H,0FFH,0DH | |
SOH db 01H | |
STX db 02H | |
ETB db 17H | |
ETX db 03H | |
ENQ db 05H | |
EOT db 04H | |
CCB db 0 | |
caracter db 0 | |
pos1 db 0 | |
pos2 db 0 | |
band db 0 | |
bandd db 0 | |
comparar db 0 | |
;Texto db 20 (?) | |
encabezamiento db 00h | |
data ends | |
;segmento de macros | |
;Impresión simple de cadenas | |
Pantalla MACRO texto | |
push AX | |
push DX | |
mov AH,9 ;Solicitar servicio 9 | |
lea DX,texto ;DX apunta al texto | |
int 21h ;imprimir hasta $ | |
pop DX | |
pop AX | |
ENDM | |
;segmento de codigo | |
code segment para public 'code' | |
principal proc far | |
assume cs: code | |
mov ax, data | |
mov ds, ax | |
mov es,ax | |
assume ds: data | |
;INIC UART | |
;VELOCIDAD 9600 BAUDIOS com1 | |
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 | |
;CARACT DE CARACTER | |
MOV DX,03FBH | |
MOV AL,1bH | |
OUT DX,AL | |
;presentacion | |
call Poner_Cursor_Inic | |
;call LIMPIAR_PANTALLA | |
Pantalla linea | |
Pantalla linea | |
Pantalla portada | |
Pantalla linea | |
Pantalla linea | |
Pantalla profesor | |
Pantalla linea | |
Pantalla autor | |
Pantalla intg1 | |
Pantalla linea | |
Pantalla equipo | |
Pantalla linea | |
Pantalla linea | |
;espera tecla | |
Pantalla cartel1 | |
a1:call Espera_Tecla | |
cmp al,'c' | |
jz as | |
cmp al,'s' | |
jz au | |
cmp al,'C' | |
jz as | |
cmp al,'S' | |
jnz a1 | |
au: jmp fin | |
as: ;ESPERENDO SI ENTRA DATO | |
mov band,0 | |
mov pos1,0 | |
mov pos2,0 | |
call LIMPIAR_PANTALLA | |
Pantalla linea | |
Pantalla esperatx | |
a2: call Llenar_TramaD | |
;tipo de trama | |
call Tipo_Trama | |
; si es un ENQ responde sino no | |
mov al,ENQ | |
cmp comparar,al | |
jnz a2 | |
;mandar ACK | |
mov si,offset Trama_ACK | |
call Enviar_Trama | |
;comenzar | |
repp:call LIMPIAR_PANTALLA | |
Pantalla comienzo | |
call Llenar_TramaD | |
;tipo de trama | |
call Tipo_Trama | |
mov al,SOH | |
cmp comparar,al | |
jnz command | |
;es un texto | |
mov cx,3 | |
cil:inc si | |
loop cil | |
mov al,[si] | |
cmp al,'e' | |
jz enc | |
cmp al,'E' | |
jnz apag | |
enc:;encender cautin | |
call Inici_Port_Paralelo | |
call encender | |
;call enviar_dato | |
call Dar_Pulso | |
jmp continue | |
apag:;apagar cautin | |
call Inici_Port_Paralelo | |
call apagar | |
;call enviar_dato | |
call Dar_Pulso | |
;jmp continue | |
continue:;volver o salir | |
;inc si | |
;inc si | |
add si,2 | |
mov al,[si] | |
mov aux,al | |
mov al,ETX | |
cmp aux,al | |
jz fin | |
jmp repp | |
command:;es un comando | |
mov al,EOT | |
cmp comparar,al | |
jnz repp | |
;jmp fin | |
fin: | |
mov pos1,15 | |
mov pos2,23 | |
call Poner_Cursor_Inic | |
Pantalla terminar | |
call Espera_Tecla | |
call Exit | |
principal ENDP | |
;procedimientos | |
Exit proc NEAR | |
mov AX,4C00h | |
int 21h | |
ret | |
Exit ENDP | |
;poner pantalla completa | |
Poner_Modo_Texto PROC NEAR | |
mov ah,0 | |
mov al,18 | |
int 10h | |
ret | |
Poner_Modo_Texto ENDP | |
Poner_Cursor_Inic PROC NEAR | |
PUSH AX | |
PUSH BX | |
;call Poner_Modo_Texto | |
MOV AH, 02H | |
MOV BH, 0 | |
mov dh,pos1 | |
mov dl,pos2 | |
INT 10H | |
mov ah,0EH ;modo teletipo | |
mov bh,0 | |
POP BX | |
POP AX | |
ret | |
Poner_Cursor_Inic ENDP | |
; | |
LIMPIAR_PANTALLA PROC NEAR | |
PUSH AX | |
PUSH CX | |
PUSH DX | |
MOV DX, 00H | |
CALL Poner_Cursor_Inic | |
MOV AH, 0EH | |
MOV AL, 20H | |
MOV CX, 2400 | |
LI: INT 10H | |
LOOP LI | |
MOV DX, 00H | |
CALL Poner_Cursor_Inic | |
POP DX | |
POP CX | |
POP AX | |
RET | |
LIMPIAR_PANTALLA ENDP | |
;Impresión simple de cadenas | |
;Pantalla PROC NEAR | |
;push AX | |
;push DX | |
;mov AH,9 ;Solicitar servicio 9 | |
;mov DX,offset si ;DX apunta al texto | |
;int 21h ;imprimir hasta $ | |
;pop DX | |
;pop AX | |
;Pantalla ENDP | |
;Espera por una tecla | |
Espera_Tecla PROC NEAR | |
mov AH,07H ;solicitar servicio 7. Entrada | |
int 21h ;de un caracter sin mostrarle | |
ret | |
;mov caracter,al | |
Espera_Tecla ENDP ;el ASCII queda en AL | |
;muestra caracter por pantalla | |
Muestra_Caracter PROC NEAR | |
PUSH AX | |
PUSH DX | |
MOV AH,2 | |
MOV DL, caracter | |
INT 21H | |
POP DX | |
POP AX | |
ret | |
Muestra_Caracter ENDP | |
;rutina tx | |
RutTx PROC NEAR | |
PUSH DX | |
PUSH AX | |
;PUEDO TRANSMITIR DATO? | |
MOV DX, 03FDH | |
T1: IN AL, DX | |
TEST AL, 20H | |
JZ T1 | |
POP AX | |
;ESCRIBIR REGISTRO TX | |
MOV DX, 03F8H | |
OUT DX, AL | |
POP DX | |
ret | |
RutTx ENDP | |
;RUTINA RX | |
RutRx PROC NEAR | |
;HAY DATO RECIBIDO? | |
PUSH DX | |
push ax | |
mov dx, 03fDh | |
n1:in al, dx | |
test al, 01h | |
jz n1 | |
;LEER REGISTRO RX | |
mov dx, 03f8h | |
in al, dx | |
;HAY DATO RECIBIDO? | |
;MOV DX, 03FDH | |
;R1: IN AL, DX | |
;TEST AL, 01H | |
;JZ R1 | |
;mov band,1 | |
;jmp R2 | |
;LEER REGISTRO RX | |
;MOV DX, 03F8H | |
;IN AL, DX | |
;POP DX;R2: | |
ret | |
RutRx ENDP | |
;enviar cualquier trama | |
Enviar_Trama PROC NEAR | |
E1: mov al,[si] | |
call ruttx | |
cmp al,0ffh | |
jz salir3 | |
inc si | |
jmp E1 | |
salir3: ret | |
Enviar_Trama ENDP | |
;llenar tramas en general | |
Llenar_TramaD PROC NEAR | |
ll:call RutRx | |
;cmp band,1 | |
;jz l1 | |
mov[di],al | |
inc di | |
cmp al,0FFh | |
jne ll | |
mov ah,04h | |
int 21 | |
;mov al,0DH | |
l1: ret | |
Llenar_TramaD ENDP | |
;tipo de trama | |
Tipo_Trama PROC NEAR | |
mov si,offset Tramas | |
mov al,[si] | |
cmp al,55h | |
jz Ti1 | |
mov cx,6 | |
jmp Ti2 | |
Ti1:mov cx,4 | |
Ti2:inc si | |
loop Ti2 | |
mov al,[si] | |
mov comparar,al | |
ret | |
Tipo_Trama ENDP | |
;inicializar puerto paralelo | |
Inici_Port_Paralelo proc near | |
;para poner en cero | |
mov dx,037Ah | |
mov al,00h | |
out dx,al | |
ret | |
Inici_Port_Paralelo endp | |
;dar pulso completo | |
Dar_Pulso proc near | |
;dar pulso de 0 a 1 | |
mov dx,037Ah | |
mov al,01h | |
out dx,al | |
;dar pulso de 1 a 0 | |
mov dx,037Ah | |
mov al,00h | |
out dx,al | |
ret | |
Dar_Pulso endp | |
;encender cautin | |
encender proc near | |
push ax | |
push dx | |
;mandar strobe=1 | |
mov dx,0378h | |
mov al,42h | |
out dx,al | |
pop dx | |
pop ax | |
ret | |
encender endp | |
;apagar cautin | |
apagar proc near | |
push ax | |
push dx | |
;mandar strobe=0 | |
mov dx,0378h | |
mov al,80h | |
out dx,al | |
pop dx | |
pop ax | |
ret | |
apagar endp | |
CODE ENDS | |
END principal |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment