Ensamblador - Duda: leer y desplegar cadenas Ensamblador

   
Vista:

Duda: leer y desplegar cadenas Ensamblador

Publicado por Santino (1 intervención) el 13/05/2014 05:26:04
Supuse que existe una funcion de alguna interrupcion que hace lo que busco. encontre esto funcion 0ah de la interrupcion 21h. pero no se si lo que hago esta bien. por que encontre en varios lugares, que se tiene que calcular la direccion en el arreglo para desplegar los datos y se le tiene que poner el signo '$'. al final. y la unica manera que se me ocurrio. fue lo eso.
Mi duda es: cuando haga comparaciones con otra cadena, lo hara bien? al recorrer la palabra caracter por caracter.?
afecta en algo que lo inicialice con '$'.
gracias.

.model small
.stack
.data

salto db 10,13,'$'
cad db 50,?,50 dup('$')

.code
programa:
mov ax,@data
mov ds,ax

;captura cadena
mov ah,0Ah
lea dx,cad
int 21h

mov ah,09h
lea dx,salto
int 21h

mov ah,09h
lea dx,cad+2
int 21h


mov ax,4c00h
int 21h

end programa
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Duda: leer y desplegar cadenas Ensamblador

Publicado por Pico (50 intervenciones) el 13/05/2014 09:31:54
Tienes esa función del dos y la 08h de la bios para leer un carácter, la 09h y 0Ah para escribir un carácter, y la 13h para escribir una cadena de caracteres.

Las direciones del búfer de datos tienes que calcularlas siempre.

Con la función 0Ah del dos tienes que poner en el primer byte del búfer cuántos caracteres puede leer como máximo. Si llega a ese tope no introduce más y suena un pitido. En el segundo byte la función escribe cuántos caracteres han entrado, y con ese dato tienes que poner el '$'. Por eso en la función 09h pones lea dx, cad + 2, porque los caracteres leídos empiezan en la posición 2 del búfer.

Al comparar es lo mismo cómo los captures. Tienes que saber dónde empiezan los datos en cada caso y qué marca donde acaban.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar