• Viernes 8 de Noviembre de 2024, 20:35

Autor Tema:  Factorial en ASM  (Leído 6710 veces)

Death_13

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Factorial en ASM
« en: Martes 7 de Octubre de 2008, 20:29 »
0
Hola, aqui tengo una duda, estoy tratando de desarrollar un programa que logre sacar el factorial de un numero, lo estoy haciendo en turbo c, utilizando partes de codigo en ensamblador, el codigo en cuestion es el siguiente:

#include <stdio.h>
#include <conio.h>

void main(void){
clrscr();
int a, x, res;
printf("Digite el numero al cual se requiere sacar el factorial:n");
scanf("%i",&a);
printf("Digite la potencia:n");
scanf("%i",&x);

       asm mov cx,x
BlockA:
   asm{
      mov ax,a
      mul x
      loop BlockA
      mov res,ax
       }

   printf("El factorial de %i elevado a la %i potencia es: %in",a,x,res);
Acaba:
   printf("Pulse una tecla para continuarn");
   getch();

}

El problema es que no hace el LOOP, no se si lo estoy utilizando bien o cual es el problema, pero no sale lo unico que hace es multiplicar los valores a y x, mas no lo vuelve a hacer como lo haria si fuera un factorial, solicito su ayuda, de antemano muchas gracias, saludos

posman

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Factorial en ASM
« Respuesta #1 en: Martes 7 de Octubre de 2008, 21:50 »
0
Segun recuerdo (no estoy seguro), mul x deja el resultado en AX, o sea que mul x = mul ax, x

Si esto es asi, entonces, durante el primer ciclo todo esta bien, pero a partir del 2o ciclo, estas sobreescribiendo el resultado con mov ax, a

Pero hay algo que no entiendo, el factorial de un numero (ej. 5) es 5*4*3*2*1, para que utilizas la otra variable X (potencia)?

Death_13

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Factorial en ASM
« Respuesta #2 en: Martes 7 de Octubre de 2008, 22:12 »
0
Tienes razon, es que me equivoque, trasquiverse la potenciacion con la factoralizacion, jeje, ok checare eso que me dices