This video tutorial focuses on demonstrating examples of selective structures in different programming languages. The instructor shows how to translate a basic selection structure (if-else) from C-like languages into assembly language, comparing two approaches: using conditional execution and using branching instructions. The video also touches upon more complex conditional expressions and their efficient implementation in assembly.
en la vídeo clase anterior vimos 1 ejemplo con los cuales podríamos obtener el equivalente a las funciones y en el set de otro lenguaje en esta ocasión vamos a centrarnos en ejemplos de la estructura selectiva objetivo realizar ejercicios equivalentes a la estructura y el cce de otros lenguajes la primera estructura de control que examinaremos es la de selección básica se llama selección porque selecciona uno de dos o posiblemente más bloques de código para ejecutar en función de alguna condición en su forma más general la condición podría calcularse de varias maneras pero más comúnmente es el resultado de alguna operación de comparación o el resultado de evaluar una expresión volea na la mayoría de los lenguaje de programación admiten la selección en forma de una declaración if de elche la selección se puede implementar muy fácilmente en lenguaje en salvador a rm con un proceso de dos etapas 1 realizar una operación que actualice los indicadores de cps ri2 utilizar la ejecución condicional para seleccionar un bloque de instrucción para ejecutar el programa mostrado en la diapositiva es una estructura típica if de en el cnc el funcionamiento de solicitar dos números enteros calcular el valor de x tomando en cuenta que si a es menor que b x va a ser igual a 1 y en caso contrario se asigna 0 a x en la diapositiva se muestra el código equivalente en ensamblador usando la ejecución condicional y el den y el pse se escriben con una instrucción cada uno en las líneas 40 y 41 la sección d se escribe como una instrucción condicional con la condición lt adjunta la sección el c es una sola instrucción con la condición opuesta g por lo tanto sólo una de las dos instrucciones se ejecutará realmente dependiendo de los resultados de la instrucción cmp en la línea 39 si hay tres o menos instrucciones en cada bloque de en el c entonces este método es el preferido y más eficiente es que escribir secciones separadas para d y el c las otras secciones del programa son para la captura y salida de los datos y la sección de datos en la sección de datos podemos observar que definimos las variables a utilizar en las líneas 2 a 4 todas con un espacio de una palabra es decir 32 bits o 4 ahí además observemos que en la línea de las 6 a la 8 se han definido los mensajes que se utilizarán en la función pringue efe y también el formato que se utilizará en escane efe ya en la sección main guardamos el registro de enlaces en la pila del programa recuerde que esto se hace porque puede ser modificado por la función print efe aunque en este caso no sería necesario porque no se hace ninguna llamada alguna su rutina luego se empieza a mostrar el mensaje descriptivo y la captura de las variables a ive recordemos que el mensaje a mostrará en la función prime efe se carga en el registro ere 0 y si hay parámetro a mostrar se cargan a partir del registro r1 una vez capturados los valores de ahí ve los pasamos a los registros r 5 y 6 respectivamente esto se hace en las líneas 34 a la 37 para posteriormente realizar la comparación la estructura if de elche está compuesta por las líneas 39 a la 41 en la sección final mostramos el mensaje con el valor de la variable x ahora veamos la versión ve usando instrucciones de bifurcación o salto veamos sólo la sección de código que tendrá cambios las líneas desde 1 hasta 38 se mantiene igual a la versión tenga en cuenta que este método requiere un salto condicional línea 40 instrucción deje saltar si es mayor o igual un salto incondicional línea 42 instrucción vale y dos etiquetas línea 44 y un bajo ese y 45 guión bajo continúe si hay más de tres instrucciones en cualquiera de los bloques básicos entonces este es el método preferido y más eficiente para escribir los cuerpos de las selecciones de y el pse cuando la condición de la estructura de selección es más compleja deben escribirse con cuidado la diapositiva muestra un fragmento de código en lenguaje ce que compara la variable a b y c y establece la variable x en el menor de los tres valores en c la expresión es poliana usan la evaluación de cortocircuito por ejemplo considera el operador bolea no an en la expresión a menor que b y a menor que se si la primera su expresión se evalúa como falsa entonces el valor de la expresión completa se puede determinar inmediatamente como falsa por lo que la segunda azuca expresión no se evalúa esto generalmente hace que el compilador genere un código de ensamblador muy eficiente ahora veamos el listado de un fragmento de código en salvador que es equivalente al código en sí en este fragmento de código r 0 se usa para almacenar un valor tiempo temporal para la variable x y el valor sólo se almacena en la memoria una vez al finalizar el fragmento de código la instrucción externa if de en el set se implementa utilizando instrucciones de bifurcación la primera comparación se realiza en la línea 8 si la comparación se evalúa como falsa inmediatamente se bifurca al bloque el pse más externo de la declaración de elx pero si la primera comparación se evalúa como verdadera entonces realiza la segunda comparación en la línea 10 nuevamente si esa comparación se evalúa como falsa se bifurca al bloque el pse del bloque y en el c más externo si ambas comparaciones se evalúan como verdaderas entonces se ejecuta el bloque de de la instrucción externa y de engels y luego se ramifica a la instrucción que sigue al bloque el c la instrucción y fde en el set en la línea 5 del listado en si se implementa usando ejecución condicional la comparación se realiza en la línea 14 de la versión en ensamblador la línea 15-16 contiene instrucciones que se ejecutan condicionalmente como tienen condiciones complementarias se garantiza que uno de ellos moverá un valor a r 0 la comparación en la línea 14 determina qué declaración se ejecute al escribir la estructura de selección anidadas es importante mantener una estructura de bloques incluso si lo cuerpo de los bloques consisten en una sola instrucción a menudo es muy útil escribir el algoritmo en pseudo código o un lenguaje de alto nivel como se llama antes de convertirlo en ensamblador comentar el código también se recomienda encarecidamente cambia tu pensamiento y cambiarás tu mundo hasta la próxima