PDF de programación - PARTE II: Programación en ensamblador

Imágen de pdf PARTE II: Programación en ensamblador

PARTE II: Programación en ensambladorgráfica de visualizaciones

Actualizado el 12 de Mayo del 2021 (Publicado el 8 de Mayo del 2018)
417 visualizaciones desde el 8 de Mayo del 2018
696,2 KB
25 paginas
Creado hace 11a (19/04/2010)
Facultad de Informática
Universidad Complutense de Madrid


Curso 2009/10



Cuaderno de Prácticas

Laboratorio de Fundamentos de

Computadores

PARTE II:

Programación en ensamblador



Autor: Rafael Moreno Vozmediano

Facultad de Informática
Universidad Complutense de Madrid



Laboratorio de Fundamentos de computadores

Facultad de Informática
Universidad Complutense de Madrid


Curso 2009/10



La Máquina Rudimentaria:
Arquitectura del repertorio de instrucciones

1. Registros y memoria visibles al programador

1.1. Registros de propósito general: R1-R7

Los registros R1-R7 son registros de 16 bits que se pueden utilizar como registros
fuente y destino en operaciones aritmeticológicas.

Ejemplos:


Instrucción
ADD R1,R2,R3
SUB R1,R2,R3

Operación realizada
R3 R1 + R2
R3 R1 - R2


También se pueden utilizar como registro índice en operaciones de movimiento de
datos con memoria:

Ejemplos:


Instrucción
LOAD 4(R1),R2
STORE R1,-10(R2)

Operación realizada
R2 Mem(R1 + 4)
Mem(R2 - 10) R1



1.2. El registro R0

El registro R0 es un registro especial, también de 16 bits, que siempre contiene el
valor 0. Este registro puede utilizarse como registro fuente (por ejemplo para
inicializar otros registros a 0), pero no debe utilizarse para guardar el resultado de
una operación.

Ejemplos:


Instrucción
ADD R0,R0,R3
LOAD 16(R0),R2
STORE R1,200(R0)

Operación realizada
R3 0
R2 Mem(16)
Mem(200) R1



Laboratorio de Fundamentos de computadores

Facultad de Informática
Universidad Complutense de Madrid


Curso 2009/10



1.3. El registro de estado

El registro de estado contiene dos bits de estado (Z y N) que se actualizan después
de cada operación:


Bit
Z
N

Significado
Cero
Negativo

Se actualiza si
El resultado de la última operación es cero
El resultado de la última operación es negativo



1.4. La memoria

La memoria contiene 256 palabras de 16 bits. Las direcciones de memoria son por
tanto de 8 bits (de la 0 a la 255).



2. Modos de direccionamiento y tipos de operandos

2.1. Direccionamiento directo de registro: Ri

En este modo de direccionamiento, el operando está contenido en un registro de
propósito general (Ri), que se puede utilizar como operando fuente o destino
(excepto si se trata del registro R0)

Ejemplos:


Instrucción
ADD R1,R2,R3
SUB R1,R2,R3

Operación realizada
R3 R1 + R2
R3 R1 - R2


El operando almacenado en el registro es un valor de 16 bits expresado en C’2. El
rango de valores que puede este operando es el siguiente:


Operando en registro (16 bits – C’2): Rango [-32768, +32767]



Laboratorio de Fundamentos de computadores

Facultad de Informática
Universidad Complutense de Madrid


Curso 2009/10



2.2. Direccionamiento inmediato: #valor5

En este modo de direccionamiento, el operando está contenido en el propio código
de instrucción máquina. Este modo de direccionamiento sólo puede utilizarse como
operando fuente, nunca como operando destino.

Ejemplos:


Instrucción
ADDI R1,#8,R3
SUBI R1,#10,R3

Operación realizada
R3 R1 + 8
R3 R1 - 10


El operando inmediato es un valor de 5 bits expresado en C’2. El rango de valores
que puede este operando es el siguiente:


Operando inmediato (5 bits – C’2): Rango [-16, 15]



2.3. Direccionamiento con dirección base y desplazamiento: Dir_base8(Ri)

En este modo de direccionamiento, el operando está contenido memoria. La
dirección de memoria del operando se calcula como la suma de la dirección base
(valor de 8 bits) y el contenido del registro índice (Ri).

Este modo de direccionamiento se puede utilizar como operando fuente en
operaciones de LOAD (movimiento de memoria a registro) y como operando
destino en operaciones de STORE (movimiento de registro a memoria)

Ejemplos:


Instrucción
LOAD 4(R1),R2
STORE R1,10(R2)

Operación realizada
R2 Mem(R1 + 4)
Mem(R2 + 10) R1



2.4. Direccionamiento absoluto: Dir_absoluta8

En este modo de direccionamiento el operando expresa una dirección de memoria
de 8 bits. Este modo de direccionamiento se utiliza únicamente en las instrucciones
de salto.

Ejemplos:



Laboratorio de Fundamentos de computadores

Facultad de Informática
Universidad Complutense de Madrid



Instrucción
BR 56

Operación realizada
PC 56

Curso 2009/10



3. Repertorio de instrucciones

3.1. Instrucciones aritmeticológicas



(NOTA: La instrucción ASR es equivalente a dividir por 2)

3.2. Instrucciones de acceso a memoria:



Laboratorio de Fundamentos de computadores



Facultad de Informática
Universidad Complutense de Madrid



3.3. Instrucciones de salto


Curso 2009/10



Laboratorio de Fundamentos de computadores

Facultad de Informática
Universidad Complutense de Madrid


Curso 2009/10



El proceso de ensamblado


1. Directivas de ensamblador

Las directivas de ensamblador controlan acciones auxiliares que se realizan
durante el proceso de ensamblado, tales como reservar posiciones de memoria,
inicializar posiciones de memoria a un determinado valor, definir etiquetas, indicar
el inicio y el final del programa, o definir macros. Las directivas no son traducibles a
código máquina.



2. El ensamblado de programas

El proceso de ensamblado consiste en la traducción de un programa escrito en
ensamblador a lenguaje máquina. Esta traducción es directa e inmediata, ya que
las instrucciones en ensamblador no son más que nemotécnicos de las
instrucciones máquina que ejecuta directamente la CPU.

2.1. Ensamblado de programas sin macros

Si el programa no contiene macros, lo editaremos con un editor de texto (por
ejemplo, notepad) con la extensión .asm, por ejemplo: prog.asm



Laboratorio de Fundamentos de computadores

Facultad de Informática
Universidad Complutense de Madrid


Curso 2009/10



Para ensamblar el programa, abrir una ventana MS-DOS y ejecutar la siguiente
orden:
posten prog.asm

Esta orden genera un fichero con el mismo nombre, pero con extensión .cod
(prog.cod). Este fichero contiene el programa binario en lenguaje máquina que se
deberá simular con posterioridad en el simulador de la máquina rudimentaria.

El esquema del procedimiento sería el siguiente:


posten prog.asm

posten prog.asm



2.2. Ensamblado de programas con macros

Si el programa sí contiene macros, será necesario editar dos ficheros distintos
(usando cualquier editor de texto, por ejemplo notepad), ambos deberán llamarse
con la extensión .mr, por ejemplo:


• prog.mr que contendrá el código ensamblador del programa
• macros.mr que contendrá las macros utilizadas en el programa

lugar es necesario


Para ensamblar el programa, en primer
llamar al
preensamblador, que se encarga de expandir las macros. Para preensamblar el
programa, abrir una ventana MS-DOS y ejecutar la siguiente orden:
pren prog.mr macros.mr

Esta orden genera un fichero con el mismo nombre que el programa, pero con
extensión .asm (prog.asm), que contiene el código ensamblador con las macros
expandidas. A continuación es necesario llamar al programa ensamblador para
convertir este programa a código máquina, mediante la siguiente orden



Laboratorio de Fundamentos de computadores

Facultad de Informática
Universidad Complutense de Madrid


Curso 2009/10



posten prog.asm

Esta orden genera un fichero con el mismo nombre, pero con extensión .cod
(prog.cod), que contiene el programa binario en lenguaje máquina.

El procedimeinto completo sería el siguiente:


pren prog.mr macros.mr

posten prog.asm



Laboratorio de Fundamentos de computadores

Facultad de Informática
Universidad Complutense de Madrid


Curso 2009/10



3. Simulador de la máquina rudimentaria


El simulador de la Máquina Rudimentaria ha sido desarrollado por el Departamento
de Arquitectura de Computadores de la Universidad Politécnica de Cataluña y se
puede descargar de la siguiente dirección:


ftp://ftp.ac.upc.es/pub/archives/mr/fuentes


Para arrancar el simulador de la máquina rudimentaria, buscar la aplicación Mr.exe
con el siguiente icono:


Mr.exe



Se abrirá la siguiente ventana:



Laboratorio de Fundamentos de computadores



Facultad de Informática
Universidad Complutense de Madrid


Curso 2009/10



3.1. Carga del programa

Utilizar la opción Cargar del menú Archivo y seleccionar el programa deseado con
extensión .cod


3.2. Ejecución del programa


Ejecución del programa completo

Para ejecutar el programa completo, de principio a fin, ir al menú Ejecutar y
seleccionar la opción Run. Opcionalmente también se puede utilizar la tecla F9


Ejecución instrucción a instrucción

Para realizar una ejecución detallada del programa, instrucción a instrucción, ir al
menú Ejecutar y seleccionar la opción Step. Opcionalmente también se puede
utilizar la tecla F8.

Esta opción puede ser muy útil para depurar el programa


Ejecución ciclo a ciclo

Para ejecutar realizar una ejecución aún más detallada del programa, distinguiendo
entre los distintos ciclos de una instrucción, ir al menú Ejecutar y seleccionar la
opción Cicle. Opcionalmente también se puede utilizar la tecla F7.

Nótese que esta opción es interesante únicamente si deseamos re
  • Links de descarga
http://lwp-l.com/pdf10943

Comentarios de: PARTE II: Programación en ensamblador (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad