AYUDA!!!: PROGRAMA QUE GENERE CODIGOS DEL TECLADO
Soy sumamente principiante, y en una materia del primer semestre de mi carrera me piden sin conocimientos previos que haga un programa en NASM que genere los codigos del teclado, los muestre en pantalla y se detenga cuando se preione X.
No debe ser muy dificil para los que ya saben assembler.
POR FAVOR AYYUDENME!!!!!!
No debe ser muy dificil para los que ya saben assembler.
POR FAVOR AYYUDENME!!!!!!
; AQUI ESTA UN CODIGO, lo probe en mi favorito: Turbo Editasm, bajalo aqui:
; http://www.geocities.com/pabloccortez/Editasm.zip
; buena suerte.....
otra_vez:
mov ah,0
INT 16h
CMP AL,27 ; ESC sirve para salir, porsiaca su codigo es 27
JE fin
mov bl,10
mov ah,0
div bl
mov a3,ah
mov ah,0
div bl
mov a2,ah
mov a1,al
add a1,30h
add a2,30h
add a3,30h
mov dx,offset mensaje
mov ah,9
int 21h
jmp otra_vez
fin:
mov dx,offset exit
mov ah,9
int 21h
mov ah,1
int 21h
MOV AH,4ch
INT 21h
mensaje db "El codigo de la tecla pulsada es: "
a1 db 0
a2 db 0
a3 db 0
db " (en decimal)",10,13,"$"
exit db 10,13,"Pulse una tecla para finalizar...$"
; http://www.geocities.com/pabloccortez/Editasm.zip
; buena suerte.....
otra_vez:
mov ah,0
INT 16h
CMP AL,27 ; ESC sirve para salir, porsiaca su codigo es 27
JE fin
mov bl,10
mov ah,0
div bl
mov a3,ah
mov ah,0
div bl
mov a2,ah
mov a1,al
add a1,30h
add a2,30h
add a3,30h
mov dx,offset mensaje
mov ah,9
int 21h
jmp otra_vez
fin:
mov dx,offset exit
mov ah,9
int 21h
mov ah,1
int 21h
MOV AH,4ch
INT 21h
mensaje db "El codigo de la tecla pulsada es: "
a1 db 0
a2 db 0
a3 db 0
db " (en decimal)",10,13,"$"
exit db 10,13,"Pulse una tecla para finalizar...$"
Hola buenas! No hace mucho que me estoy iniciando en esto del ensamblador por mi propia cuenta. Si no me equivoco, con la interrupcion 16h de la BIOS se recoge una letra por teclado. El servicio es también el 16h. Vamos, que para recoger una letra seria algo asÃ:
mov ah, 16h
int 16h
TenÃa algo similar hecho, pero no sé ahora mismo donte lo tendré, estoy hablando de memoria, asà que disculpar errores.
El resultado de la tecla pulsada (si no me equivoco) se almacena en DX. A partir de ahà serÃa comparar:
leer:
mov ah,16h
int 16h
cmp dx,'x'
je salir
;aqui se mostraria el codigo
;del teclado, que ahora mismo
;no recuerdo como era, sorry!
jmp salir
salir:
;codigo para salir
mov ah, 16h
int 16h
TenÃa algo similar hecho, pero no sé ahora mismo donte lo tendré, estoy hablando de memoria, asà que disculpar errores.
El resultado de la tecla pulsada (si no me equivoco) se almacena en DX. A partir de ahà serÃa comparar:
leer:
mov ah,16h
int 16h
cmp dx,'x'
je salir
;aqui se mostraria el codigo
;del teclado, que ahora mismo
;no recuerdo como era, sorry!
jmp salir
salir:
;codigo para salir
Lo siento, pero antes he dicho muchas barbaridades. Retifico, la interrupcion 16h utiliza el servicio 0 para captar una letra. Seria asÃ:
Sintaxis :
MOv ah,0
Int 16H
Devuelve:
AH=Scan Code del Teclado
AL=Codigo Ascii
En definitiva, he hecho mis pruebas y el siguiente código me ha compilado en NASM-0.98 (DOS32):
inicio:
MOV AH,0
INT 16h
CMP AL,'x'
JE fin
JMP escribe
escribe:
MOV AH,0AH
MOV CX,1
INT 10H
jmp inicio
fin:
MOV AH,4CH
INT 21H
¡Suerte con eso!
Sintaxis :
MOv ah,0
Int 16H
Devuelve:
AH=Scan Code del Teclado
AL=Codigo Ascii
En definitiva, he hecho mis pruebas y el siguiente código me ha compilado en NASM-0.98 (DOS32):
inicio:
MOV AH,0
INT 16h
CMP AL,'x'
JE fin
JMP escribe
escribe:
MOV AH,0AH
MOV CX,1
INT 10H
jmp inicio
fin:
MOV AH,4CH
INT 21H
¡Suerte con eso!
