AYUDA!!!: PROGRAMA QUE GENERE CODIGOS DEL TECLADO

Principiante
21 de Noviembre del 2004
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!!!!!!

Pablo123
21 de Noviembre del 2004
; 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...$"

Bibrion
21 de Noviembre del 2004
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

Bibrion
21 de Noviembre del 2004
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!

yumaso
21 de Noviembre del 2004
Para versi me pueden mandar alguno código del ensamblador.
saludos