• Jueves 28 de Marzo de 2024, 12:52

Autor Tema:  Entrada Y Salida De String  (Leído 5260 veces)

cybergatita

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Entrada Y Salida De String
« en: Sábado 7 de Octubre de 2006, 20:41 »
0
Que tal, ando por el tema nuevamente, chicos.

Pues en busca de información encontre algo sobre como leer/obtener un string desde entrada estandar  y despues darle salida estandar, (teclado y monitor), si encontre algo!!!!!-
Me compila pero solo me manda el string que puse sobre pregunta,

Me podrian asesorar,,,,
saludos a todos, , y saludos especiales a iternal doll y tania_d



.MODEL SMALL
.DATA
 TEXTO   DB  '¨ CUAL ES TU NOMBRE ? <escribelo>. $'
         DB  13,10,13,10
 TEXTO1  DB 30
 TEXTO2  DB 30 DUP(0)

.CODE

PROGRAMA:

MOV AX,@DATA
MOV DS,AX
MOV DX,OFFSET TEXTO
MOV AH,9
INT 21H
MOV AX,4C00H
INT 21H

MOV AH,3FH
MOV BX,0
MOV CX,30
MOV DX,30
INT 21H
AND AX,AX

MOV CX,30
MOV AH,40H
MOV BX,1
MOV DX,OFFSET TEXTO2
INT 21H


.STACK

End PROGRAMA

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Entrada Y Salida De String
« Respuesta #1 en: Sábado 7 de Octubre de 2006, 21:55 »
0
Primero y principal mira donde esta este codigo y que hace:

Código: Text
  1.  
  2. MOV AX,4C00H
  3. INT 21H
  4.  
  5.  

Despues fijate en la lectura de teclado que estas haciendo ... ¿Donde pasas el buffer donde guardar los datos?: http://www.ctyme.com/intr/rb-2783.htm

PD. Mi nick es Eternal Idol ...

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

cybergatita

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: Entrada Y Salida De String
« Respuesta #2 en: Sábado 7 de Octubre de 2006, 23:16 »
0
... Lo siento lo deje puesto ahi el codigo de terminacion.





P.D no me di cuenta Eternal Idol ...

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Entrada Y Salida De String
« Respuesta #3 en: Sábado 7 de Octubre de 2006, 23:21 »
0
Si pones eso donde debe ir y le pasas el buffer necesario a la lectura de teclado el codigo funciona, son dos cambios minimos  B)

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

cybergatita

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: Entrada Y Salida De String
« Respuesta #4 en: Domingo 8 de Octubre de 2006, 06:59 »
0
/**** Si pones eso donde debe ir y le pasas el buffer necesario a la lectura de teclado el codigo funciona, son dos cambios minimos***/



buffer?

checando estos ejemplos

    MOV AH,3FH
    MOV BX,0
    MOV CX,[LONGITUD MAXIMA]
    MOV DX,[DESTINO DE LA CADENA]
    INT 21H
    AND AX,AX

y este

AH = 0AH
DS:DX = Dirección del área de almacenamiento
BYTE 0 = Cantidad de bytes en el área
BYTE 1 = Cantidad de bytes leídos desde BYTE 2 hasta BYTE 0 + 2 = caracteres leído

Tal vez no logro entender el buffer  :(

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Entrada Y Salida De String
« Respuesta #5 en: Domingo 8 de Octubre de 2006, 09:24 »
0
http://www.ctyme.com/intr/rb-2783.htm

Mira de nuevo y fijate que estas pasandole a esa interrupcion en DX y que deberias pasarle en realidad ...

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

cybergatita

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: Entrada Y Salida De String
« Respuesta #6 en: Domingo 8 de Octubre de 2006, 21:09 »
0
Eternal Idol
Gracias chico

solo faltaba el offset en dx y al ultimo las instrucciones de terminacion


... Gracias por tu ayuda:).

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Entrada Y Salida De String
« Respuesta #7 en: Domingo 8 de Octubre de 2006, 21:44 »
0
Cita de: "cybergatita"
Eternal Idol
Gracias chico

solo faltaba el offset en dx y al ultimo las instrucciones de terminacion


... Gracias por tu ayuda:).
De nadas y si solo faltaban esas dos cositas  B)

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

cybergatita

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: Entrada Y Salida De String
« Respuesta #8 en: Lunes 9 de Octubre de 2006, 03:57 »
0
sip ya me di cuenta,, eres buen maestro ehhhh  :comp:  :comp:   :P

Aprovechando tu amabilidad,existira aguna instruccion que cuando yo teclee un solo caracter me de su valir en asci.?



saludos

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Entrada Y Salida De String
« Respuesta #9 en: Lunes 9 de Octubre de 2006, 08:19 »
0

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

cybergatita

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: Entrada Y Salida De String
« Respuesta #10 en: Martes 10 de Octubre de 2006, 01:19 »
0
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

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Entrada Y Salida De String
« Respuesta #11 en: Martes 10 de Octubre de 2006, 08:21 »
0
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.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

cybergatita

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: Entrada Y Salida De String
« Respuesta #12 en: Martes 10 de Octubre de 2006, 21:30 »
0
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

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Entrada Y Salida De String
« Respuesta #13 en: Martes 10 de Octubre de 2006, 21:47 »
0
Cita de: "cybergatita"
MOV DL, AL ; Lo que faltaba?... siento que no

Asi solo me lee el caracter que introduzco
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

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

cybergatita

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: Entrada Y Salida De String
« Respuesta #14 en: Martes 10 de Octubre de 2006, 22:00 »
0
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

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Entrada Y Salida De String
« Respuesta #15 en: Martes 10 de Octubre de 2006, 22:23 »
0
Con eso escribis la letra en pantalla como te decia antes. Si lo que queres es el numero en decimal entonces vas a tener bastante mas trabajo ... tenes que implementar la funcion ltoa (al menos para la raiz de diez) ... o buscar algo que lo haga ... no se si existe.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

cybergatita

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: Entrada Y Salida De String
« Respuesta #16 en: Martes 10 de Octubre de 2006, 22:43 »
0
ah
Pense mal

Registros de llamada:
AH = 00H

Registros de retorno:
AH = código de barrido (scan code) del teclado
AL = Valor ASCII del caracter.

Cuando se utiliza esta interrupción se detiene la ejecución del programa hasta que se introduzca un caracter desde el teclado, si la tecla presionada es un caracter ASCII su valor será guardado en el registro AH, de lo contrario el código de barrido será guardado en AL y AH contendrá el valor 00H.

El código de barrido fué creado para manejar las teclas que no tienen una representación ASCII como [ALT], [CONTROL], las teclas de función, etc.



Al leer esto que encontre, entendi que  en AL, se guardaria el VALOR EN ASCII DEL CARACTER QUE TECLEARA, POR EJEMPLO, si teclaba "A", en "AL" se guardaba el 65, y entonces asi podria desplegar AL para  que me desplegara en 65.


entendi mal?¨o se puede?

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Entrada Y Salida De String
« Respuesta #17 en: Martes 10 de Octubre de 2006, 22:47 »
0
Si, entendiste mal. El valor ASCII es 65 y a su vez es 'A' y la 21h muestra el valor en ASCII de cada caracter. Para desplegar 65 tenes que poner '6' y '5'. Lo que serian dos caracteres ASCII y no uno.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

cybergatita

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: Entrada Y Salida De String
« Respuesta #18 en: Martes 10 de Octubre de 2006, 23:04 »
0
Pues muchas gracias Eternal Idol

Pues tendre que seguir en busca de la forma en que cuando presione una tecla, tambien me despliegue su valor en ASCII, osea el 65, 66, etc.



A seguir buscando, y gracias Eternal Idol