Programación General > ASM (Ensamblador)
Entrada Y Salida De String
cybergatita:
Ok, conforme a tu link.
http://www.ctyme.com/intr/int-21.htm
Encontre tambien esto:
Función 00H
Leer un caracter del teclado.
Registros de llamada:
AH = 00H ; PIENSO QUE ESTA FUNCION ES LA QUE ME SIRVE.
Registros de retorno:
AH = código de barrido (scan code) del teclado
AL = Valor ASCII del caracter.
y
Leer un caracter del teclado y desplegarlo.
Registros de llamada:
AH = 01H
Registros de retorno:
AL = Caracter leído
.CODE
Empieza:
MOV AX,@DATA
MOV DS,AX
MOV DX,OFFSET MENSAJE ;Aqui solo mando un mensaje que defini en AREA DATOS
MOV AH,9
INT 21H
MOV AH,00H ;Aqui Leo mi tecla
INT 16H
MOV AH,02H ; Aqui pienso desplegarla, falta un registro, vdd?
; Despliega un caracter a la pantalla.
Registros de llamada:
AH = 02H
DL = Valor del caracter a desplegar.
MOV AX,4C00H
INT 21H
Eternal Idol:
Tenes que probar mas el codigo. En este caso te falta darle un valor a DL ... ¿Cual sera? El que te devuelva la interrupcion 16h en AL.
cybergatita:
MOV AH,00H ;Aqui Leo mi tecla
INT 16H
MOV AH,02H ; Aqui pienso desplegarla,
MOV DL, AL ; Lo que faltaba?... siento que no
INT 21H
MOV AX,4C00H
INT 21H
Asi solo me lee el caracter que introduzco
Tenes que probar mas el codigo. En este caso te falta darle un valor a DL ... ¿Cual sera? El que te devuelva la interrupcion 16h en AL.
Return:
AL = status
00h successful
FFh directory full or file exists and is read-only or locked
Me devuelve el status, que status?... del teclado? y asi me visualizara su valor ascii?
Eternal Idol:
--- Cita de: "cybergatita" --- MOV DL, AL ; Lo que faltaba?... siento que no
Asi solo me lee el caracter que introduzco
--- Fin de la cita ---
Si, eso era lo que faltaba. Y no, asi lee lo que escribis y despues lo muestra en pantalla. Fijate si estas ensamblando bien, si estas comprobando el ejecutable que ensamblaste por ultima vez, etc. Ese codigo es correcto.
Y la int 16h con el servicio 0 no devuelve eso de status sino esto:
KEYBOARD - GET KEYSTROKE
AH = 00h
Return:AH = BIOS scan code
AL = ASCII character
cybergatita:
MOV AH,00H
INT 16H
MOV AH,02H
MOV DL,AL
INT 21H
MOV AX,4C00H
INT 21H
.STACK
mm ok, entonces tal vez entendi mal, aqui solamente me va a leer y desplegar como hasta el momento lo he hecho.Pero para yo poder desplegar su codigo ASCII de la tecla o caracter que presione, entonces falta codificar lo que me mencionas?
esto?. de la interrupcion 16?
Y la int 16h con el servicio 0 no devuelve eso de status sino esto:
KEYBOARD - GET KEYSTROKE
AH = 00h
Return:AH = BIOS scan code
AL = ASCII character
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa