Solución:
El salto mismo comprueba las banderas en el registro EFL. Por lo general, se establecen con TEST o CMP (o como efecto secundario de muchas otras instrucciones).
CMP ebx,10
JLE there
- CMP corresponde a calcular la diferencia de los operandos, actualizar las banderas y descartar el resultado. Usado normalmente para cheques mayores / menores
- TEST corresponde al cálculo del AND binario de los operandos, actualizando los flags y descartando el resultado. Normalmente se utiliza para verificaciones de igualdad.
Ver también: El arte del lenguaje ensamblador en CMP
Como nota al margen: debe obtener los manuales de referencia de Intel. En particular, las dos partes “Manual del desarrollador de software de arquitecturas Intel® 64 e IA-32 Volumen 2: Referencia del conjunto de instrucciones”, que describe todas las instrucciones x86.
JLE
La instrucción lleva a cabo dos pruebas:
-
Bandera firmada (
SF
)! = Bandera de desbordamiento (OF
) -
Cero bandera (
ZF
) == 1
Si los indicadores de cero es 1 y el indicador firmado y el indicador de desbordamiento no son iguales, salto relativo corto será ejecutado.
Tal vez solo una palabra como CMP
la instrucción funciona. CMP
la instrucción es como SUB
(restar), pero el registro de destino no se actualizará después de la ejecución. Entonces el siguiente código realizará el mismo resultado como CMP ebx, 10. Las instrucciones CMP y SUB afectan a las banderas: banderas de acarreo, paridad, auxiliar, cero, señal y desbordamiento.
push ebx //store ebx value to stack
sub ebx, 10
pop ebx //restore ebx value from stack
El ensamblado x86 usa un sistema de indicadores de bits que representan el resultado de comparaciones. Las instrucciones de salto condicional utilizan estas banderas al decidir si realizar el salto o no.
En su caso, utilizaría las siguientes dos instrucciones:
cmp ebx, 10 ; compare EBX and 10
jle label ; jump if the previous comparison is "less than or equal"
…
label:
…