sábado, 4 de septiembre de 2010

ARQUITECTURA

Deber # 1

Realizar una caratula en el debug




 
¿Como utilizamos los blucle en Lenguaje Emsamblador?

Funcionamiento:
En ensamblador los bucle, condicionales, subrutinas y demás elementos se codifica de forma distinta

de cómo se hace en otros lenguajes de alto nivel. A continuación describiremos algunas técnicas útiles BUCLES:

Inicialización de un registro(a modo de contador) al nº de vueltas del bucle

Etiqueta: Primera instrucción del bucle

<resto de instrucciones dentro del bucle>

decrementar el contador

saltar a la etiqueta si el contador es mayor que cero

<instrucciones fuera del bucle>

Saltos condicionales:

Instrucción de comparación

Evaluar condición y si se cumple saltar a la etiqueta prefijada

<instrucciones para el caso de no cumplirse la condición>

saltar fuera del condicional

MACROS:

Declaración:

<nombre de la macro> Macro

<instrucciones de la macro>

endm.

BLUCLE SWITCH
El programa interpreta el valor de la variable almacenándolo en una zona de memoria temporal (oculta). Después lo compara con el valor seguido de cada case, y si coincide, realiza el flujo de acciones correspondientes,

hasta encontrar un break, con el que finalizará el Switch. Es muy importante saber que, en el momento en el que se realiza la accionI (para I < N), se ejecutarán todas las acciones entre I y N mientas no se encuentre la instrucción break.

Switch case

El switch no es tan popular como el if, pero se utiliza con regularidad en la programación. En principio la funcionalidad de un switch también se puede implementar con múltiples ifs anidados. En el caso de que hayan muchas acciones dependientes de muchos valores iniciales, es recomendable su uso, favoreciendo la switch es más legibilidad y rapidez en la programación

La nomenclatura

Switch( variable ){

case valor1: accion1; (*)

case valor2: accion2; (*)

...

case valorN: accionN; (*)



default: accionD; (**)

}

(**) La acción default es usada para los valores que no correspondieron en casos anteriores, y puede aparecer, aparecer sin acciónD, e incluso, con el break al final; aunque su compilación optimizada no lo suele tratar.

(*) En estos huecos, al final de las acciones accion1, accion2,... incluso después de la accionD, normalmente se suele usar un break para salir del switch. Su uso, generalizado, permite realizar programas que, por ejemplo, se comportan de diferente modo por cada entrada:

Switch( número )

{

case 0: escribir("No hay elementos.");

break;

case 1: escribir("Hay solo un elemento.");

break;

case default: escribir("Hay " número " elementos"); /* break; */

}

En ese ejemplo, es necesario el uso de los break, excepto el último (que está entre comentarios y por lo tanto no se ejecutará) para el correcto funcionamiento del programa que hemos realizado. Este lo que hace es, dependiendo si el número que llega por la variable número es 0, 1 u otro cualquiera, escribir que No hay elementos, Hay solo un elemento o Hay numero elementos respectivamente.

En cambio, el uso del switch puede ser interesante sin recurrir a los break al final de las acciones, por ejemplo, en este otro programa:

Switch( paso )

{

case 1: escribir("Paso 1 (ponerse cómodo) sin finalizar. ");

case 2: escribir("Paso 2 (regular espejos) sin finalizar. ");

case 3: escribir("Paso 3 (abrochar cinturón) sin finalizar. ");

case 4: escribir("Paso 4 (arrancar motor) sin finalizar. ");

}

usando la estructura Switch case:

switch( variable ){

case valor1:

case valor2:

accion12;

break;



case valor3:

case valor4:

accion34;

break;



default:

accionD;

}

También sirve, al aplicar Álgebra de Boole, para concatenaciones de ands sobre una misma variable para acciones de exclusión. Esto evita usar de forma iterativa en nuestros códigos la cadena variable == y los operadores lógicos and.

Blucle while

Mientras la condición se mantenga verdadera, el bloque de instrucciones dentro de las llaves se ejecutará "x" cantidad de veces. Es necesario que alguna vez la condición se haga falsa, pues de lo contrario se entraría en un ciclo infinito de repeticiones (bucle infinito) y el programa se consideraría bloqueado. Por lo tanto es necesario que en el bloque de instrucciones dentro de la estructura while, se ejecute alguna acción que en algún momento haga que la condición sea falsa



Un ejemplo del funcionamiento de la estructura de repetición while:
int num;
num = 0;

while (num<=10)

{

printf(“Repetición numero %d

”, num);

num = num + 1;

};

BLUCLE FOR

1)se inicializan las variables s en 0 y j en 1

2) el for hace repeticiones, partiendo desde 0 (j=0) hasta diez, y en cada vuelta suma 1 a j. Empieza con j 0, mientras j sea menor o igual a 10, va a realizar todo loq ue este dentro del for, y en cada vuelta suma 1 a J.

Esto significa que cada vuelta que de el for, j se ira incrementando en 1, por lo que teniendo encuentra el limite (10) dara un total de 11 vueltas.

el modelo del for es (inicio, fin, suma_iteracion).

Lo que esta adentro del for es una suma que se incrementa en cada vuelta.







No hay comentarios:

Publicar un comentario