SoloCodigo

Programación General => ASM (Ensamblador) => Mensaje iniciado por: Death_13 en Martes 7 de Octubre de 2008, 20:29

Título: Factorial en ASM
Publicado por: Death_13 en Martes 7 de Octubre de 2008, 20:29
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
Título: Re: Factorial en ASM
Publicado por: posman en Martes 7 de Octubre de 2008, 21:50
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)?
Título: Re: Factorial en ASM
Publicado por: Death_13 en Martes 7 de Octubre de 2008, 22:12
Tienes razon, es que me equivoque, trasquiverse la potenciacion con la factoralizacion, jeje, ok checare eso que me dices