El tutorial o código que encontrarás en este artículo es la resolución más fácil y válida que hallamos a esta duda o problema.
Solución:
El indicador de desbordamiento se establece cuando una operación provocaría un cambio de signo. Su código está muy cerca. Pude configurar el indicador OF con el siguiente código (VC++):
char ovf = 0;
_asm
mov bh, 127
inc bh
seto ovf
cout << "ovf: " << int(ovf) << endl;
Cuando se incrementa BH, el MSB cambia de 0 a 1, lo que hace que se establezca OF.
Esto también establece el OF:
char ovf = 0;
_asm
mov bh, 128
dec bh
seto ovf
cout << "ovf: " << int(ovf) << endl;
Tenga en cuenta que el procesador no distingue entre números con y sin signo. Cuando usa la aritmética de complemento a 2, puede tener un conjunto de instrucciones que manejan ambos. Si desea probar el desbordamiento sin firmar, debe usar la bandera de acarreo. Dado que INC/DEC no afecta la bandera de acarreo, debe usar ADD/SUB para ese caso.
Manuales para desarrolladores de software de las arquitecturas Intel® 64 e IA-32
Mire el manual apropiado Referencia del conjunto de instrucciones, AM. Cada instrucción está documentada con precisión.
Aquí está la sección INC sobre las banderas afectadas:
La bandera CF no se ve afectada. Los indicadores OF, SZ, ZF, AZ y PF se establecen según el resultado.
intente cambiar su prueba para pasar el número en lugar de codificarlo, luego tenga un bucle que pruebe los 256 números para encontrar el que afecta la bandera. O haga que el asm realice el ciclo y salga cuando llegue a la bandera o cuando regrese al número con el que comenzó (comience con algo que no sea 0x00, 0x7f, 0x80 o 0xFF).
EDITAR
.globl inc inc: mov $33, %eax top: inc %al jo done jmp top done: ret .globl dec dec: mov $33, %eax topx: dec %al jo donex jmp topx donex: ret
Inc se desborda cuando pasa de 0x7F a 0x80. dec se desborda cuando pasa de 0x80 a 0x7F, sospecho que el problema está en la forma en que usa el ensamblador en línea.
Comentarios y calificaciones del tutorial
Nos encantaría que puedieras comunicar este post si te fue útil.