Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Actividad 6
2
Función NUEVA: multiplicación de 3 números.
A la función se le pasan 3 números enteros, estos son asignados a “ax”, “bx” y “cx”
para después multiplicar dichas direcciones con la instrucción imull. Después el
resultado almacenado en “ax” pasa a $result.
Código:
#include <iostream>
using namespace std;
int suma( int $a, int $b )
{
int $result;
3
__asm__ __volatile__(
"movl %1, %%eax;"
"movl %2, %%ebx;"
"addl %%ebx,%%eax;"
"movl %%eax, %0;" : "=g" ( $result ) : "g" ( $a ), "g" ( $b ));
return $result ;
}
int resta( int $a, int $b )
{
int $result;
__asm__ __volatile__(
"movl %1, %%eax;"
"movl %2, %%ebx;"
"subl %%ebx,%%eax;"
"movl %%eax, %0;" : "=g" ( $result ) : "g" ( $a ), "g" ( $b ));
return $result ;
}
4
"jmp CONTD;"
"DONE: movl %%eax, %0;" : "=g" ( $result ) : "g" ( $a ), "g" ( $b ));
return $result ;
}
5
cout<<"\nDigite el numero b: ";
cin>>b;
c=suma(a,b);
cout<<"\nEl resultado de la suma de "<<a<<"+"<<b<<"="<<c<<"\n";
c=resta(a,b);
cout<<"\nEl resultado de la resta de "<<a<<"-"<<b<<"="<<c<<"\n";
c=gcd(a,b);
cout<<"\nEl resultado GCD("<<a<<","<<b<<")="<<c<<"\n";
6
cout<<"\nDigite el numero c: ";
cin>>c;
d=multiplica(a,b,c);
cout<<"\nEl resultado de la multiplicacion
("<<a<<"*"<<b<<"*"<<c<<")="<<d<<"\n";
return 0;
}
Pantallazos:
Solicitud de los números al usuario.
7
Impresión del resultado de la multiplicación.
Conclusión:
El propósito de esta actividad era conocer la combinación del lenguaje ensamblador
y lenguajes de alto nivel como lo son C y C++ además de saber implementar dichas
instrucciones. Me parece que dicho objetivo se cumplió, se como usar instrucciones
del lenguaje ensamblador dentro de C además de las direcciones de memoria que
son las mismas usadas en el emu8086 aunque no termino de entender por qué
alguien preferiría usar estas instrucciones ya teniéndolas en el mismo lenguaje de
una forma más sencilla, pero lo importante es saber cómo funcionan dichas
operaciones que realiza el lenguaje de alto nivel.
Bibliografía:
http://arantxa.ii.uam.es/~gdrivera/labetcii/curso0001/udigxiii.htm
(consultado el 19 de abril de 2023).