Professional Documents
Culture Documents
DEPARTAMENTO DE ELECTRONICA
ELO311 Estructuras de Computadores
Programacin Assembler.
1. Introduccin.
La descripcin de un computador digital puede efectuarse mediante la consideracin de
diferentes niveles de abstraccin.
La siguiente figura ilustra diversas componentes abstractas:
Aplicaciones
Sistema Operativo
Compilador
Firmware
Assembler
Repertorio de Instrucciones
Memoria
Sistema entrada/salida
Camino de datos y Control
Diseo digital
Diseo Circuitos
Lgicos
Transistores
Todas las partes estn sometidos a rpidos cambios debidos a la tecnologa, los ambientes
de programacin, las aplicaciones, los sistemas operativos.
1.1. Repertorio de Instrucciones.
Se destaca el repertorio de instrucciones, ubicado en un nivel medio, siendo la interfaz entre
la zona superior que podramos denominar la parte software, y la parte inferior que suele
denominarse hardware.
El repertorio de instrucciones establece la interfaz software-hardware.
Esta interfaz es fundamental en el diseo de un computador.
16-08-2005
operando 1
operando 2
...
16-08-2005
operando 1
M[A]
...
M[A + x]
16-08-2005
R1 = R1 + M[dir2]
Ra Rb + Rc
Ra M[Rb]
M[Rb] Ra
Donde push y pop son instrucciones del repertorio de una mquina de stack, para
movilizar datos desde la memoria hacia el tope del stack y viceversa.
16-08-2005
La variable tope se emplea aqu como un puntero (o sea almacena una direccin) que
apunta a la ltima direccin ocupada en el stack.
b) Mquina con acumulador:
Load
A
Add
B
Store
C
; acc = M[A]
; acc = acc + M[B]
; M[C] = acc
Donde load y store son instrucciones para mover datos entre la memoria y el
acumulador y viceversa.
c) Mquina con operandos registro-memoria
Load
R1, A
; R1 = M[A]
Add
R1, B
; R1 = R1 + M[B]
Store
R1, C
; M[C] = R1
Movimientos de Datos:
Cargar registro desde la memoria.
Almacenar registro en la memoria.
Movimiento entre celdas de memoria.
Movimiento entre registros.
Desde registro hacia dispositivo de salida (output).
Desde dispositivo de entrada hacia registro (input).
Push, pop. Operaciones en stack (pila).
16-08-2005
Aritmticas:
Suma, resta, multiplicacin, divisin. En binario, con y sin signo.
Suma, resta, multiplicacin, divisin. En BCD, con y sin signo.
Suma, resta, multiplicacin, divisin. En punto flotante (reales binarios), con y sin
signo.
Suma, resta, multiplicacin, divisin de precisin extendida. En binario, con y sin
signo.
Corrimientos:
Aritmticos hacia la izquierda y derecha.
Lgicos hacia la izquierda y derecha.
Rotaciones hacia la izquierda y derecha.
Enlace a Subrutinas:
Llamado y retorno de subrutinas.
Interrupciones:
Programacin del sistema de prioridades, habilitacin y deshabilitacin de las
interrupciones, retorno de interrupciones enmascaradas y no enmascaradas.
Sincronizacin:
Test and set. Operacin para manejar procesos.
String:
Traducir, buscar, etc.
Grficas:
Operaciones para el manejo grfico.
16-08-2005
load
bifurcacin condicional
compare
store
add
and
sub
movimiento entre registros
llamados a subrutinas
retornos de subrutinas
22 %
20 %
16 %
12 %
8%
6%
5%
4%
1%
1%
Significado
R4 R4 + R3
Inmediato
Add R4, #3
R4 R4 + 3
Un campo contiene una constante, generalmente un nmero con signo. Es decir, un nmero
que est contenido en la instruccin.
Desplazamiento
Add R4, 100(R1)
R4 R4 + M[100 + R1]
Permite direccionar un elemento de una estructura (struct en C, record en Pascal) cuyo
inicio est apuntado por el registro R1. El desplazamiento (offset) es respecto a un registro
base.
Ntese que la direccin efectiva es 100 + R1.
Leopoldo Silva Bijit
16-08-2005
R1 R1 + M[1001]
Memoria indirecto
Add R1, @(R3)
La direccin efectiva se encuentra en M[R3].
R1 R1+ M[M[R3]]
Auto-incremento
Add R1, (R2)+
R1 R1 + M[R2]; R2 R2+d
Se efectan dos acciones, la operacin de sumar, y el incremento del registro R2 en una
cierta cantidad fija d.
Auto-decremento
Escalado
R2 R2 d; R1 R1+ M[R2]
R1R1+ M[100+R2+R3*d]
Uso de Registros.
Todas las mquinas modernas usan mltiples registros. Esto debido a que los registros son
ms rpidos que la memoria principal y que la memoria cach; adems permiten una mejor
compilacin de expresiones (es decir la traduccin a una secuencia de instrucciones de
mquina) que una evaluacin en una pila.
Su principal ventaja es que pueden mantener las variables de uso frecuente, rpidamente
accesibles, reduciendo los accesos a memoria.
En el lenguaje C existe la posibilidad de indicar al compilador cules variables deben ser
almacenadas en registros, agregando la palabra register a la lista de variables.
16-08-2005
16-08-2005
16-08-2005
10
Las acciones y los datos deben describirse con rigurosidad para que puedan ser
correctamente interpretados por un autmata.
Lenguaje C
Assembler MIPS
Lenguaje de mquina
16-08-2005
11
En assembler se emplean smbolos para los cdigos binarios: del tipo de instruccin, de los
registros, de los valores constantes. Tambin emplea smbolos para especificar direcciones
de memoria donde pueden estar almacenadas instrucciones o datos.
Una instruccin requiere especificar las siguientes informaciones: Dnde se encuentran los
operandos de entrada, cul es la operacin a realizar, dnde se depositar el resultado y cul
es la prxima instruccin a realizar. Cada uno de estos datos demandar una cantidad de
informacin, que suele medirse en bits.
Por ejemplo: si los datos estn en un arreglo de 32 registros, se necesitarn 5 bits para
especificar el nmero de un registro; si la memoria tiene 1024 palabras (1 K[palabras]), la
especificacin de una direccin de una palabra requiere de 10 bits; si la memoria tiene 1
M[palabras], una direccin requiere ahora 20 bits. Si existen 16 tipos de operaciones, se
requieren 4 bits para especificar la operacin.
La forma especfica de encontrar los operandos se fue flexibilizando y complicando a
travs del tiempo, ya que empleando algunos bits adicionales puede especificarse, por
ejemplo, que la direccin de la memoria est en un registro, o que el operando se encuentra
sumando el contenido de dos registros. Las diversas formas de interpretar la informacin
para obtener los operandos se tratar, ms adelante, bajo el ttulo modos de
direccionamiento.
Cada una de estas informaciones puede verse como un campo de bits:
operacin
operando
operando
resultado
modo
Se ha ilustrado los campos de una instruccin con dos operandos de entrada y un resultado.
Si la instruccin es de salto incondicional, los campos de entrada y salida no estarn
presentes, pero se tendr un campo para especificar la direccin de salto.
Si la instruccin es una bifurcacin (por ejemplo: salte a tal direccin si el operando uno y
el operando dos son iguales) no se requiere el campo de resultado, pero ste se reemplaza
por la direccin de salto.
Algunas instrucciones permiten que uno de los campos sea una constante. Se dice que estos
campos son inmediatos (el valor viene inmediatamente en la instruccin). Si el dato est en
un registro, se requiere la operacin adicional de leer el registro; en estos casos se dice que
el dato es indirecto (no viene directamente en el cdigo de la instruccin).
Si la operacin es mondica, no estar presente uno de los operandos de entrada (por
ejemplo la negacin bit a bit de un operando).
16-08-2005
12
En los diferentes repertorios el orden de los campos puede ser distinto; en algunos otros, el
campo de operacin puede estar subdividido en dos.
Finalmente podemos conceptualizar una instruccin de mquina como una secuencia de
unos y ceros. Si el nmero de bits necesarios es menor o igual al de una palabra de
memoria, pueden ensamblarse los distintos campos en una celda de la memoria, como se
ilustra a continuacin.
instruccin
Si el nmero de bits es mayor, pueden emplearse dos o ms palabras para especificar una
instruccin. Esto implica que tendr que accesarse en ms de una oportunidad a la memoria
para comenzar a procesar la instruccin.
La forma usual de especificar los operandos en assembler es emplear notacin simblica.
El cdigo de operacin suele describirse con una palabra (en ingls) que describe la
operacin; a este campo suele denominarse mnemnico. Suele ser una abreviatura o las
primeras letras de un concepto; por ejemplo: jal que recuerda jump and link.
Luego, si estn presentes, le siguen los operandos de entrada y salida.
Suele describirse cada instruccin en una lnea, y los campos suelen separarse con espacios
(y ms generalmente por tabs, lo que se logra digitando la tecla a la izquierda de la letra Q).
Tambin al inicio de la lnea puede existir un rtulo (label en ingls) que identifica, en
forma simblica, la direccin de la memoria en que comienza la instruccin. La separacin
entre el rtulo y el mnemnico de la operacin suele ser dos puntos.
En este lenguaje simblico de mquina puede definirse lneas completas como comentarios,
y tambin puede colocarse un comentario de fin de lnea despus de los campos de la
instruccin.
Entonces, puede generalizarse la descripcin simblica (assembler) de una instruccin
segn:
rtulo:
operacin
Pueden agregarse, a los operandos de entrada, algunos smbolos especiales para describir el
modo de direccionamiento. En el ejemplo siguiente, los parntesis redondos implican un
modo de direccionamiento.
rtulo:
operacin
op1, offset(op2)
16-08-2005
13
16-08-2005
14
16-08-2005
15
ndice general.
1. INTRODUCCIN........................................................................................................................................ 1
1.1. REPERTORIO DE INSTRUCCIONES. ............................................................................................................ 1
1.2. TIPOS DE REPERTORIOS. ........................................................................................................................... 2
1.2.1. Mquinas de Stack........................................................................................................................... 2
1.2.2. Mquinas con acumulador. ............................................................................................................. 3
1.2.3. Mquinas de Registro-Memoria. ..................................................................................................... 3
1.2.4. Mquinas de Carga Almacenamiento. (Load-Store) ..................................................................... 4
1.3. COMPARACIN DE LAS ARQUITECTURAS.................................................................................................. 4
a) Mquina de stack:............................................................................................................................ 4
b) Mquina con acumulador: .............................................................................................................. 5
c) Mquina con operandos registro-memoria ..................................................................................... 5
d) Mquina con registros carga-almacenamiento.............................................................................. 5
1.4. INSTRUCCIONES TPICAS DE UN REPERTORIO............................................................................................ 5
1.5. ESTADSTICAS DE USO DE INSTRUCCIONES............................................................................................... 7
1.6. MODOS DE DIRECCIONAMIENTO............................................................................................................... 7
1.7. ESTADSTICA DE USO DE MODOS DE DIRECCIONAMIENTO. ....................................................................... 9
1.8. ORGANIZACIN DE MQUINA................................................................................................................... 9
1.9. PARTES DE UN COMPUTADOR. ................................................................................................................ 10
1.10. NIVELES DE REPRESENTACIN. ............................................................................................................ 10
1.10.1. Programacin en lenguaje C. ...................................................................................................... 11
1.10.2. Programacin assembler............................................................................................................. 11
1.11. APRENDER HACIENDO. ......................................................................................................................... 14
1.12. ENSAMBLADORES, COMPILADORES, LIGADORES, SIMULADORES. ....................................................... 14
16-08-2005
16