Programación General > ASM (Ensamblador)

 Mi Pc No Sabe Dividir

(1/3) > >>

bob esponja:
suelo estar mas en la parte de videojuegos pero este problema es netamente de ensamblador:

el problema es que cada vez que pongo una instruccion div en el codigo, compila bien y cuando ejecuto el programa hace caso omiso al ultimo ret y sigue corriendo hasta que se encuentra con alguna instruccion no valida y me cierra el programa, tampoco responde a poner al final mov ax,4c01 int 21
si cambio ese div por cualquier otra instruccion el programa termina, si la comento tambien termina.
el problema pasa con NASM y con el debug asi que no es problema de compilador

aclaracion: el codigo es correcto porque incluso haciendo un programa del tipo:

mov ax,10
mov bx,2
div bx
ret

falla pero si cambio el div por un mul funciona.

alguien sabe que puede ser?

cualquier cosa que se les ocurra escriban porque sin dividir no puedo seguir

ACLARACION 2: es la unica division en el codigo.

deldar:
Es un problema muuuuy extraño. Seguramente lo que falla sea el propio nasm.
En cualquier caso si lo que estas haciendo es una division cuyo divisor es potencia de dos(2,4,8,16,32...) puedes hacer lo mismo desplazando a la derecha el registro ejm:

56 : 32   32

00111000 : 2 e 5 ; o sea 5 desplazamientos a la derecha

resultado 00000001 resto es lo que se ha desbordado 00011000=24

Un Saludo.

Pablo123:

--- Cita de: "deldar" --- Es un problema muuuuy extraño. Seguramente lo que falla sea el propio nasm.
En cualquier caso si lo que estas haciendo es una division cuyo divisor es potencia de dos(2,4,8,16,32...) puedes hacer lo mismo desplazando a la derecha el registro ejm:

56 : 32   32

00111000 : 2 e 5 ; o sea 5 desplazamientos a la derecha

resultado 00000001 resto es lo que se ha desbordado 00011000=24

Un Saludo.
--- Fin de la cita ---
hola amigo,
debes de poner mas codigo para poder decir tu error.
no creo que el compilador nasm este errado
Gracias

bob esponja:
este es el codigo mas simple que produce el error:

[ORG 0x100]
[BITS 16]

mov ax,10
mov bx,2
div bx
ret

compilenlo como .com y ejecutenlo el problema lo hace en nasm y debug ahora lo voy a probar en tasm (para mi no son los compiladores.), si haces esto:

[ORG 0x100]
[BITS 16]

mov ax,10
mov bx,2
mul bx
ret

no pasa nada
si lo pueden probar se los agradesco

bob esponja:
nadie lo probo?
a nadie le funciona?
a todos le funciona?
...

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa