Empecemos por el salto sin condiciones, con el que podremos cambiar el control a cualquier punto del programa. 2.6.3 Instrucciones De Saltos
Sería como el “Goto” del Basic, símplemente transferir el control a otro punto del programa. La orden es
JMP ( de Jump, salto )
Si record is a estas alturas los registros CS:IP, se podra ver que‚ es lo que hace realmente la instrucción, y no es mas 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 mas sencillo para el salto sería JMP 03424h, lo que saltaría a esa zona.
Pero es digamos que “algo pesado” calcular en que‚ dirección va a estar esa instrucción, con lo que utilizaremos etiquetas. Aquí hay un ejemplo, en el que de paso se repasa un poco:
MOV AX,0CC34h
MOV CL,22h
JMP PALANTE
VUELVE: CMP BX,AX
JMP FIN
PALANTE: MOV BX,AX
JMP VUELVE
FIN: XOR CX,CX
Ahora voy a comentar un poco el programa. Tras la primera instrucción, AX vale 0CC34h, y tras la segunda, CL vale 22h. Despues se realiza un salto a la instrucción etiquetada con “PALANTE”.
La etiqueta ha de estar continuada por dos puntos ‘:’, y puede ser llamada desde cualquier lugar del programa. Tambi‚n podremos hacer un MOV AX,[PALANTE], como hacíamos antes con un MOV AX,[BX], pero asignando a AX el valor que haya en la dirección en la que esta “PALANTE”.
El caso, que tras el salto a “PALANTE”, se copia el valor del registro BX en AX, y se vuelve a “VUELVE”. Se realiza una comparación entre AX y BX, que pondr el flag de cero a 1 ( recordemos la anterior lección ), se saltar a “FIN”, donde tan sólo se realizar la orden Xor CX,CX cuyo resultado, por cierto, es poner CX a cero tenga el valor que tenga ( y esto se utilizar bastante programando, por eso me ha dado por incluir la orden ).