La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

PBN - 11 - 1 © Jaime Alberto Parra Plaza CLASE 11 INSTRUCCIONES DE SALTO Y SENTENCIAS CONDICIONALES.

Presentaciones similares


Presentación del tema: "PBN - 11 - 1 © Jaime Alberto Parra Plaza CLASE 11 INSTRUCCIONES DE SALTO Y SENTENCIAS CONDICIONALES."— Transcripción de la presentación:

1 PBN © Jaime Alberto Parra Plaza CLASE 11 INSTRUCCIONES DE SALTO Y SENTENCIAS CONDICIONALES

2 PBN © Jaime Alberto Parra Plaza TEMA 1 INSTRUCCIONES DE SALTO

3 PBN © Jaime Alberto Parra Plaza Una instrucción de salto tiene por objetivo continuar la ejecución del programa en una instrucción diferente a la siguiente, alterando la secuencia normal del programa. Esto permite crear ciclos y condiciones. Físicamente, una orden de salto realiza su labor cambiando el contenido del registro IP (y si se requiere también el de CS), el cual contiene el desplazamiento de la próxima instrucción a ejecutar.

4 PBN © Jaime Alberto Parra Plaza Se habla de dos clases de saltos, de acuerdo a su alcance: a. Salto cercano (NEAR): Sólo se cambia el valor de IP, así que el salto es restringido al interior del segmento actual. b. Salto lejano (FAR): Se cambian IP y CS, así que la nueva instrucción estará en un segmento diferente.

5 PBN © Jaime Alberto Parra Plaza Saltar a 50 Segmento 1 Segmento MEMORIA Salto NEAR: La flecha indica la siguiente orden a ejecutar.

6 PBN © Jaime Alberto Parra Plaza Saltar a 100:35 Segmento 1 Segmento MEMORIA Salto FAR: La flecha indica la siguiente orden a ejecutar.

7 PBN © Jaime Alberto Parra Plaza Según su tipo, el salto puede ser: a. Condicional: El salto se hace si se cumple una condición predeterminada, en caso contrario se continúa con la instrucción siguiente. b. Incondicional: El salto se realiza sin más requisitos.

8 PBN © Jaime Alberto Parra Plaza INSTRUCCIÓN DE SALTO INCONDICIONAL (JMP): Sintaxis: JMP etiqueta Propósito: Salta a la instrucción cuya dirección esta dada por etiqueta.

9 PBN © Jaime Alberto Parra Plaza Ejemplo: MOVAX, 5 MOVBL, 2 SEGUIR:DIVBL INCAX JMPSEGUIR

10 PBN © Jaime Alberto Parra Plaza INSTRUCCIONES DE SALTO CONDICIONAL (Jx): Es un conjunto de instrucciones, cada una de las cuales evalúa una condición que corresponde al último resultado dado por la ALU. La clasificación se hace según el tipo de operandos que se asociarán a la operación aritmética u operación lógica realizada:

11 PBN © Jaime Alberto Parra Plaza a. OPERANDOS SIN SIGNO: JA= Salta si superior JAE= Salta si superior o igual JE= Salta si igual JBE= Salta si inferior o igual JB= Salta si inferior JNE= Salta si diferente

12 PBN © Jaime Alberto Parra Plaza b. OPERANDOS CON SIGNO: JG = Salta si mayor JGE = Salta si mayor o igual JE = Salta si igual JLE = Salta si menor o igual JL = Salta si menor JNE = Salta si diferente

13 PBN © Jaime Alberto Parra Plaza c. OTROS: JC= Salta si hay acarreo (flag carry = 1) JNC= Salta si no hay acarreo (flag carry = 0) JZ= Salta si cero (flag zero = 1) JNZ= Salta si no cero (flag zero = 0)

14 PBN © Jaime Alberto Parra Plaza Al comparar dos cantidades pueden obtenerse resultados diferentes si se asumen con o sin signo: Sean los números 0111 y a. Tomándolos sin signo: 0111 = 7 y1010 = 10 como 7 < < 1010 (Considerados sin signo)

15 PBN © Jaime Alberto Parra Plaza b. Tomándolos con signo: 0111 = +7y1010 = -6 como +7 > > 1010 ( Considerados con signo) ¡Las mismas dos cantidades dan comparaciones diferentes!

16 PBN © Jaime Alberto Parra Plaza Si se sabe que los operandos no son signados (por ejemplo, caracteres) se debe usar el grupo de saltos (a), pero si los operandos corresponden a valores númericos con signo, el grupo a usar es el (b). Es el programador quien decide qué tipos de operandos usa y qué comparación es la adecuada.

17 PBN © Jaime Alberto Parra Plaza TEMA 2 SENTENCIAS CONDICIONALES

18 PBN © Jaime Alberto Parra Plaza SENTENCIAS CONDICIONALES: Todas las sentencias de control en un HLL pueden catalogarse como iterativas o condicionales. En principio, todas pueden transformarse en una operación if acompañada, en algunos casos, de órdenes de salto.

19 PBN © Jaime Alberto Parra Plaza SENTENCIAS CONDICIONALES IF: La sentencia if tiene la sintaxis: if (expr1 && expr 2 || expr3... exprn) { /* bloque para condición verdadera*/ } else { /*bloque para condición falsa */ }

20 PBN © Jaime Alberto Parra Plaza Las herramientas en ensamblador para construirla son: Instrucciones aritméticas y lógicas para crear las expresiones Instrucciones de comparación para implementar las condiciones Instrucciones de salto para seleccionar el código a ejecutar

21 PBN © Jaime Alberto Parra Plaza INSTRUCCIÓN DE COMPARACIÓN (CMP): Sintaxis: CMP operando1, operando2 Propósito: Hace una resta de operando2 a operando1, pero no guarda el resultado. Ejemplos:CMPAL, cte8 CMPCX, 2500 CMPvar8[SI], BL

22 PBN © Jaime Alberto Parra Plaza La instrucción se ha diseñado para hacer una evaluacion lógica de una expresión (Verdadero, Falso) y poder implementar sentencias de decisión. Usualmente, después de esta instrucción, vendrá inmediatamente una instrucción de salto.

23 PBN © Jaime Alberto Parra Plaza SENTENCIA IF SIMPLE: Sintaxis: if (condición) instrucción; La instrucción se ejecuta si la condición es VERDADERA (diferente de 0). Ejemplo: if (a > b) c = 5;

24 PBN © Jaime Alberto Parra Plaza Implementación: IF10: MOVAL, a; AL = 1er. operando CMP AL, b ; a > b? JLE ENDIF10 ; no: salir THEN10: MOVc, 5 ; si: ejecutar ENDIF10:

25 PBN © Jaime Alberto Parra Plaza Los nombres de las etiquetas no son palabras especiales, se usan éstas para que sea fácil seguir la lógica del salto. Observe que se utiliza un salto que evalúa la condición contraria a la que aparece en el lenguaje de alto nivel, es decir, el salto indica cuándo salir de la sentencia.

26 PBN © Jaime Alberto Parra Plaza LISTADO DE CONDICIONES Y SUS CONTRARIOS: (para operandos con signo) Condición Salto Normal Salto Contrario >JG JLE > =JGE JL = =JE JNE < =JLE JG

27 PBN © Jaime Alberto Parra Plaza SENTENCIA IF-ELSE SIMPLE: Sintaxis: if (condición) instrucción1; else instrucción2; Ejemplo: if (a > b) c = 5; else c++;

28 PBN © Jaime Alberto Parra Plaza Implementación: IF11: MOVAL, a; AL = 1er. operando CMPAL, b; a es mayor que b? JLEELSE11 THEN11: MOVc, 5 ; ejecutar para si JMPENDIF11 ELSE11: INCc ; ejecutar para no ENDIF11:

29 PBN © Jaime Alberto Parra Plaza SENTENCIA IF CONDICIÓN AND: La intrucción se ejecuta si todas las condiciones son VERDADERAS. Sintaxis: if (condición1 and condición2) instrucción; Ejemplo: if (a > b && a != -7) c = 5;

30 PBN © Jaime Alberto Parra Plaza Implementación: IF11: MOVAL, a; AL = 1er. operando CMPAL, b ; a no mayor que b? JLEENDIF11 ; no: salir AND11: CMPa, -7 ; a es diferente a -7? JEENDIF11 THEN11: MOVc, 5 ; ejecutar la orden ENDIF11:

31 PBN © Jaime Alberto Parra Plaza SENTENCIA IF CONDICIÓN NOT: La instrucción se ejecuta si la condición es FALSA. Sintaxis: if (!condición) instrucción; Ejemplo: if ( !(a > b) ) c = 5;

32 PBN © Jaime Alberto Parra Plaza Implementación: IF11: MOVAL, a; AL = 1er. operando CMPAL, b ; a es mayor que b? JGENDIF11; si: salir ( es negada) THEN11: MOVc, 5 ; ejecutar la orden ENDIF11:

33 PBN © Jaime Alberto Parra Plaza SENTENCIA IF CONDICIÓN OR: La instrucción se ejecuta si una o más de las condiciones son VERDADERAS. Sintaxis: if ( condición1 or condición2) instrucción; Ejemplo: if ( a > b || a != -7) c = 5;

34 PBN © Jaime Alberto Parra Plaza Implementación: IF11: MOVAL, a; AL = 1er. operando CMPAL, b; a es mayor que b? JGTHEN11 ; si: ejecutar la orden OR11: CMPa, -7 ; a es diferente a -7? JEENDIF11; no: salir THEN11: MOVc, 5 ; ejecutar la orden ENDIF11:

35 PBN © Jaime Alberto Parra Plaza SENTENCIA IF GENÉRICA: Los ejemplos anteriores han buscado resaltar la forma en que se implementa cada posibilidad básica. Ahora es posible unirlas todas, junto con la creación de expresiones, para formar sentencias condicionales de alta complejidad:

36 PBN © Jaime Alberto Parra Plaza if ( (a+b) > c*d && ( ! b || (a-5)

37 PBN © Jaime Alberto Parra Plaza IF11: MOVBL, a ADDBL, b; BL = 1er. operando MOVAL, c IMULd ; AL = 2do. operando CMPBL, AL; a+b > c*d? JLEELSE11; no: ejecutar para no AND11: CMPb, 0 ; b diferente a 0? JETHEN11; si: ejecutar para si

38 PBN © Jaime Alberto Parra Plaza OR11: MOVBL, a SUBBL, 5; BL = 1er. operando MOVCL, 3 ADDCL, a MOVAL, c CBW IDIVCL; AL = 2do. operando CMPBL, AL; a - 5 < c/(3+a)? JGEELSE11; no: ejecutar para no

39 PBN © Jaime Alberto Parra Plaza THEN11: MOVa, 3 ; a = 3 MOVAL, c ADDAL, 2 MOVb, AL; b = c + 2 JMPENDIF11 ELSE11: DECc ; c-- MOVAL, a IMULb MOVd, AL; d = a * b ENDIF11:

40 PBN © Jaime Alberto Parra Plaza TEMA 3 SENTENCIAS IF ANIDADAS Y EN ESCALERA

41 PBN © Jaime Alberto Parra Plaza SENTENCIA IF ANIDADA: Ocurre cuando el cuerpo de una instrucción if es, a su vez, otra sentencia if. Este esquema puede, eventualmante, repetirse en cuantos niveles de anidamiento se requiera:

42 PBN © Jaime Alberto Parra Plaza if ( a>b ) if ( b>c ) if ( c>d ) a = 0; else a = 1; else a = 2; else a = 3;

43 PBN © Jaime Alberto Parra Plaza IF11:MOVAL, a CMPAL, b JLEELSE11 THEN11: IF12:MOVAL, b CMPAL, c JLEELSE12 THEN12:...

44 PBN © Jaime Alberto Parra Plaza IF13:MOVAL, c CMPAL, d JLEELSE13 THEN13:MOVa, 0 JMPENDIF13 ELSE13:MOVa, 1 ENDIF13:JMPENDIF12 ELSE12:MOVa, 2 ENDIF12:JMPENDIF11 ELSE11:MOVa, 3 ENDIF11:

45 PBN © Jaime Alberto Parra Plaza SENTENCIA IF EN ESCALERA: Se produce cuando después del else se sigue otro if el cual también posee su propio else con un if subsiguiente:

46 PBN © Jaime Alberto Parra Plaza if ( a>b ) x = 0; else if ( a>c ) x = 1; else if ( a>d ) x = 2; else x = 3;

47 PBN © Jaime Alberto Parra Plaza IF11:MOVAL, a CMPAL, b JLEELSE11 THEN11:MOVx, 0 JMPENDIF11 ELSE11: IF12:MOVAL, a CMPAL, c JLEELSE12 THEN12:MOVx, 1 JMPENDIF12...

48 PBN © Jaime Alberto Parra Plaza ELSE12: IF13:MOVAL, a CMPAL, d JLEENDIF13 THEN13:MOVx, 2 JMPENDIF13 ELSE13:MOVx, 3 ENDIF13: ENDIF12: ENDIF11:

49 PBN © Jaime Alberto Parra Plaza SENTENCIA SWITCH: Una sentencia switch es muy similar a una escalera if-else. La diferencia radica en que, en el switch, se compara la expresión condicional contra un conjunto de constantes, en tanto que en la escalera se puede comparar contra otras expresiones:

50 PBN © Jaime Alberto Parra Plaza switch ( a+b ){ case 7:x = 0; break; case 1:x++; break; case -8:x--; break; case 6: case 4:x = 1; break; default:x = -1;}

51 PBN © Jaime Alberto Parra Plaza SWITCH11:MOVAL, a ADDAL, b ; AL guarda la expresión CASE11:CMPAL, 7 JNECASE12 MOVx, 0 JMPENDSWITCH11 CASE12:CMPAL, 1 JNECASE13 INCx JMPENDSWITCH11

52 PBN © Jaime Alberto Parra Plaza CASE13:CMPAL, -8 JNECASE14 DECx JMPENDSWITCH11 CASE14:CMPAL, 6 JNECASE15 JMPDOCASE15

53 PBN © Jaime Alberto Parra Plaza CASE15:CMPAL, 4 JNEDEFAULT11 DOCASE15:MOVx, 1 JMPENDSWITCH11 DEFAULT11:MOVx, -1 ENDSWITCH11:

54 PBN © Jaime Alberto Parra Plaza PREGUNTA 11: ¿Por qué los saltos condicionales están restringidos a sólo 128 bytes de distancia máxima desde el punto de origen (explicaciones software y hardware)? ¿Qué efectos tiene el qualificador short cuando se aplica a una orden de salto incondicional. Cuándo se recomienda usarlo?

55 PBN © Jaime Alberto Parra Plaza


Descargar ppt "PBN - 11 - 1 © Jaime Alberto Parra Plaza CLASE 11 INSTRUCCIONES DE SALTO Y SENTENCIAS CONDICIONALES."

Presentaciones similares


Anuncios Google