Red de conocimiento informático - Conocimiento sistemático - Cómo evitar el desbordamiento de la división en el ensamblaje

Cómo evitar el desbordamiento de la división en el ensamblaje

¿8086?CPU? sí mismo, con? 16? 8? dígitos, 32? ¿Dividir por bits? 16? dígitos, dos instrucciones de división.

Cuando el divisor es un número de 8 cifras, el dividendo es un número de 16 cifras en AX. El cociente se coloca en AL.

Esto requiere: cociente, no más de 8 dígitos. De lo contrario, se trata de un "desbordamiento de división".

Cuando el divisor es de 16 bits, el cociente se coloca en AX y no debe ser mayor a 16 bits.

Si puedes cumplir estos requisitos, puedes utilizar una instrucción de división y obtener el resultado.

-

En proyectos reales, los datos involucrados en las operaciones se obtienen del campo y son inciertos.

El dividendo puede ser muy grande y superar el número predeterminado de dígitos, lo que supone un desbordamiento.

¿Incluso si usas 32 en este momento? Las instrucciones de división numérica inevitablemente se desbordarán.

Entonces, ¿qué pasa con la CPU? Su propia descripción tiene limitaciones. No lo uses a la ligera.

-

Para evitar el desbordamiento, debemos escribir nosotros mismos un programa de "división multibyte".

La idea de escribir este programa es muy sencilla. Similar a la "división vertical" que se aprende en la escuela primaria:

La imagen de la izquierda es el proceso de ejecución de la instrucción de división más simple (div? BL).

La imagen de la derecha muestra el proceso de división de esta instrucción para "(1A 2B 3C 4DH)/ BL".

El dividendo es de cuatro bytes, por lo que el div debe ejecutarse cuatro veces. BL.

Esto da un cociente de cuatro bytes y un resto de cuatro bytes.

El cociente también tiene cuatro bytes, por lo que mientras BL sea distinto de cero, nunca se desbordará.

De hecho, el número de bytes del dividendo puede seguir aumentando.

Según esta idea, se puede considerar que los dividendos son infinitos.