La Web del Programador: Comunidad de Programadores
 
    Pregunta:  6837 - ¿COMO SE PASAN PARAMETROS EN ENSAMBLADOR?
Autor:  salvador tojo quintela
Lo que quiero es pasar parametros a un programa, para utilizarlos dentro del programa para la toma de decisiones dentro del programa.

  Respuesta:  Leonardo Almñana
Disculpen si les enoja, pero el pibe de la segunda respuesta se equivoco, dijo que era C y era pascal, y ademas segun yo creo el chico que pregunta se refiere a pasar parametros de la linea de comando so
el c seria

#Includes
...
Definiciones
...
int main(int argc,string argv[]){
...
codigo loco
ASM mov AX,12H ; ejemplo de statement asm
...
return 0;
}

so en ese codigo llamando mediante la directiva ASM le podes pasar variables de c donde le pasarias algun item del Array Argv[] que es el de contenidos de argumentos, y si queres Argc que es la cuenta de cantidad de argumentos, el que quiera mandeme un mail a [email protected] por que estoy armando un grupito de desarrollo para hacer algunas cosas locas en ASM y C++, se escuchan propuestas.

  Respuesta:  Martín H. Bustos
De acuerdo a lo que te entiendo sería de la siguiente manera(Utilizando Turbo Pascal v. 7.0):

PROGRAM NOMBRE_PROGRAMA;
VAR LETRA:WORD;
BEGIN
WRITE(´INGRESE UN CARACTER´);
ASM
MOV AH,00H: {INT. PARA LEER EL CARACT. INGRESADO
INT 16H; {DEVUELVE EL CARACTER EN EL REGISTRO AL
MOV LETRA,AL;
END;
WRITELN(EL CARACTER INGRESADO ES: ´,AL);
READLN;
END.

En síntesis. Debes declarar un variable(En el lenguaje que utilizas) de acuerdo al tamaño del registro(De Ensamblador) que quieres pasar como parametro(En nuestro caso AL, tamaño: Word) y luego haz lo que deseas.
Cualquier duda sólo mándame un mail.Hasta la próxima !!!.

  Respuesta:  .. ...
Por lo que medio te entiendo: realizas un proceso en asm y necesitas sus respuestas.

...aplicando C para la toma de los datos
Bien, si es así, lo he hecho pasando el valor a un registro principal (ax, bx, ...o por lo menos me ha salido con estos dos), luego y en C los tomo como si estuvieran en unas variables con el mismo nombre, pero en mayúscula : _AX, _BX -> con la rayita. Un ejemplo sería algo así:

..
asm mov ax, valor
return _AX