CLASE 11 INSTRUCCIONES DE SALTO Y SENTENCIAS CONDICIONALES

Slides:



Advertisements
Presentaciones similares
MOVIMIENTO JOVENES DE LA CALLE CIUDAD DE GUATEMALA chi siamo quienes-somos qui sommes-nous who we are attività actividades activités activities scuola.
Advertisements

SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR
1 Datos sobre webloggers Datos extraidos de la encuesta a webloggers disponibles en la web de los autores.
ULTRASONDO EN RODILLA MENISCOS Y LIGAMENTOS
Estructuras de control
Instrucciones de operación sobre datos
Conocimiento, Uso y Evaluación de Medicamentos Genéricos
DATSI, FI, UPM José M. Peña Programación en C DATSI, FI, UPM José M. Peña Programación en C.
Los números del 0 al cero uno dos tres cuatro cinco 6 7 8
50 formas de decir “Te Amo”.
1 ESTUDIO DE OPINIÓN PÚBLICA: LA SEXUALIDAD DE LOS CHILENOS ABRIL 2006 ¿Informados o desinformados? Principal fuente de información Las enseñanzas durante.
Universidad San Martín de Porres
1 LA UTILIZACION DE LAS TIC EN LAS MICROEMPRESAS GALLEGAS. AÑO mayo 2005.
1 LA UTILIZACION DE LAS TIC EN LAS PYMES GALLEGAS AÑO de Junio de 2005.
1 INFORME RESUMEN SOBRE EL NIVEL DE UTILIZACION DE LAS TIC EN LAS EMPRESAS GALLEGAS ( Resumen PYMES ) Noviembre de 2004.
AYUDA A LA FUNCIÓN DOCENTE Internet
TEMA 5.- 1ª PARTE. EL A.O. Y SUS APLICACIONES
TEMA 2 MÚLTIPLOS Y DIVISORES
02- Plan Organización Docente v.2 Noviembre 2009 SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR.
02- PLAN DOCENTE Febrero 2009 SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR.
01- OFERTA FORMATIVA v.2 Noviembre 2009 SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR.
Aladdín-respuestas 1.Vivía 2.Era 3.Amaba 4.Quería 5.Gustaban 6.Se sentía 7.Salía 8.Tenía 9.Decidió 10.escapó 11. Se vistió 12. Conoció 13. Vio 14. Pensó
Respuestas Buscando a Nemo.
ABECEDARIO FIGURAS GEOMÉTRICAS NÚMERO
Objetivo: Los estudiantes van a usar vocabulario del desayuno para comprender un cuento. Práctica: 1. ¿Te gusta comer? 2. ¿Te gusta beber Mt. Dew.
Mulán /75 puntos. 1.Querían 2.Gustaban 3.Escuchó 4.Dijo 5.Tenía 6.Ayudaron 7.Maquillaron 8.Arreglaron 9.Dio 10.Estaba 11.Iba 12.Quería 13.Salió 14.Gritó
CLASE 4 EL ENSAMBLADOR.
CLASE 3 SOFTWARE DEL MICROPROCESADOR
1 Jeopardía TemasTramaPersonajesRecursos Autor Q $100 Q $200 Q $300 Q $400 Q $500 Q $100 Q $200 Q $300 Q $400 Q $500 Jeopardía Final.
1 XML Extensible Markup Language HTML HyperText Markup Language normas06_01.xml.
MOVIMIENTO JOVENES DE LA CALLE CIUDAD DE GUATEMALA chi siamo quienes-somos qui sommes-nous who we are attività actividades activités activities alimentazione.
C ONFIGURACIÓN C UENTAS D E C ORREO ZTE N281. C ONFIGURACIÓN C UENTAS D E C ORREO ZTE N281 1-Ingrese a menú 2-Ingrese a Mensajes 3-Ingrese a Correo 4-Seleccione.
60 razones para seguir vivo
1. Apoyo exterior sobre ala inferior de viga de acero
Distribuciones de probabilidad bidimensionales o conjuntas
Estrategias en el aula con alumnos con problemas de atención y comportamiento Curso Actividad formativa: Seminario CRA “Entreviñas” - Fuensaldaña.
1 Reporte Componente Impacto Por Orden Territorial Por Departamento No Disponible ND *Los indicadores para el año 2008 no fueron calculados.
Parte 3. Descripción del código de una función 1.
FUNCIONES DE UNA VARIABLE REAL
Calendario 2008 Imágenes variadas Venezuela Elaborado por: MSc. Lucía Osuna Wendehake psicopedagogiaconlucia.com Enero 2008.
EL OSO APRENDIZ Y SUS AMIGOS
50 principios 1. Los clientes asumen el mando.
1 PROYECTO DE PRESUPUESTO DE EGRESOS DE LA FEDERACION 2002 COORDINACIÓN DE POLITICA ECONOMICA GP-PRD.
Técnico en programación de Software
Ecuaciones Cuadráticas
C REACIÓN DE B LOGS EN ESPOL Profesora: Eva María Mera Intriago Escuela Superior Politécnica del Litoral Impulsando la sociedad del conocimiento Instituto.
La minimización de los costes
¡Primero mira fijo a la bruja!
¿Qué es un conjunto? Un conjunto es una colección de objetos considerada como un todo. Los objetos de un conjunto son llamados elementos o miembros del.
3. INTRODUCCIÓN A LA PROGRAMACIÓN
Suma, resta multiplicación y división de polinomios Scherzer
Números enteros.
0 1 ¿Qué hora es? By: Craig Tillmann Revised by: Malinda Seger Coppell High School Coppell, TX.
POLÍTICAS MACROECONÓMICAS Econ. SEGUNDO A. CALLE RUIZ Ms. Sc. C. D.
¿Quién? ¿Qué? ¿Dónde? ¿Cuándo? ¿Cómo? ¿Por qué?
REGLAS DE LOS SIGNOS.
Learning Zone Matemáticas 101
MSc. Lucía Osuna Wendehake
Calendario 2009 “Imágenes variadas” Venezuela Elaborado por: MSc. Lucía Osuna Wendehake psicopedagogiaconlucia.com Enero 2009.
Tema 3. Optimización de Código
SUCESIONES Y PROGRESIONES.
Estructuras de control
Manual de Procedimientos Procedimiento de ejecución del programa de
LA RECTA Y SUS ECUACIONES
Herramienta FRAX Expositor: Boris Inturias.
CHAPTER 4 VOCABULARY: PART II
FUNDAMENTOS DE CALIDAD EN LA GESTIÓN PÚBLICA
SENTENCIAS DE CONTROL Ing. José Antonio Poma G..
EXPRESIONES Y SENTENCIAS
Estructuras de Decisión
Transcripción de la presentación:

CLASE 11 INSTRUCCIONES DE SALTO Y SENTENCIAS CONDICIONALES

TEMA 1 INSTRUCCIONES DE SALTO

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.

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.

50 20 21 Saltar a 50 Segmento 1 Segmento 2 100 700 MEMORIA Salto NEAR: La flecha indica la siguiente orden a ejecutar.

20 21 Saltar a 100:35 Segmento 1 Segmento 2 100 MEMORIA 35 700 Salto FAR: La flecha indica la siguiente orden a ejecutar.

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.

INSTRUCCIÓN DE SALTO INCONDICIONAL (JMP): Sintaxis: JMP etiqueta Propósito: Salta a la instrucción cuya dirección esta dada por etiqueta.

Ejemplo: MOV AX, 5 MOV BL, 2 SEGUIR: DIV BL INC AX JMP SEGUIR

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:

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

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

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)

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

b. Tomándolos con signo: 0111 = +7 y 1010 = -6 como +7 > -6 0111 > 1010 ( Considerados con signo) ¡Las mismas dos cantidades dan comparaciones diferentes!

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.

TEMA 2 SENTENCIAS CONDICIONALES

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.

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 */ }

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

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: CMP AL, cte8 CMP CX, 2500 CMP var8[SI], BL

La instrucción se ha diseñado para hacer una 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.

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;

Implementación: IF10: MOV AL, a ; AL = 1er. operando CMP AL, b ; a > b? JLE ENDIF10 ; no: salir THEN10: MOV c, 5 ; si: ejecutar ENDIF10:

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.

LISTADO DE CONDICIONES Y SUS CONTRARIOS: (para operandos con signo) Condición Salto Normal Salto Contrario > JG JLE > = JGE JL = = JE JNE < = JLE JG < JL JGE ! = JNE JE

SENTENCIA IF-ELSE SIMPLE: Sintaxis: if (condición) instrucción1; else instrucción2; Ejemplo: if (a > b) c = 5; else c++;

Implementación: IF11:. MOV. AL, a. ; AL = 1er. operando. CMP. AL, b Implementación: IF11: MOV AL, a ; AL = 1er. operando CMP AL, b ; a es mayor que b? JLE ELSE11 THEN11: MOV c, 5 ; ejecutar para si JMP ENDIF11 ELSE11: INC c ; ejecutar para no ENDIF11:

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;

Implementación: IF11:. MOV. AL, a. ; AL = 1er. operando. CMP. AL, b Implementación: IF11: MOV AL, a ; AL = 1er. operando CMP AL, b ; a no mayor que b? JLE ENDIF11 ; no: salir AND11: CMP a, -7 ; a es diferente a -7? JE ENDIF11 THEN11: MOV c, 5 ; ejecutar la orden ENDIF11:

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;

Implementación: IF11: MOV AL, a ; AL = 1er. operando CMP AL, b ; a es mayor que b? JG ENDIF11 ; si: salir ( es negada) THEN11: MOV c, 5 ; ejecutar la orden ENDIF11:

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;

Implementación: IF11: MOV AL, a ; AL = 1er. operando CMP AL, b ; a es mayor que b? JG THEN11 ; si: ejecutar la orden OR11: CMP a, -7 ; a es diferente a -7? JE ENDIF11 ; no: salir THEN11: MOV c, 5 ; ejecutar la orden ENDIF11:

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:

if ( (a+b) > c. d && (. b || (a-5)<c/(3+a) ) ) {. a = 3; if ( (a+b) > c*d && ( ! b || (a-5)<c/(3+a) ) ) { a = 3; b = c+2; } else { c--; d = a*b; }

IF11:. MOV. BL, a. ADD. BL, b. ; BL = 1er. operando. MOV. AL, c. IMUL IF11: MOV BL, a ADD BL, b ; BL = 1er. operando MOV AL, c IMUL d ; AL = 2do. operando CMP BL, AL ; a+b > c*d? JLE ELSE11 ; no: ejecutar para no AND11: CMP b, 0 ; b diferente a 0? JE THEN11 ; si: ejecutar para si

OR11:. MOV. BL, a. SUB. BL, 5. ; BL = 1er. operando. MOV. CL, 3. ADD OR11: MOV BL, a SUB BL, 5 ; BL = 1er. operando MOV CL, 3 ADD CL, a MOV AL, c CBW IDIV CL ; AL = 2do. operando CMP BL, AL ; a - 5 < c/(3+a)? JGE ELSE11 ; no: ejecutar para no

THEN11:. MOV. a, 3. ; a = 3. MOV. AL, c. ADD. AL, 2 MOV. b, AL THEN11: MOV a, 3 ; a = 3 MOV AL, c ADD AL, 2 MOV b, AL ; b = c + 2 JMP ENDIF11 ELSE11: DEC c ; c-- MOV AL, a IMUL b MOV d, AL ; d = a * b ENDIF11:

TEMA 3 SENTENCIAS IF ANIDADAS Y EN ESCALERA

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:

if ( a>b ) if ( b>c ) if ( c>d ) a = 0; else a = 1; else a = 2; else a = 3;

IF11:. MOV. AL, a. CMP. AL, b. JLE. ELSE11 THEN11: IF12:. MOV. AL, b IF11: MOV AL, a CMP AL, b JLE ELSE11 THEN11: IF12: MOV AL, b CMP AL, c JLE ELSE12 THEN12: ...<sigue>...

IF13:. MOV. AL, c. CMP. AL, d. JLE. ELSE13 THEN13:. MOV. a, 0. JMP IF13: MOV AL, c CMP AL, d JLE ELSE13 THEN13: MOV a, 0 JMP ENDIF13 ELSE13: MOV a, 1 ENDIF13: JMP ENDIF12 ELSE12: MOV a, 2 ENDIF12: JMP ENDIF11 ELSE11: MOV a, 3 ENDIF11:

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:

if ( a>b ). x = 0; else. if ( a>c ). x = 1;. else. if ( a>d ) if ( a>b ) x = 0; else if ( a>c ) x = 1; else if ( a>d ) x = 2; else x = 3;

IF11:. MOV. AL, a. CMP. AL, b. JLE. ELSE11 THEN11:. MOV. x, 0. JMP IF11: MOV AL, a CMP AL, b JLE ELSE11 THEN11: MOV x, 0 JMP ENDIF11 ELSE11: IF12: MOV AL, a CMP AL, c JLE ELSE12 THEN12: MOV x, 1 JMP ENDIF12 ...<sigue>...

ELSE12: IF13:. MOV. AL, a. CMP. AL, d. JLE. ENDIF13 THEN13:. MOV. x, 2 ELSE12: IF13: MOV AL, a CMP AL, d JLE ENDIF13 THEN13: MOV x, 2 JMP ENDIF13 ELSE13: MOV x, 3 ENDIF13: ENDIF12: ENDIF11:

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:

switch ( a+b ). { case 7:. x = 0;. break; case 1:. x++; 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; }

SWITCH11: MOV AL, a ADD AL, b ; AL guarda la expresión CASE11: CMP AL, 7 JNE CASE12 MOV x, 0 JMP ENDSWITCH11 CASE12: CMP AL, 1 JNE CASE13 INC x JMP ENDSWITCH11

CASE13:. CMP. AL, -8. JNE. CASE14. DEC. x. JMP. ENDSWITCH11 CASE14: CASE13: CMP AL, -8 JNE CASE14 DEC x JMP ENDSWITCH11 CASE14: CMP AL, 6 JNE CASE15 JMP DOCASE15

CASE15:. CMP. AL, 4. JNE. DEFAULT11 DOCASE15:. MOV. x, 1. JMP CASE15: CMP AL, 4 JNE DEFAULT11 DOCASE15: MOV x, 1 JMP ENDSWITCH11 DEFAULT11: MOV x, -1 ENDSWITCH11:

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?

< FIN DE LA CLASE 11 >