Title: Introducci
1Lenguaje ensamblador
- Introducción a las ciencias de la computación
- Antonio López Jaimes
2Plan de la presentación
- Modos de direccionamiento
- Lenguaje ensamblador
- Variables
- Pseudoinstrucciones
- Etiquetas
3Plan de la presentación
- Modos de direccionamiento
- Lenguaje ensamblador
- Variables
- Pseudoinstrucciones
- Etiquetas
4Modos de direccionamiento
- Direccionamiento inmediato. El dato con el que se
opera se especifica inmediantemente después del
código de la instrucción. - Direccionamiento directo. El parámetro o dato de
la operación se especifica mediante una dirección
escrita enseguida el código de la instrucción. - Direccionamiento indirecto. La operación se
aplica al dato contenido en una dirección2
direccionada por la celda con una dirección1
especificada. - Direccionamiento indizado. Toma la dirección dada
y la suma con el contenido de un registro
especial de la UCP llamado índice.
5Plan de la presentación
- Modos de direccionamiento
- Lenguaje ensamblador
- Variables
- Pseudoinstrucciones
- Etiquetas
6El problema de la traducción
Programa fuente
CARGA 20 SUMA 21 GUARDA 22 ALTO
010100 010100 011110 010101 000010
010110 1000110
2020 3021 0222 70
Escrito en lenguaje mnemónico, el cual está más
cercano al lenguaje natural.
7El problema de la traducción
- Para evitar hablar con la computadora en lenguaje
de máquina utilizamos un lenguaje simbólico que
utiliza mnemónicos. - Puesto que la máquina sólo entiende lenguaje
máquina, necesitamos resolver el problema de
traducir el programa fuente (escrito con
mnemónicos) a lenguaje máquina. - Esta tarea la puede hacer un programa que haga la
traducción de un programa fuente escrito en
lenguaje mnemónico al programa objeto escrito en
lenguaje máquina.
8Programa traductor
Programa fuente
Programa objeto
CARGA 20 SUMA 21 GUARDA 22 ALTO
2020 3021 0222 70
Programa traductor
Escrito en lenguaje máquina, el cual entiende
directamente la computadora
Escrito en lenguaje mnemónico, el cual está más
cercano al lenguaje natural.
9Algoritmo del programa traductor (v1)
- 0 Para cada renglón del programa fuente hacer
- 1 Buscar la palabra mnemónica en el
diccionario de - equivalencias.
- 2 Si está, entonces traducirla al lenguaje
máquina. - En caso contrario, advierte un error al
usuario. - 3 Fin del programa.
10Ensamblador
- El programa traductor se llama ensamblador, el
cual permite que el usuario se comunique con la
computadora en un lenguaje con un nivel superior
que el del lenguaje máquina. - El lenguaje simbólico con el que se escriben los
programas recibe el nombre de lenguaje
ensamblador o simplemente ensamblador.
11Plan de la presentación
- Modos de direccionamiento
- Lenguaje ensamblador
- Variables
- Pseudoinstrucciones
- Etiquetas
12Variables
- En el lenguaje ensamblador el usuario ya no tiene
que escoger celdas particulares de memoria, ya
que dicha tarea es delegada al traductor. - Una variable es un nombre simbólico asociado con
una celda cualquiera. El traductor se encargará
de hacer tal asociación. - Las variables dan flexibilidad al programa, ya
que si una celda particular está ocupada, el
programa traductor asignará otra celda.
13Variables
El programador podrá escribir las variables
simbólicas ALFA, BETA y GAMA, sin preocuparse a
cuáles celdas estarán asociadas.
Programa objeto
20 10 30 11 02 12 70
Programa traductor
El traductor automáticamente asociará a cada
variable una celda, por ejemplo la 10, 11 y 12.
14Tabla de símbolos
- Para realizar la asociación entre variables y
celdas, el traductor utiliza una tabla de
símbolos en la cual guarda las direcciones que
asignó a las variables para reconocerlas cuando
sea preciso. - La tabla de símbolos del programa anterior es
Variable simbólica Dirección asignada
ALFA 10
BETA 11
GAMA 12
15Tabla de símbolos
Cuando el traductor encuetra una variable por
primera vez, le asigna una dirección y la guarda
en la tabla de símbolos. La segunda vez,
simplemente reemplaza la dirección asignada en el
programa objeto.
Tabla de símbolos
IN GUARDA ALFA IN GUARDA BETA CARGA ALFA SUMA
BETA GUARDA GAMA ALTO
Variable Dirección
16Plan de la presentación
- Modos de direccionamiento
- Lenguaje ensamblador
- Variables
- Pseudoinstrucciones
- Etiquetas
17Pseudoinstrucciones
- Para facilitar el trabajo del traductor, el
programador escribe pseudoinstrucciones, es
decir, instrucciones dirigidas solamente al
traductor. - Las pseudoinstrucciones no son pensadas para la
UCP, por lo que no aparecen en el programa
objeto.
18Pseudoinstrucciones
- DATO. Reserva espacio para una variable asociada
a a un nombre simbólico y define la cantidad de
celdas de memoria que ocupará - ltetiquetagt DATO lttamañogt
- ORIGEN. Especifica la dirección inicial que el
traductor empleará para cargar datos e
instrucciones del programa - ORIGEN ltdireccióngt
- PROGRAMA ... FIN. Indican al traductor dónde
comienzan y terminan las instrucciones del
programa fuente.
19Nuevo programa fuente
ORIGEN 10 ALFA DATO 1 BETA DATO 1 GAMA
DATO 1 PROGRAMA IN GUARDA
ALFA IN GUARDA BETA CARGA
ALFA SUMA BETA GUARDA GAMA
ALTO FIN
Programa objeto
00 00 00 10 02 10 10 02 11 20 10 30 11 02 12 70
10 13 14 16 17 19 21 23 25
Programa traductor
Variable Dirección
ALFA 10
BETA 11
GAMA 12
20Plan de la presentación
- Modos de direccionamiento
- Lenguaje ensamblador
- Variables
- Pseudoinstrucciones
- Etiquetas
21Etiquetas
- Las etiquetas son nombres simbólicos de las
direcciones utilizadas en el programa para
dirigir saltos condicionales e incondicionales. - Al igual que las variables, las etiquetas son
guardadas en la tabla de símbolos. - Por ejemplo
PROGRAMA
BR E1 . . . E1Instr. 1
Instr. 2 . . . Instr. n
FIN
22Ejemplo el mínimo de tres números
23Traducción en dos pasos
Qué pasa cuando el traductor lee la instrucción
BRlt E1?
PROGRAMA ... CARGA ALFA GUARDA MIN
COMP BETA BRlt E1 ... E1COMP GAMA
... ALTO FIN
Variable Dirección
ALFA 10
BETA 11
GAMA 12
MIN 13
E1 ?
24Traducción en dos pasos
- La utilización de etiquetas obliga al ensamblador
a efectuar dos lecturas sobre el mismo programa
fuente - En la primera guarda las direcciones de todas las
etiquetas en la tabla de símbolos calculando sus
direcciones. - En la segunda vuelta reemplaza las etiquetas por
sus direcciones respectivas y se crea el código
objeto del programa.
25Plan de la presentación
- Modos de direccionamiento
- Lenguaje ensamblador
- Variables
- Pseudoinstrucciones
- Etiquetas
- Otras pseudoinstrucciones
26Otras pseudoinstrucciones
- EQU. Permite al programador definir constantes
simbólicas - ltetiquetagt EQU ltvalorgt
- El ensamblador sustituye la etiqueta por el valor
definido siempre que aparezca en el programa
fuente. Esta directiva no reserva celdas de la
memoria. - Ejemplo
SI EQU 1 NO EQU 0 DIEZ EQU 10
27Otras pseudoinstrucciones
- VALOR. Reserva espacio para una variable y le
asigna un valor inicial - ltetiquetagt VALOR ltvalorgt
- A diferencia de EQU, la directiva VALOR reserva
una celda de la memoria. - Ejemplo
ALFA VALOR 5 CONTADOR VALOR 1 SUMA
VALOR 0
28Otras pseudoinstrucciones
- LISTA. Reserva espacio para un conjuntos de
valores, asociándole al primer elemento su
etiqueta - ltetiquetagt LISTA ltvalor,...gt
- Ejemplo
NÚMERO LISTA 0,1,2,4 DÍAS LISTA 1,2,3,5,6,7
29La nueva tabla de símbolos
- Los valores iniciales que definen la
pseudoinstrucciones anteriores se guardan también
en la tabla de símbolos del ensamblador.
Tabla de símbolos
Programa fuente
INICIO EQU 700 LÍMITE EQU 8 ORIGEN
INICIO ALFA DATO 1 BETA VALOR LÍMITE2
...
Nombre simbólico Dirección Valor
INICIO --- 700
LÍMITE --- 8
ALFA 700 -
BETA 701 10