Escolar Documentos
Profissional Documentos
Cultura Documentos
FACULTAD DE INFORMÁTICA
Y ESTADÍSTICA
PRÁCTICA:
Estructura de Computadores
(Ingeniería Técnica en Informática de Sistemas)
DEPARTAMENTO DE
TECNOLOGÍA ELECTRÓNICA
1. OBJETIVOS En el ejemplo, las tres primeras líneas que aparecen en el programa sirven para asignar el
valor inicial al contador de programa y al puntero de pila del modo supervisor. Lo que se hace
Esta práctica tiene como objetivo la familiarización con el emulador BSVC del
es escribir en memoria en las posiciones $0 y $4 los valores de USP y PC mediante la
microprocesador MC68000 y profundizar en el manejo de su conjunto de instrucciones. Este
directiva DC.L. El USP tomará el valor $8000 y el PC tomará el valor que tome la etiqueta
emulador es un proyecto desarrrollado en la Universidad de Carolina del Norte por Bradford
START. En el ejemplo, START tomará el valor $2000, ya que de nuevo se hace uso de la
W. Mott.
directiva ORG (línea 4). Este segundo uso de la directiva garantiza que el programa no se
escribe en las posiciones de la $0 a la $3FF que es la zona reservada para la tabla de vectores
2. INTRODUCCIÓN AL LENGUAJE ENSAMBLADOR
de excepción.
En primer lugar, daremos una introducción a las directivas más básicas del ensamblador que
• Interprete el programa anterior y explique mediante palabras y también con un diagrama
se usan en la práctica. Para ello utilizaremos el programa example.s que se muestra a
de flujo la función que éste realiza.
continuación.
ORG $0
DC.L $8000 Valor inicial del puntero de pila 3. ESTUDIO EXPERIMENTAL
DC.L START Valor inicial del contador de programa
Esta práctica consta de 2 partes:
ORG $2000
START CLR.W SUM Parte I
MOVE.W COUNT,D0
LOOP ADD.W D0,SUM Su objetivo es conocer el emulador a través del uso de un programa ejemplo. Las tareas que
SUB.W #1,D0 abordaremos en este apartado serán: abrir el entorno, cargar un programa ya ensamblado y
BNE LOOP ejecutarlo.
BREAK
SUM DS.W 1 Para realizar estas tareas siga los puntos 4.1, 4.2 y 4.3 del apartado 4.
COUNT DC.W 25
Parte II
Cada línea de programa tiene cuatro campos separados por espacios. Los tres primeros
campos son obligatorios. En el primero se pueden insertar etiquetas; el segundo, corresponde Su objetivo es hacer prácticas sobre un conjunto de ejemplos que se proponen. Las tareas
al mnemónico de la instrucción; en el tercero se sitúan los operandos si los hay; y en el cuarto, que abordaremos sobre cada ejemplo serán: edición, ensamblado, carga y ejecución. Teniendo
se pueden introducir comentarios. en cuenta que en el apartado 4.4 se describe cómo llevar a cabo las tareas de edición y
ensamblado, siga el tutorial del apartado 5.
Las directivas (ORG, DC, DS) no forman parte del código ejecutable, son indicaciones para
el ensamblador que es el encargado de traducir el programa a código máquina. ORG sirve
4. GUÍAS DE USO DEL EMULADOR
para indicar a partir de qué dirección de memoria debe escribirse el código, DC sirve para
4.1 Abrir el entorno:
inicializar a un valor concreto una parte de la memoria, y DS para reservar una zona de
memoria. 1) Se arranca el programa (BSVC) desde la barra de Inicio.
2) En la ventana que se ha abierto, picar en File → Open Setup direcciones comprendidas entre la $000000 y la $00000F; en la segunda fila se encuentran los
siguientes 16 bytes, es decir, desde la dirección $000010 a la $00001F, y así sucesivamente.
3) En la nueva ventana se selecciona el fichero
byte 10
byte 12
byte 13
byte 14
byte 15
byte 11
byte 1
byte 2
byte 3
byte 4
byte 5
byte 6
byte 7
byte 8
byte 9
byte 0
C:\Archivos de Programa\BSVC\Samples\sim68000\simple.setup
Posición
Aparecerá una ventana dividida en dos partes, en la de la izquierda se muestran los registros 000000 00 00 80 00 00 00 20 00 00 00 00 00 00 00 00 00
3) Para ver el contenido de la memoria, se pica en la ventana principal en 6) Para modificar el contenido de la memoria, hay dos opciones:
Window → Memory Viewer. Tras ello, se abrirá una ventana donde la memoria se organiza
- Cambiar un bloque de memoria. Para ello picar en la ventana de memoria en Edit -> Fill
como puede verse en la figura. En la primera fila aparecen los 16 primeros bytes, es decir, las
Memory Block.
5. EJEMPLOS PRÁCTICOS • ¿Qué ocurre si se sustituye MOVEA.L #Var1,A0 por MOVEA.L Var1,A0?
• ¿Y por LEA Var1, A0?
Para cada uno de los ejemplos de este apartado realice las siguientes tareas: • Indique los modos de direccionamiento indirectos utilizados en este código.
- instrucción a instrucción, comprobando que los registros del procesador y la ORG $400
Var1 DC.L 3
memoria modifican sus valores del modo esperado
Var2 DC.L 5
- de una pasada, comprobando que el programa funciona adecuadamente
ORG $600
ANDI #$0700,SR
Antes de comenzar conviene aclarar un detalle. Al abrir el entorno BSVC el emulador, por
defecto, se sitúa en modo supervisor. Esto puede comprobarse analizando el contenido del MOVE.L Var1,D0
MOVE.L Var1,D1
registro de estado SR. En los programas que se listan en este apartado, se usa la instrucción MULS D1,D0
MOVE.L Var2,D2
MOVE.L Var2,D3
MULS D3,D2
ADD.L D0,D2
MOVE.L Var1,D0
MOVE.L Var2,D1
SUB D1,D0
DIVS D0,D2
BREAK
Ejemplo 3
ORG $4
DC.L $1000
ORG $700
String DC.B ’Esta práctica es bastante útil’,0
ORG $1000
ANDI #$0700,SR
MOVEA.L #String,A0
Sig MOVE.B (A0)+,D0
CMP.B #’a’,D0
BNE NoE
ADD.B #1,D7
NoE CMP.B #0,D0
BNE Sig
BREAK