Advertisement
AntonioVillanueva

Ejercicio 4.1 Lenguaje Ensamblador de Anaya

Jan 28th, 2016
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.49 KB | None | 0 0
  1. /*Ejercicio 4.1 */
  2. #include <iostream>
  3. using namespace std;
  4. int venta(int importe,bool chabitual){
  5.     int cobro(0),descuento(0);
  6.     asm(
  7.         "mov %[importe],%%eax \n\t"
  8.  
  9.         "cmp $1000,%%eax \n\t"
  10.         "jb nosupera \n\t"/* si importe <1000 salta a no supera */
  11.    
  12.         "cmp $1,%[chabitual] \n\t"
  13.         "jne nosupera \n\t"
  14.        
  15.         "mov $50,%[descuento] \n\t"/*cliente habitual y 1000>=*/
  16.         "jmp salida \n\t"/*salta a salida de cobro */
  17.        
  18.     "nosupera:  \n\t"/*inferior a 1000 y clientes no habituales */
  19.         "mov $10,%[descuento] \n\t"/*carga un descuento de 10 */
  20.        
  21.     "salida:    \n\t"
  22.         "sub %[descuento],%%eax \n\t"/* se resta el descuento */
  23.         "mov %%eax,%[cobro] \n\t"
  24.        
  25.         :[cobro]"=g"(cobro) , [descuento]"=g"(descuento) /*salidas*/
  26.         :[importe] "b"(importe) , [chabitual] "r"(chabitual) /*entradas */
  27.         :"%eax" /* no tocar este registro */
  28.     );
  29.    
  30.     return cobro;
  31. }
  32.  
  33. int main (){
  34.     cout <<venta (1000,1)<<endl;
  35.     return 0;
  36. }
  37. /*
  38.  * Crear una funcion C/C++ cuyo prototipo es int venta (int importe,bool cliente ) ,funcion desarrollada en assembler
  39.  * ,la funcion ofrece un descuento de 10 euros a toda compra inferior a 1000 euros .Si se trata de un cliente habitual
  40.  * y el valor de la compra es igual o superior a 1000 euros debe realizar un descuento de 50 Euros, finalmente la funcion
  41.  * retorna el importe a pagar que sera mostrado desde el main de C/C++  por consola
  42.  * /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement