Programación General > ASM (Ensamblador)
Mi Pc No Sabe Dividir
Enko:
--- Citar ---nadie lo probo?
a nadie le funciona?
a todos le funciona?
...
--- Fin de la cita ---
No me manejo muy bien en C y en assambley ni hablar por eso tal vez lo que probe es un desastre pero lo posteo igual, nada tengo que perder
--- Código: Text --- #include <stdio.h>#include <conio.h> int main (void) {int result; asm { mov ax,10 mov bx,2 div bx ret mov ax, result } printf("%d", result); getch(); return 1;}
No se si esta bien el codigo ya que hace rato que no programo en C
el resultado fue:
--- Código: Text --- Divide error
Si el codigo llegara a estar mal, corregilo por favor y postealo que yo lo pruebo. Uso turbo C 3.X
jorge8603:
no soy un experto pero al parecer encontre tu error
yo he programado cosas muy basicas para el tasm pero supongo debe ser lo mismo
mov ax,10
mov bx,2
div bx
si haces eso estas dividiendo una palabra entre una palabra lo cual es una operacion invalida
solo se puede dividir una palabra entre un byte. Quedaria
and ah,0
mov al,10; no se si sea necesario pero es una buena practica limpiar la parte alta
mov bl,2
div bl
este codigo realizara la operacion ax/bl dejando el cociente en el al y el residuo en el ah (o viceversa no me acuerdo)
espero resuelva tu problema
bob esponja:
lo voy a probar muchas gracias :kicking:
bob esponja:
FUNCIONO!!! muchas gracias
ahora una duda como hago para dividir por mas de 255?
Forly:
Hola Bob:
Yo también soy nuevo en estas lides, pero como lo explicó Jorje8603, para que la división resulte, siempre el divisor debe ser más pequeño que el dividendo.
Por ejemplo: DIVIDENDO DIVISOR
word byte
doble word word
etc.
En el caso de dividendos que ocupan más de un byte, deberás poner
el byte más significativo en el registro DX y el menos significativo en AX.
El resultado quedará en AX.
Espero que te sirva.
Te mando un abrazo.
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa