Red de conocimiento informático - Conocimiento sistemático - Programación en lenguaje ensamblador

Programación en lenguaje ensamblador

En primer lugar, debe comprender:

1. Cuando se suman un número positivo y un número negativo, el resultado definitivamente no se desbordará, es decir, el resultado tampoco. sea ​​mayor que el número positivo más grande ni menor que el número negativo más pequeño de la misma manera, si se restan dos números positivos o dos números negativos, el resultado definitivamente no se desbordará; También hay un caso especial, es decir, cuando DATOS1 es 0 y DATOS2 es el número negativo más pequeño, DATOS1 - DATOS2 también se desbordará.

2. Si el resultado es mayor que el número positivo más grande, debe ser la suma de dos números positivos; si el resultado es menor que el número negativo más pequeño, debe ser la suma de dos números negativos;

3. Desbordamiento La bandera solo puede determinar si se desborda, pero no puede determinar si es un desbordamiento positivo o negativo. Por lo tanto, primero se debe juzgar el indicador OF. Si hay desbordamiento, entonces se debe juzgar el signo de DATA1 o DATA2. Si es un número positivo, es un desbordamiento positivo;

El programa es el siguiente. Lo compilé en 386.

.modelo pequeño

.386

.dosseg

.stack 1024

.data

; DATOS1 dd 81234567h

DATOS1 dd 7fffffffh; Número máximo positivo

DATOS2 dd 80000000h; Número mínimo negativo

; p >

SUM dd ?

.code

.startup

mov eax, DATA1

add eax, DATA2

jo OverFlow

jmp Listo

OverFlow:

cmp DATA1, 0

jg PlusOverFlow

mov eax, 80000000h; número negativo mínimo

jmp Hecho

PlusOverFlow:

mov eax, 7fffffffh; Listo:

mov SUM, eax

.exit

end

Puedes modificar los valores de DATOS1 y DATOS2 para ver los resultados.