Ensamblador - ¿COMO USO PROCEDIMIENTOS CON PARÁMETROS?

 
Vista:

¿COMO USO PROCEDIMIENTOS CON PARÁMETROS?

Publicado por Alexis Leung (5 intervenciones) el 27/01/2002 19:09:41
De antemano gracias.

Tengo una duda sobre el CALL de TASM. Defino un procedimiento así

Sirve para imprimir en pantalla pasando el offset como parámetro

imprime proc mensaje:word
mov dx,[mensaje]
mov ah,9
int 21h

ret
endp

Ahora pongo

call imprime, offset texto ;donde texto es un db "Hola a todos$"

El TASM me da un error diciendo que hay LINEAS EXTRAS EN EL CALL, es decir debería ser

call imprime

Entonces, ¿como pasó parámetros a un procedimiento? Porque esto lo ví en un curso de asm de Roby Joehanes.

Si no es así, me podrían decir como paso parámetros en una función o procedimiento?, es decir, como si fuera una función en C\C++. Se los agradecería mucho.

Atte: Alexis Leung
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

RE:¿COMO USO PROCEDIMIENTOS CON PARÁMETROS?

Publicado por J'knot (25 intervenciones) el 01/02/2002 01:18:53
Hola Alexis.

Bueno, primeramente la sintaxis del CALL es : CALL destino, donde destino es la dirección donde saltará tu programa y nada más.

Ahora si quieres pasar parámetros a imprime (por ejemplo) lo puedes
hacer de la siguiente forma:

Imprime Proc
Mov AH, 09h
Int 21h
ret
Imprime EndP

y ahora para hacer la llamada :

Texto1 db "Hola$"
Texto2 db "Chao$"

Lea DX, Texto1 (es lo mismo que: Mov DX, Offset Texto)
Call Imprime

Lea DX, Texto2
Call Imprime

Ya vez, el parámetro lo paso en DX que es el registro que debe apuntar a la cadena que se imprimirá en pantalla.

Lo otro es que si quieres pasar parametros de otra forma los puedes pasar en la PILA con un Push.

Para más información puedes buscar el libro El Universo Digital del IBM PC, AT y PS/2, ahí puedes revisar el Capitulo 5 en el cual encontrarás el titulo "Programación modular y paso de parametros", te lo recomiendo.

Un saludo
J'knot
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