2012-09-02 20 views
5

Estoy usando MASM32.Llevar la bandera en la sustracción

Con este código: se establecerá

indicador de estado
mov eax,5 
sub eax,10 

CF. Pero usando mi lápiz y papel, realmente veo que no hay ningún acarreo de MSB. Sí, sé que a partir de la resta de un número menor, un gran número establece CF. Pero quiero saber por qué?

Debido a que el uso de este código: no se establece nunca

mov eax,5 
mov ebx,10 
not ebx 
add ebx,1 
add eax,ebx 

bandera CF.

+0

¿Es programación 8086 o qué? – nKandel

Respuesta

5
5 - 10 = 5 + (-10) = 0x05 + (0xF5 + 1) = 0x05 + 0xF6 = 0xFB 

    00000101 -- 0x05 
    11110101 -- 0xF5 
+ 00000001 -- 0x01 
========== 
    11111011 -- 0xFB 

Y esto continúa durante 16 o 32 o 64 bits 0 + 1 + 0 = 1, 0

llevan

usted tiene razón en el sentido de que es imposible llevar a cabo. Un resta es un complemento con el segundo operando invertido y el carry in invertido. Algunas familias de procesadores invierten el dinero en algunos dont. Parece que estás mirando algo que invierte el resultado en un resta.

Así que si 5 - 10 da llevar a cabo (pedir prestado), entonces intente 10 - 5 en el mismo procesador, no debería ver el bit de acarreo configurado (sin pedir prestado).

Su segundo ejemplo es una operación de agregar, la ejecución no se invierte en ningún procesador que yo sepa, apoyando aún más el bit de acarreo siendo la lógica positiva que indica un préstamo.

+1

Seguramente todos los x86 actúan de la misma manera en lo que respecta a la inversión del carry-out al restar? – harold

+0

a la derecha, es por eso que lo edité para decir familia de procesadores. Lo que quiero decir es que si comparas el indicador de acarreo entre x86, brazo, avr, msp430, 6502, z80, etc., algunos invierten, otros no. Dentro de una familia o incluso una empresa, espero que utilicen la misma solución. –

+1

oh ok, falló que – harold

1

En primera bandera bolsa de transporte se establece porque restado un mayor número de pequeños one.In segundo caso permite eax supongamos que es el bit de registro a continuación, 8

eax=00000101=05 
    ebx=00010000=10 
not ebx=11101111 
     +  1 
--------------------- 
     11110000 
     + 0101 
--------------------- 
     11110101 

No es desbordamiento se produce es decir no se establece ningún indicador de acarreo.

+2

el hardware produce la misma respuesta para sumar o restar, ya que se usa la misma lógica, la diferencia es cómo se maneja el acarreo para ese procesador. parece que esta familia de procesadores (x86) invierte invierte (además de llevar y segundo operando) para obtener un resta pero no inversiones para un agregado. –

Cuestiones relacionadas