Clase 10 - Control de flujo - Pontificia Universidad...

Info iconThis preview shows pages 1–3. Sign up to view the full content.

View Full Document Right Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: Pontificia Universidad Cat´olica de Chile Escuela de Ingenier´ ıa Departamento de Ciencia de la Computaci´on IIC2343 Arquitectura de Computadores Segundo Semestre 2010 Clase 10: Control de flujo c circlecopyrt Alejandro Echeverr´ ıa 1. Motivaci´on La capacidad de controlar el flujo de un programa es esencial para permitir que este realice decisiones e iteraciones. Debido a esto, debemos incorporar este elemento tanto de nivel del hardware del computador, como a nivel de software, para poder desarrollar programas complejos. 2. Salto incondicional 2.1. Instrucci´on de salto incondicional El c´ odigo presentado en la tabla 1, genera la serie de Fibonacci almancenando los n´umeros alternadamente en los registros A y B. Para aumentar la cantidad de n´umeros de la secuencia, con las instrucciones y el computador que llevamos construido, la ´unica alternativa es repetir las instrucciones de suma cuantas veces lo necesitemos. Direcci´ on Instrucci´on Operandos A B 0x00 MOV A,0 ? 0x01 MOV B,1 1 0x02 ADD A,B 1 1 0x03 ADD B,A 1 2 0x04 ADD A,B 3 2 0x05 ADD B,A 3 5 0x06 ADD A,B 8 5 0x07 ADD B,A 8 13 Tabla 1: Programa que genera secuencia limitada de Fibonacci. Una alternativa a esto ser´ ıa tener la capacidad de saltar a una instrucci´on previa de manera de poder repetirla, sin perder el valor de los registros. Para poder lograr esto, debemos agregar uns intrucci´ on que permita saltar hacia otra instrucci´on, indicandole la direcci´ on de memoria dond esta almacenada. Esta instrucci´on se conoce como salto incondicional y en nuestro assembly ocuparemos el nombre JMP ( a40a40 jump a41a41 o salto) para referirnos a ella. En la tabla 2, se observa el mismo programa antes descrito, pero esta vez con la instrucci´on de salto incondicional. Dado que el salto ocurre siempre, este programa nunca se detiene y por 1 tanto es capaz de generar la serie de fibonacci hasta el l´ ımite del rango disponible por los registros (i.e. 255). Direcci´ on Instrucci´on Operandos 0x00 MOV A,0 0x01 MOV B,1 0x02 ADD A,B 0x03 ADD B,A 0x04 JMP 0x02 Tabla 2: Programa que genera secuencia a40a40 inifinta a41a41 de Fibonacci. Para utilizar la instrucci´on de salto incondicional, debemos conocer la direcci´ on de memoria a la cual vamos a saltar, lo que en programas largos puede ser complejo. Para facilitar esto se utiliza el concepto de label que es un indicador que se puede agregar en una l´ ınea del c´ odigo assembly para referirse a la direcci´ on de memoria asociada a esa l´ ınea. De esta manera, podemos reescribir el programa anterior de la siguiente forma: Direcci´ on Label Instrucci´on Operandos 0x00 MOV A,0 0x01 MOV B,1 0x02 start: ADD A,B 0x03 ADD B,A 0x04 JMP start Tabla 3: Programa que genera secuencia a40a40 inifinta a41a41 de Fibonacci con label para salto....
View Full Document

Page1 / 8

Clase 10 - Control de flujo - Pontificia Universidad...

This preview shows document pages 1 - 3. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online