12 de marzo de 2011

Instrucciones de salto ensamblador

Cuando escribes un programa, la mayoría de las veces incluyes instrucciones de decisión como "if..then..", de este modo tu programa podrá ejecutar diferentes secuencias en función de un valor. Por ejemplo, cuando se consulta un sensor de rebose, si no está activo, el motor está parado (bucle) pero si se activa, tu programa ejecutará otra secuencia (activar motor), en estos casos tenemos dos caminos de ejecución diferentes (salto de secuencia).



Cuando escribes en ensamblador, no puedes usar instrucciones tipo "if...then..", debes utilizar las instrucciones máquina del micro que estás programando. Se debe mirar en la hoja de datos y buscar las instrucciones de salto. En la siguiente figura puedes verlas:

Normalmente las instrucciones de salto comprueban una condición para saltar, por ejemplo "DJNZ Rn.." comprueba si el registro "n" ha llegado a cero..o la instrucción "JZ rel.." que salta si el registro "A" es cero.

Pero si lo que queremos es que el programa salte siempre, como una instrucción "GOTO", entonces debemos utilizar instrucciones de salto como "SJMP rel". Es la instrucción ideal para poner al final del programa para que vuelva al principio como si hubiéramos escrito en C un "while(1)"..

No hay comentarios: