[Assembler] Division

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Intervalo
    Pichium
    • 30-06-2007
    • 9385

    #1

    [Assembler] Division

    Tengo que dividir entre sí dos números enteros alojados en memoria obteniendo el cociente y el resto y no tengo la mas puta idea loco ah.

    Help?
    Oy with the poodles already!
  • murof_lege
    Pelotudo
    • 01-06-2009
    • 126

    #2
    te dejo la forma mas facil (restas sucesivas) en pseudocodigo listo para assemblerear.

    aca calcula A / B.

    cociente = 0
    resto = 0
    comparo A con B
    si A es MENOR que B, salto a (+)
    (*) cociente = cociente +1
    A = A - B
    vuelvo a comparar A con B
    si A es MAYOR que B, salto a (*)
    (+) resto = A

    que lo disfrutes.

    Comentario

    • Intervalo
      Pichium
      • 30-06-2007
      • 9385

      #3
      Aaah tipo un contador de "cuantas veces puedo restarle X numero a tal otro numero"?
      Oy with the poodles already!

      Comentario

      • Intervalo
        Pichium
        • 30-06-2007
        • 9385

        #4
        Y quien sooos?
        Oy with the poodles already!

        Comentario

        • murof_lege
          Pelotudo
          • 01-06-2009
          • 126

          #5
          Originalmente publicado por Salchichón primavera
          Aaah tipo un contador de "cuantas veces puedo restarle X numero a tal otro numero"?
          que en otras palabras, es lo que se conoce como "division entera", no?

          Comentario

          • Donnie Darko
            Mega Egelito
            • 10-08-2007
            • 3460

            #6
            Todavía no lo hice pero tiene razón murof.
            Aparte dijo el profesor que era lo mismo que la multiplicación pero "al revez". No era tan difícil willy u_u

            Comentario

            • Night Walker
              イノベイター。
              • 22-11-2006
              • 9213

              #7
              Che, con que procesador estas programando? Fijate si tiene la instrucción para dividir. Mejor que hacerlo con restas susesivas.

              Tipo yo aprendí con el 68HC11 y tiene una instruccion de division. Tipo con eso pude hacer un programa para dividir un numero en centenas, decenas y unidades muy fácilmente y sin ciclos.

              Código:
              	ORG	$0000
              NCEN	FCB	0
              NDEC	FCB	0
              NUNI	FCB	0
              NAUX	FDB	0
              NNRO	FCB	$EF	HEXADECIMAL
              *NNRO	FCB	&71	DECIMAL*
              *NNRO	FCB	%11011011	BINARIO*
              
              	ORG	$0010
              	
              	CLRA
              	CLRB
              	LDAB	NNRO
              	LDX	#64
              	IDIV
              	STAB	NNRO
              	STX	NAUX
              	LDD	NAUX
              	STAB	NCEN	
              
              	LDAB	NNRO
              	LDX	#A
              	IDIV
              	STAB	NNRO
              	STX	NAUX
              	LDD	NAUX
              	STAB	NDEC
              	
              	LDAB	NNRO
              	STAB	NUNI	
              
              ASD	BRA	ASD
              Editado por última vez por Night Walker; 22-07-2009, 02:40 AM.

              Comentario

              • Intervalo
                Pichium
                • 30-06-2007
                • 9385

                #8
                Originalmente publicado por Donnie Darko
                Todavía no lo hice pero tiene razón murof.
                Aparte dijo el profesor que era lo mismo que la multiplicación pero "al revez". No era tan difícil willy u_u
                Deja de hacerte el pistola que sabes que no estuve.
                Oy with the poodles already!

                Comentario

                • Intervalo
                  Pichium
                  • 30-06-2007
                  • 9385

                  #9
                  Originalmente publicado por Night Walker
                  Che, con que procesador estas programando? Fijate si tiene la instrucción para dividir. Mejor que hacerlo con restas susesivas.

                  Tipo yo aprendí con el 68HC11 y tiene una instruccion de division. Tipo con eso pude hacer un programa para dividir un numero en centenas, decenas y unidades muy fácilmente y sin ciclos.

                  Código:
                  	ORG	$0000
                  NCEN	FCB	0
                  NDEC	FCB	0
                  NUNI	FCB	0
                  NAUX	FDB	0
                  NNRO	FCB	$EF	HEXADECIMAL
                  *NNRO	FCB	&71	DECIMAL*
                  *NNRO	FCB	%11011011	BINARIO*
                  
                  	ORG	$0010
                  	
                  	CLRA
                  	CLRB
                  	LDAB	NNRO
                  	LDX	#64
                  	IDIV
                  	STAB	NNRO
                  	STX	NAUX
                  	LDD	NAUX
                  	STAB	NCEN	
                  
                  	LDAB	NNRO
                  	LDX	#A
                  	IDIV
                  	STAB	NNRO
                  	STX	NAUX
                  	LDD	NAUX
                  	STAB	NDEC
                  	
                  	LDAB	NNRO
                  	STAB	NUNI	
                  
                  ASD	BRA	ASD
                  Pentium 4?

                  Igual entendi la logica pero no se como carajo hacerlo tipo codigo, asi que ahora busco.
                  Oy with the poodles already!

                  Comentario

                  • Night Walker
                    イノベイター。
                    • 22-11-2006
                    • 9213

                    #10
                    Supongo que tenes unas hojas de instrucciones que estas usando no? Fijate que tenes para usar.

                    Lo que hace ese programa es dividir un numero por 100 (64 en hexa), guardar el resultado como centenas, el resto de la división anterior dividirlo por 10 (A en hexa) y guardar el resultado como decenas y el resto como unidades. Obviamente funciona para numeros entre 0 y 999.

                    Usaba este simulador de 68HC11 para programar.

                    No se si te lo explicaron pero assembler no es un lenguaje universal propiamente dicho, tiene una sintaxis que todos respetan pero cada procesador tiene diferentes instrucciones, así que un programa hecho para un procesador amd en assembler no va a funcionar en un procesador intel.
                    Editado por última vez por Night Walker; 22-07-2009, 04:25 AM.

                    Comentario

                    • Donnie Darko
                      Mega Egelito
                      • 10-08-2007
                      • 3460

                      #11
                      JAUja, cierto que no estuviste, me había olvidado.
                      disculpame, después te paso lo que tengo u_u.
                      Y el profesor quiere que lo hagamos con resta sucesiva.

                      Comentario

                      • Frostwarrior
                        Nerd legendario
                        • 30-01-2006
                        • 29055

                        #12
                        me los imagino en persona y riendose "JAUJAJUJ"

                        Comentario

                        • Night Walker
                          イノベイター。
                          • 22-11-2006
                          • 9213

                          #13
                          Entonces haganlo como dice murof_lege que esta perfecto.

                          Comentario

                          • Intervalo
                            Pichium
                            • 30-06-2007
                            • 9385

                            #14
                            Gracias a todos chicus, menos a Donnie HUM
                            Oy with the poodles already!

                            Comentario

                            Trabajando...