Professional Documents
Culture Documents
ESTRUCTURA Y TECNOLOGA DE
COMPUTADORES
Programacin en ensamblador: conceptos bsicos
Programa
1.
2.
3.
4.
5.
Introduccin.
Desarrollo de programas.
Sintaxis de un lenguaje ensamblador.
Pseudoinstrucciones en ensamblador.
Directivas en ensamblador.
Bibliografa
D.A. PATTERSON, J.L HENNESSY. Estructura y diseo de computadores.
Revert, 2000.
A. CLEMENTS. Microprocessor Systems Design. 3rd edition, ITP - PWS
Publishing Company, 1997.
J. SEPTIN, H. MECHA, R. MORENO, K. OLCOZ. La familia del MC68000.
Sntesis, 1995.
M68000 8/16/32 Bit Microprocessors Users Manual. 9th edition. Motorola, 1993.
Motorola M68000 Family Programmers Reference Manual. Motorola, 1992.
P. DE MIGUEL. Fundamentos de los computadores. 7 edicin, Paraninfo, 1999.
C. CERRADA, V. FELIU. Estructura y Tecnologa de Computadores I. UNED,
1993
W. STALLINGS. Organizacin y Arquitectura de Computadores. 5 edicin,
Prentice-Hall, 2000.
1. Introduccin
Los computadores ejecutan programas.
Programa: secuencia de operaciones conducentes a resolver un problema
determinado.
Caractersticas de los programas
Estn compuestos por secuencias de instrucciones o sentencias.
Se escriben utilizando una notacin formal conveniente.
Pueden ser escritos por personas (programadores), o bien pueden ser
generados automticamente mediante una herramienta adecuada.
Un programa en ejecucin se encuentra cargado en memoria principal.
Lenguaje de programacin: una notacin formal para describir algoritmos o
funciones que sern ejecutadas por un computador.
Lenguaje ensamblador.
7
Lenguaje ensamblador
El lenguaje ensamblador (o lenguaje de ensamble, assembly language) es la
representacin simblica de la codificacin binaria de un computador.
Cdigos de operacin representados mediante cdigos nemotcnicos.
Datos y referencias codificadas mediante nombres simblicos (smbolos o
etiquetas).
Pascal
PROGRAM prueba;
VAR
n,s: INTEGER;
BEGIN
n := 18;
s := 81;
n := n+s;
END.
VAR
N
S
BEGIN
$400
????
$402
????
ORG
$400
EQU
DS.W
DS.W
*
1
1
$500 $31FC
ORG
EQU
MOVE.W
MOVE.W
MOVE.W
ADD.W
MOVE.B
TRAP
END
$500
*
#18,N
#81,S
S,D0
D0,N
#9,D0
#15
$506 $31FC
$0012
$0400
$0051
$0402
$50C
$3038
$0402
$510
$D178
$0400
$512
$103C
$0009
$518
$4E4F
Program
Compiler
Assembler
Linker
Computer
11
Terminologa
Cdigo (programa) fuente: cdigo escrito por el programador.
Puede estar escrito en cualquier lenguaje: alto nivel, ensamblador, cdigo
mquina (inusual).
Puede contener errores sintcticos porque el programador haya escrito mal el
programa.
12
Jerarqua de traduccin
C program
Compiler
Assembler
Linker
Loader
Memory
13
Las memorias son mucho mayores hoy en da: el tamao ha dejado de ser crtico.
Solucin mixta:
14
2. Desarrollo de programas
Fases de desarrollo de un programa escrito en un lenguaje de alto nivel.
Descripcin del
problema
Edicin
Cdigo
fuente
Identificacin de
los datos de
entrada y de los
resultados
Compilacin
Cdigo
ensamblador
Cdigo
objeto
Diagrama de
flujo y/o
pseudocdigo
Errores
sintcticos
Ensamblaje
Cdigo
objeto
Montaje
Cdigo
ejecutable
Programa fuente
en lenguaje de
alto nivel
Errores lgicos
Verificacin
15
16
17
DIreccin del
flujo de ejecucin
Operacin
Operacin
Operacin
normal
Nombre
Operacin
de E/S
Llamada a
subprograma
Estructura de
seleccin
mltiple
Terminador
S
Condicin
Condicin
Opcin 1
Estructura de
decisin
simple
No
Opcin 2
...
Opcin N
Tipos:
Orientado al problema: capta la estructura del algoritmo de la solucin.
Orientado al lenguaje: capta peculiaridades del lenguaje de programacin utilizado.
18
Compilador
Traductor de lenguaje de alto nivel a ensamblador.
Hoy todos los compiladores traducen directamente a lenguaje mquina.
En tal caso generan un fichero con el cdigo objeto equivalente al cdigo fuente
completo, junto con informacin necesaria para el montaje.
20
Object file
Instructions
Relocation
records
Executable file
main:
jal ???
jal ???
Linker
call, sub
call, printf
C library
print:
main:
jal printf
jal sub
printf:
sub:
22
24
Descripcin del
problema
Edicin
Cdigo fuente
(ensamblador)
Identificacin de
los datos de
entrada y de los
resultados
Ensamblaje
Cdigo
objeto
Diagrama de
flujo y/o
pseudocdigo
Errores
sintcticos
Montaje
Errores lgicos
Cdigo
ejecutable
Programa fuente
en ensamblador
Verificacin en
un simulador
Verificacin en la
mquina objetivo
25
Nemotcnico
Operandos
Comentarios
26
Etiquetas
La etiqueta identifica la lnea que encabeza.
Recomendaciones:
Utilizar slo letras o nmeros (comenzar por una letra).
Colocar la primera letra de la etiqueta en el primer carcter de la lnea.
SIMB1
TIPO1
VALOR1
SIMB2
TIPO2
VALOR2
...
...
...
27
Nemotcnico
Identifica:
Un cdigo de operacin de una instruccin del lenguaje.
Una pseudoinstruccin.
Una directiva.
28
Campos de operandos
Identifican los operandos que intervienen en la instruccin o directiva.
Tipos de operandos:
Constantes
Numricas: suelen llevar un prefijo o un sufijo que identifica la base en que
estn expresadas: decimal (D), binaria (%,B), octal (O,@,Q,C) o
hexadecimal (H,$, 0x).
Alfabticas: entre comillas.
Smbolos
Predefinidos: registros, contador de direccin de ensamblaje, etc.
Implcitos.
Explcitos.
Expresiones
Pueden incluir constantes, smbolos implcitos o explcitos, el smbolo del
contador de direccin de ensamblaje, parntesis u operadores sencillos
(+,-,*,/,%,&,|,^,<<, etc).
LAS EXPRESIONES NO PUEDEN INCLUIR NOMBRES DE
REGISTROS NI USAR EL CONTENIDO DE LAS VARIABLES!
29
Comentarios
Son indicaciones para una mejor comprensin del programa ensamblador.
Pueden situarse a continuacin de los operandos, con al menos un espacio
en blanco entre medias.
En ocasiones puede exigirse incluir adems algn otro carcter
delimitador (*, ;, #).
En ocasiones se incluyen lneas completas de comentario.
En ese caso, la lnea de comentario comenzar con un carcter
delimitador en la primera posicin de la lnea (*, ;, #).
30
4. Pseudoinstrucciones en ensamblador
Una pseudoinstruccin es una instruccin ofrecida por el ensamblador, pero
no realizada por la circuitera.
A una pseudoinstruccin le corresponde una secuencia definida de
instrucciones realizadas por la circuitera.
Las pseudoinstrucciones proporcionan a la mquina un lenguaje ms rico
que el que realiza la circuitera.
Las pseudoinstrucciones facilitan la programacin en ensamblador sin
complicar la circuitera (aunque s complican el diseo del traductor).
No todos los traductores cuentan con pseudoinstrucciones.
31
5. Directivas en ensamblador
Informan al traductor acerca de cmo debe traducir el cdigo fuente a cdigo
mquina, pero no producen instrucciones en lenguaje mquina.
Las directivas pueden indicar informacin relativa a diversas cuestiones:
Las directivas son procesadas por el traductor, que a partir de ellas adopta las
acciones pertinentes para realizar el proceso de ensamblaje y generacin de
listados y cdigo objeto.
El cdigo objeto no contiene ninguna directiva.
El programa ejecutable desconoce la existencia de directivas.
Las directivas nunca son tenidas en cuenta por el computador en tiempo de
ejecucin.
32