Estoy aprendiendo acerca de la división en lenguaje ensamblador. De acuerdo con el libro del que estoy aprendiendo, el resultado de la operación idiv se coloca en eax y el resto en edx.Cómo implementar el operador de mod en el ensamblado
Un ejercicio en el libro es implementar number = result % divisor
en el montaje.
Hubiera pensado que esto sería equivalente a una operación de división normal, excepto que edx sería el resultado.
Esto no funcionó, sin embargo, y edx devolvió aparentemente basura.
¿Por qué? ¿Cómo implementa el pseudocódigo anterior en el ensamblaje?
Yo codificaría una pequeña función C y vería el ensamblaje generado (por ejemplo, con 'gcc -O -fverbose-asm -S tiny.c') –
Su pregunta es similar a http://stackoverflow.com/questions/8021772/assembly-language-how-to-do-modulo/8022107 Muestra tu código real si tienes problemas específicos (lo más probable es que no estés borrando la parte superior superior de rdx: rax, edx: eax o dx: hacha). – user786653
Difícil de adivinar sin ver el código, pero un error común es olvidarse de cero antes del idiv. –