Duda con respecto a la instrucción CMP del microprocesador 8086

1

En 8085, hemos aprendido que el indicador de acarreo es SET, cuando el contenido de la memoria excede al del acumulador y que, la comparación es siempre con respecto al acumulador. Pero en 8086, la comparación no siempre toma lugar con respecto al acumulador. Entonces, ¿cómo es el indicador de acarreo SET o RESET en este caso?

    
pregunta Susan

1 respuesta

2

La instrucción cmp (comparar) es idéntica a la instrucción de resta (resta sin préstamo) con una diferencia importante: no almacena la diferencia en el operando de destino.

La sintaxis de una instrucción de resta es:

sub    dest, src        dest = dest - src and set flags

La forma genérica de la instrucción es:

cmp     dest, src       perform dest - src and set flags

así que dest es un nombre poco apropiado en este caso, ya que no se almacena nada.

El indicador de acarreo C se establece después de una operación cmp si restar src de dest requiere un préstamo. Esto ocurre solo cuando dest es menor que src donde dest y src son valores sin signo. Para los operandos firmados, la bandera C no tiene significado.

Las diversas formas son (en cada caso, la primera operación es dest, la segunda es src):

cmp     reg, reg
cmp     reg, mem
cmp     mem, reg
cmp     reg, immediate data
cmp     mem, immediate data
cmp     eax/ax/al, immediate data 

Para completar, aquí está el resumen de las otras banderas:

El indicador cero Z se establece si y solo si dest = src.

Los indicadores de signo S y O de desbordamiento solo son válidos si los operandos se consideran firmados (es decir, justo lo contrario del indicador C).

Para las comparaciones firmadas, las banderas S (signo) y O (desbordamiento), en conjunto, tienen el siguiente significado:

Si ((S = 0) y (O = 1)) o ((S = 1) y (O = 0)), dest < src

Si ((S = 0) y (O = 0)) o ((S = 1) y (O = 1)), dest > = src

    
respondido por el tcrosley

Lea otras preguntas en las etiquetas