1: //===========================================================================
2: //===========================================================================
3: // PROGRAMA : pc48_ope.c
4: // FUNCION : Programa hibrido que calcula operaciones con enteros.
5: // REALIZADO POR : Prof. Juan Juárez Fuentes (código común)
6: // COMPILADOR EN EL QUE SE EJECUTO: Dev-C++
7: // FECHA : 20130124095403
8: //===========================================================================
9: // LIBRERIAS
10: //===========================================================================
11: #include <stdio.h>
12: #include <stdlib.h>
13: //===========================================================================
14: // PRINCIPAL
15: //===========================================================================
16: int main(void)
17: {
18: int numero_1, numero_2, suma, resta, multiplicacion, division, modulo;
19: system( "cls" );
20: printf( "\n\n" );
21: printf( " =======================================================================\n" );
22: printf( " Este programa realiza operaciones con enteros\n");
23: printf( " =======================================================================\n" );
24: printf( "\n\n\t\t Dar el primer numero entero : " );
25: scanf( "%d", &numero_1 );
26: printf( "\n\n\t\t Dar el segundo numero entero : " );
27: scanf( "%d", &numero_2 );
28:
29: __asm__ (
30: "addl %%ebx, %%eax;" : "=a" (suma) : "a" (numero_1) , "b" (numero_2)
31: );
32:
33: __asm__ (
34: "subl %%ebx, %%eax;" : "=a" (resta) : "a" (numero_1) , "b" (numero_2)
35: );
36:
37: __asm__ (
38: "imull %%ebx, %%eax;" : "=a" (multiplicacion) : "a" (numero_1) , "b" (numero_2)
39: );
40:
41: __asm__ (
42: "movl $0x0, %%edx;" "movl %2, %%eax;" "movl %3, %%ebx;" "idivl %%ebx;"
43: : "=a" (division), "=d" (modulo) : "g" (numero_1), "g" (numero_2)
pc48_ope.c 2 / 2
January 28, 2013 Crimson Editor
44: );
45:
46: printf( "\n\n" );
47: printf( "\t\t %d + %d = %d\n", numero_1, numero_2, suma );
48: printf( "\t\t %d - %d = %d\n", numero_1, numero_2, resta );
49: printf( "\t\t %d * %d = %d\n", numero_1, numero_2, multiplicacion );
50: printf( "\t\t %d / %d = %d\n", numero_1, numero_2, division );
51: printf( "\t\t %d %% %d = %d\n", numero_1, numero_2, modulo );
52: printf( "\n\n\t\t " );
53: system("pause");
54: return 0;
55: }
56: //=======================================================================================
57: //=======================================================================================
58: //=======================================================================================
--------------------------------------------------------------------------------------------------------------------------
1: //==============================================================================
2: //==============================================================================
3: // PROGRAMA : pc49_mcd.c
4: // FUNCION : Programa hibrido que calcula operaciones con enteros.
5: // REALIZADO POR : Prof. Juan Juárez Fuentes (código común)
6: // COMPILADOR EN EL QUE SE EJECUTO: Dev-C++
7: // FECHA : 20130131093428
8: //==============================================================================
9: // LIBRERIAS
10: //==============================================================================
11: #include <stdio.h>
12: #include <stdlib.h>
13: //==============================================================================
14: //==============================================================================
15: // PROTOTIPO DE FUNCIÓN
16: //==============================================================================
17: int gcd( int, int );
18: void encabezado( void );
19: void fin( void );
20: //==============================================================================
21: //==============================================================================
22: // PRINCIPAL
23: //==============================================================================
24: int main( void )
25: {
26: int $primero;
27: int $segundo;
28: encabezado();
29: printf( "\t\t\tDar el primer entero: " ) ;
30: scanf( "%d", & $primero );
31: printf( "\t\t\tDar el segundo entero: " ) ;
32: scanf( "%d", & $segundo );
33: printf( "\n\n\t\t\tGCD of %d & %d is %d\n", $primero, $segundo, gcd( $primero, $segundo));
34: fin();
35: system("pause");
36: return 0 ;
37: }
38: //==============================================================================
39: //==============================================================================
40: // FUNCIONES
41: //==============================================================================
42: //==============================================================================
43: // Calcula el máximo común divisor utilizando el algoritmo de Euclides
44: //---------------------------------------------------------------------------
45: int gcd( int $a, int $b )
46: {
47: int $result;
48: __asm__ __volatile__
49: (
50: "movl %1, %%eax;"
51: "movl %2, %%ebx;"
52: "CONTD: cmpl $0, %%ebx;"
53: "je DONE;"
54: "xorl %%edx, %%edx;"
55: "idivl %%ebx;"
56: "movl %%ebx, %%eax;"
57: "movl %%edx, %%ebx;"
58: "jmp CONTD;"
59: "DONE: movl %%eax, %0;" : "=g" ( $result ) : "g" ( $a ), "g" ( $b )
60: );
61: return $result ;
62: }
63: //---------------------------------------------------------------------------
64: //==============================================================================
65: //==============================================================================
66: // FUNCIONES COMPLEMENTARIAS DEL PROGRAMA
67: //==============================================================================
68: //---------------------------------------------------------------------------
69: void encabezado( void )
70: {
71: printf("\n\n===========================================================================");
72: printf("\n\t PROGRAMA QUE CALCULA EL MAXIMO COMUN DIVISOR\n");
73: printf("===========================================================================\n\n\n");
74: }
75: //---------------------------------------------------------------------------
76: void fin( void )
77: {
78: printf("\n\n===========================================================================");
79: printf("\n LENGUAJE ENSAMBLADOR\t\t Prof.: JUAN JUAREZ FUENTES\n");
80: printf(" UNIVERSIDAD TECNOLOGICA DE LA MIXTECA\n");
81: printf("===========================================================================\n\n\n");
82: }
83: //---------------------------------------------------------------------------
84: //==============================================================================
85: //==============================================================================
86: //==============================================================================
No hay comentarios:
Publicar un comentario