El salto cercano: se realiza contando
como distancia el contenido de dos
bytes, o sea, que el rango sería desde
32767 a -32768 bytes de distancia.
El salto lejano: se realiza contando
como distancia el contenido de cuatro
Bytes.
El salto corto: se realiza entre el
punto en el que se está y +127 o -128,
o sea, la cantidad que se puede
contener en un byte con signo.
Etiquetas
Son nombres que sirven para referirse a otras lineas de
instrucciones del programa, y la verdad es que son muy
utilizadas por que muchas veces nececitamos realizar saltos
(ya sean condicionales o incondicionales) a otras parte del
programa.
Instrucciones de testeo
TEST, Comparar. Compara mediante un AND
lógico los operandos origen y destino; no
almacena los resultados, pero sí modifica los
flags.
Saltos Condicionales
Se basan completamente en los flags, pero están simplificados. Los saltos podrían resumirse en un
modo "Basic" de la manera IF-THEN-GOTO de forma que cuando se cumple una condición se salta
a un sitio determinado. He aquí los tipos de saltos condicionales (las letras en mayúsculas son las
instrucciones): TEST TEST, Comparar. Compara mediante un AND lógico los operandos origen y
destino; no almacena los resultados, pero sí modifica los flags.
Saltos Incondionales
Empecemos por el salto sin condiciones, con el que podremos cambiarel control a cualquier punto
del programa. Sería como el "Goto" del Basic,simplemente transferir el control a otro punto del
programa. La orden es JMP (de Jump, salto). Si se recuerdan los registros CS:IP, se podrá ver qué es lo
que hace realmente la instrucción, y no es más que incrementar o decrementar IP para llegar a la
zona del programa a la que queremos transferir el control (IP es el Offset que indica la zona de
memoria que contiene la siguiente instrucción a ejecutar, y CS el segmento). El formato más
sencillo para el salto sería JMP 03424h, lo que saltaría a esa zona. Pero es algo complejo calcular en
qué dirección va a estar esa instrucción, con lo que utilizaremos etiquetas. He aquí un ejemplo:
MOV AX,0CC34h, MOV CL,22h, JMP PALANTE, VUELVE: CMP BX,AX, JMP FIN, PALANTE: MOV BX,AX, JMP
VUELVE, FIN: XOR CX,CX
Decisiones
Estructuras condicionales y ciclos: Estas estructuras
son las que dirigen el flujo de ejecución de un
programa
Bucles
Se trata de la orden LOOP. Lo que hace esta orden es comparar CX con cero; si es igual, sigue
adelante, si no lo es, vuelve al lugar que se indica en su operando decrementando CX en uno. Por lo
tanto, CX será un contador de las veces que ha de repetirse el bucle. Veamos un ejemplo: MOV
CX,0005h, bucle: INC , DX CMP DX,0000h JE Acaba LOOP bucle Acaba.