jueves, 5 de marzo de 2009

SC. Do-While Bucle Igualdad

La finalidad de este apartado consiste en mostrar como diseñar sentencias de control, en este caso de repetición y cuyo bucle se repita hasta que la igualdad se cumpla, en este caso, que dos datos sean iguales.

Para tal fin, se empleará sentencias de control condicional-repetición tal como la Do-While.

La sintaxis en un lenguaje de medio-alto nivel es la siguiente:

do
{
sentencia; // Bloque de Código

}
while(Dato1 != Dato2);

La forma de actuar esta sentencia de control es la siguiente: Repetir la sentencia hasta Dato1 sea igual que Dato2.

La traducción a código ensamblador sería tal como sigue:

     ·····    ········

movlw numero
movwf Dato1 ; (W) -> Dato1

Do_While

     ·····    ········       ; Aqí el bloque de código a repetir

subwf Dato2,w ; Dato2 - (W) -> (W)
btfss STATUS,Z ; ¿Dato2 == Dato1?
goto Do_While ; NO -> Vuelve al bucle Do-While.

     ·····    ········     
Esta sentencia de control es sencilla, se repetirá el código del bucle Do-While hasta que Dato1 y Dato2 sean iguales.

Los ciclos de máquina que el código anterior por ciclo, son:

+1 +1 +(+1 +1 +Bloque_Código +2)·(Hasta que se cumpla la igualdad) +1 +2 +Bloque_Código = +5 +Bloque_Código +(+4 +Bloque_Código)·(Hasta que se cumpla la igualdad)

Como se puede observar, los códigos de máquina dependerá tanto del bloque de código que se quiera repetir su ejecución cómo de las veces que se repita el bucle Do-While, es decir, que se cumpla la condición de que Dato1 no sea igual que Dato2.

Este código es bastante versátil ya que la igualdad pueden ser variables o registros del microcontrolador.

0 comentarios: