SoloCodigo
Programación General => ASM (Ensamblador) => Mensaje iniciado por: Dennis en Domingo 24 de Octubre de 2004, 01:07
-
Disculpen amigos, de nuevo pido ayuda, ya desarrolle el 90% de mi simple programa, el cual se le introducen dos digitos (no validados). Los suma, los resta, los multiplica y en la parte de divison me sale un error de "Desvordamiento por division"
Creo que el error reside en la parte donde intento poner una variable (1byte) al registro AL (la en la division debe ser AX, pero por ser un numero no mayor 99 lo dejo en AL)
Ademas he hecho una prueba de division, y es satisfactoria pero cuando asigno directamente el valor a los registros.
Les dejo el codigo en el que he estado trabajando, espero me puedan ayudar a corregir ese ultimo error que me ha vuelto loco. Gracias
-
Hola Dennis, te comento que cada vez que desees realizar una division debes ver lo siguiente (usar unas funciones de conversion para que el dividendo sea siempre de mayor tamaño que el divisor, y no aparezca el error de desbordamiento):
Si quieres dividir un valor de tipo byte entre otro de tipo byte necesitas codificar
Ejemplo:
MV AL,valor1_byte ;pasamos a AL el valor del valor byte a dividir
CBW ;funcion para convertir Byte a Word, es necesaria esta funcion
DIV valor2_byte ;dividir lo que tiene AX entre valor2_byte
El cociente se almacena en AL y el residuo en AH.
Si la division involucra dos valor Word:
MV AX,valor1_word ;pasamos a AX el valor del valor word a dividir
CWD ;funcion para convertir Word a Double(32 bits), es necesaria esta funcion
DIV valor2_byte ;dividir lo que tiene AX entre valor2_word
El cociente se almacena en AX y el residuo en DX
Espero que este te sea de ayuda. Hasta pronto
:hola:
-
Tambien se puede poner un cero en AH antes de ejecutar la division:
mov AL,num
xor AH,AH
dib BL