Vous êtes sur la page 1sur 70

Tutorial de WIDE Avocet Systems

Microprocesadores

El siguiente tutorial indica paso a paso como generar un projecto y editar un programa en ensamblador.
Ademas de simular el cdigo hexadecimal generado. El simulador WIDE simula al microprocesador Z80.

1. Abrir Wide de tu desktop o de SART de windows




2. Crear un projecto en Project New project



3. Dar nombre al projecto y guardarlo Save







4. Ahora, abrir un archivo nuevo File New



5. Editar ti archivo y
guardarlo
File Save
As








6. Guardar archivo con extensin file_name.asm



5. Editar ti archivo y
guardarlo
File Save
As




7. Antes de realizar la compilacin es necesario especificar que el archivo a compilar esta escrito en
ensamblador. Project Settings (Alt+F7)




















8. El siguiente paso es compilar nuestro archivo file_name.asm Build Build o
mediante (F7)










10. El siguiente paso es simular paso a paso nuestro archivo generado en Hexadecimal
(file_name.HXB).


Debug Stepping Low Level Step o mediante (Ctrl + F11)











11. Al iniciar la simulacin de nuestro programa, la ventana de Diassembly se abrir y mediante
(Ctrl + F11) se realizara paso a paso la ejecucin del programa.




12. Para poder observar el contenido de la memoria y de los registros del microprocesador se realiza lo
siguiente: Debug Views Memory o Registers (Alt+5) o (Alt+6)





13. Finalmente para detener la simulacin se realiza lo siguiente: Debug Stop Debugging
o (Shift+F5)






Cuando se mandan datos a un puerto de salida, como en el ejemplo siguiente. Donde el dato
23H se transfiere al acumulador y este es puesto en OUTPRT, el cual esta definido por la direccin
0C1H. Se genera un archivo portc1.OUT donde se encuentra el cdigo ASCII del
numero 23H. En este caso 23H es equivalente al smbolo en cdigo ASCII de #.










;DATA
LD

OUT
A,23H

(OUTPRT),A
HALT



.ORG





120H
SOURCE:

OUTPRT:
.EQU

.EQU
120H

0C1H
DEFB

END
0AH,0BH



La escritura de los datos enviados a un Puerto (en este caso archivo) se llevara acabo hasta que finalice la
simulacin.


Estructura de Computadores

Tutorial del lenguaje ensamblador del
MIPS


Lenguaje ensamblador es la representacin simblica de la codificacin binaria del computador (lenguaje mquina).
Los lenguaje mquina son bastante similares.

Una herramienta llamada ensamblador (assembler) traduce el lenguaje ensamblador a instrucciones binarias.

Un ensamblador lee un nico archivo fuente en lenguaje ensamblador, y produce un archivo objeto que contiene
instrucciones mquina e informacin de mantenimiento que ayuda a combinar varios archivos objeto en un programa.
Un mdulo puede tener referencias a subrutinas y datos definidos en otros mdulos y bibliotecas. El cdigo de un
mdulo no puede ejecutarse cuando contiene referencias sin resolver a rtulos de otros archivos objeto o bibliotecas.
Otra herramienta llamada enlazador (linker) combina archivos objeto y de biblioteca en un archivo ejecutable.
El lenguaje ensamblador juega dos papeles:

Es el lenguaje de salida de los compiladores. Un compilador traduce un programa escrito en lenguaje de alto nivel
(lenguaje fuente, C) en un programa equivalente en lenguaje mquina o ensamblador (lenguaje objeto).
Es un lenguaje ms con el que escribir programas en los que la velocidad o tamao son crticos, o para explotar las
caractersticas hardware que no tienen anlogos en lenguajes de alto nivel.
Cada lnea puede contener, como mximo, una sentencia.
Los comentarios van al final de la sentencia, precedidos por #. El ensamblador los ignora. Los nombres seguidos por :
son rtulos (etiquetas). Nombran la siguiente posicin de memoria, y van al principio de la lnea

Los operandos pueden ser:
Un registro: $4 o $a0, que puede ir entre parntesis.
Un identificador: Caracteres alfanumricos, _ y . , sin comenzar con un nmero.
Una cadena alfanumrica encerrada entre dobles comillas (), donde puede haber
caracteres especiales segn convenio C (nueva lnea=\n, tabulador=\t, comillas=\...).
Un valor numrico, en base 10. Si van precedidos de 0x indican valores hexadecimal

Ejemplo:

Un programa puede estar escrito en cdigos distintos:

M.C Cdigo en lenguaje de alto nivel (fuente).
M.S Cdigo ensamblador . Puede jugar dos papeles, dependiendo del tipo de compilador:
Es el lenguaje de salida de los compiladores ( cdigo ensamblador sin rtulos).

Lenguaje con el que escribir programas (cdigo ensamblador con rtulos ). Es an importante para escribir
programas en los que la velocidad o tamao son crticos, o para explotar caractersticas hardware que no tienen
anlogos en lenguajes de alto nivel.
M.OBJ Cdigo mquina (objeto). Contiene instrucciones mquina (binarias) e informacin de mantenimiento que
ayuda a combinar varios archivos objeto en un programa.
M.EXE Cdigo ejecutable
compilador ensamblador enlazador
Traduce un cdigo en lenguaje de
alto nivel en uno equivalente en
lenguaje ensamblador (puede
tambin producir lenguaje
mquina directamente con la
ayuda de un ensamblador
integrado ).
Crean saltos y rtulos cuando no
aparecen en el lenguaje
de programacin
Programa que traduce de lenguaje
ensamblador a lenguaje mquina .
Lee un nico archivo fuente en
ensamblador y produce un archivo
objeto
Un mdulo puede contener
referencias a subrutinas y datos
definidos en otros mdulos y
bibliotecas. El cdigo de un
mdulo no puede ejecutarse si
contiene referencias sin
resolver a rtulos de otros
archivos objeto o bibliotecas
Combina una coleccin de
archivos objeto y de biblioteca en
un archivo ejecutable, que el
computador ejecuta


Toda instruccin MIPS necesita 32 bits (igual que una palabra de datos y un registro)


El ensamblador incrementa el n de instrucciones disponibles a los programadores en lenguaje ensamblador y a los
compiladores, mediante las pseudoinstrucciones.
Son instrucciones del lenguaje ensamblador que no necesitan ser implementadas en hardware.

El ensamblador MIPS maneja pseudoinstrucciones reservando $1 para su uso como registro temporal

Ejemplo 2

blt = pseudoinstruccin saltar sobre < que
Implementar blt en hardware lo complicara, pues aumentara la duracin del ciclo de reloj, o bien esta instruccin
tendra ciclos de reloj extra por instruccin (por simplicidad, queremos que las instrucciones se ejecuten en un n de
ciclos de reloj iguales). Dos instrucciones ms rpidas seran ms tiles

Los nombres que comienzan con un punto (.data, .globl, ..) son directivas del ensamblador: indican al ensamblador
cmo traducir un programa, pero no producen instrucciones mquina
Directiva Descripcin
.align n
Alinea el siguiente dato sobre un lmite de 2
n
byte (.align 2,
.align 0.,..)
.ascii str Almacena la cadena str en memoria, pero no la termina con el
caracter nulo.

.asciiz str Almacena la cadena str en memoria, y la termina con el caracter
nulo.
.byte/half/word Almacena los n valores de 8/16/32 bits en bytes/medias
palabras/palabras b1, ..., bn consecutivas de memoria.
.double/float Almacena los n nmeros de punto flotante de doble/simple
precisin en f1,....,fn posiciones consecutivas de memoria.
.data Los elementos siguientes son almacenados en el segmento de
datos.
.kdata Los elementos siguientes son almacenados en el segmento de
datos del ncleo.
.text Los elementos siguientes son almacenados en el segmento de
texto. Estos elementos slo pueden ser instrucciones o palabras.
.ktext Los elementos siguientes son almacenados en el segmento de
texto del ncleo.
Estos elementos slo pueden ser instrucciones o
palabras.
.space n Asigna n bytes de espacio en el segmento actual (debe ser seg.
datos en SPIM)
.extern sym size Declara que el dato almacenado en sym ocupa size
bytes y es un global. El ensamblador lo pone en parte del
segmento de datos fcilmente accesible via
$gp
.globl sym Declara sym como global: se puede referenciar desde otros
archivos.
Hay 32 registros ($0, $1, ..., $31) de 32 bits (palabra).

Cuando un programa tiene ms variables que registros, el compilador almacena las variables ms utilizadas en los
registros, y las restantes en memoria: derramar registros (spilling).

Nombr
e
Nme
ro
Uso
zero 0 Constante 0 (valor cableado)
at 1 Reservado para el ensamblador
v0, v1 2, 3 Evaluacin de expresin y resultado de una funcin
a0, ....,
a3
4, ....,
7
Argumentos a rutina (resto de argumentos, a pila)
t0, ....,
t7
8, ....,
15
Temporales (no preservados a travs de llamada, guardar
invocador)
s0, ....,
s7
16, ....,
23
Guardado temporalmente (preservado a travs de llamada,
guardar invocado)
t8, t9 24, 25 Temporales (no preservados a travs de llamada, guardar
invocador)
k0, k1 26, 27 Reservados para el ncleo del S.O.
gp 28 Puntero global, apunta a la mitad de un bloque de 64K en seg.
datos estticos
sp 29 Puntero de pila, apunta la primera posicin libre en la pila
fp 30 Puntero de encuadre
ra 31 Direccin de retorno (usada por llamada de procedimiento)

MIPS es una arquitectura de carga/almacenamiento

Slo las instrucciones de carga y almacenamiento acceden a memoria, segn los clculos efectuados sobre valores en
los registros.
Alineacin: una cantidad est alineada si su direccin de memoria es un mltiplo de su tamao en bytes
Ejemplo: Una palabra de 32 bits debe almacenarse en direcciones mltiplo de 4.

Casi todas las instrucciones de carga y almacenamiento operan slo sobre datos alineados. Instrucciones para alinear
datos no alineados: lwl, lwr, swl y swr.
Modos de direccionamiento

Formato Clculo de la direccin Ejemplo
(registro) Contenido del registro
(cr)
lw $t0,($t2)
valor Valor inmediato (vin) lw $t0,0x10010008
valor (registro) vin + cr lw
$t0,0x10010000($t1)
identificador direccin del identificador
(did)
lw $t0,array
identificador +/- valor did +/- vin lw $t0,array+8
identificador (registro) did + cr lw $t0,array($t1)
identificador +/- valor
(registro)
did +/- vi + cr lw $t0,array+4($t1)

Registros para tratar las excepciones e interrupciones.
Son accedidos por las instrucciones lwc0, mfc0, mtc0 y swc0
SPIM slo implementa los siguientes :
Nombre N
me
ro
Uso
BadVAdre
ss
8 Direccin de memoria en donde ocurre la
excepcin
Status 12 Mscara de interrupcin y bits de habilitacin
Cause 13 Tipo de excepcin y bits de interrupcin
pendiente
EPC 14 Direccin de la instruccin que caus la
excepcin

Instrucciones para manejar excepciones.
rfe Vuelta desde
excepcin
Restaura el registro Status
syscall Llamada al sistema El registro $v0 contiene el nmero de la
llamada al sistema (ver la tabla de llamadas
al sistema)
break Produce excepcin n Provoca la excepcin n. La exception
1 se reserva para el depurador
(debugger)
nop no operacin No hace nada
Cdigos de excepciones
Nm
ero
Nombre Uso
0 INT Interrupcin externa
4 ADDRL Excepcin error direccin (carga desde memoria o captura de
instruccin)
5 ADDRS Excepcin error direccin (almacenamiento en memoria)

6 IBUS Error de bus durante una captura de instruccin
7 DBUS Error de bus durante una carga o almacenamiento
8 SYSCA
LL
Excepcin llamada al sistema
9 BKPT Excepcin provocada por un punto de ruptura (breakpoint)
10 RI Excepcin de instruccin reservada
12 OVF Excepcin provocada por overflow aritmtico

Conjunto de servicios parecidos al SO a travs de la instruccin syscall.
$v0: cdigo de llamada al sistema
$a0, $a1, o $f12: argumentos
Resultados tras syscall: $v0 (o $f0)


El ensamblador MIPS direcciona bytes individuales. Las palabras de memoria son de 32 bits (4 Bytes).
La memoria direccionable tiene un tamao de 230 palabras.
Las instrucciones de carga y almacenamiento comunican datos entre memoria y registros. La instruccin debe
suministrar una direccin de memoria.
Las direcciones comienzan en 0.
El compilador asigna estructuras de datos (como los arrays) a posiciones de memoria, colocando la direccin
adecuada de comienzo en las instrucciones de carga o almacenan.


Una direccin de memoria es la direccin de 1 byte de memoria
Si esa dir. es la del primer byte de una palabra (00), es como si fuera la dir. de la palabra. MIPS considera este
direccionamiento para la memoria virtual.

Los segmentos de pila y datos son expandibles dinmicamente.
Estn tan distantes como sea posible, y pueden crecer para utilizar el espacio completo de direcciones del programa.

En C, malloc encuentra y devuelve un nuevo bloque de memoria, expandiendo el rea dinmica con la llamada del
sistema sbrk, que hace que el S.O. aada ms pginas al espacio de direcciones virtuales del programa,
inmediatamente antes del segmento de datos dinmicos




Gobierna el uso de registros cuando los procedimientos de un programa se compilan separadamente. Son convenios
software, no hardware
Un compilador debe conocer los registros que puede usar y los reservados a otras rutinas. Hay dos convenios
estndares (se aplica uno u otro en una llamada a procedimiento):




SPIM es un simulador que ejecuta programas ensamblador del MIPS R2000
Contiene un depurador y proporciona algunos servicios como el sistema operativo
SPIM es un simulador virtual
Para hacer frente a la difcil programacin de la arquitectura MIPS, SPIM hace:
Oculta instrucciones (saltos y cargas) retardadas (segmentacin), reorganizando las instrucciones para ajustar los
huecos del retardo.
Amplia el conjunto de instrucciones del hardware real mediante pseudoinstrucciones, simulando stas mediante
cortas secuencias de instrucciones reales.



Editamos el cdigo ensamblador file.s en cualquier procesador de texto ASCII. Abrimos PCSPIM

Cargamos file.s mediante File -> Open





Men del simulador:


Clear Registers Pone todos los registros con el valor cero (0x00000000).
Reinitialize Borra el contenido de los registros y de la memoria, e inicia el simulador. Reload
Reinitializa el simulador, y carga el cdigo ensamblador actual.
Go Ejecuta el cdigo actual.
Break/Continue Durante la ejecucin, la para. Si est parada, la contina. Single Step Ejecuta instruccin
a instruccin.
Multiple Step... Ejecuta un nmero de instrucciones especificado por el usuario. Breakpoints... Abre una
ventana para especificar las posiciones de los puntos de ruptura.
Set Value... Abre una ventana para establecer valores de memoria o de registros. Symbol table
Muestra la tabla de smbolos en la ventana de mensajes.
Settings Ventana para seleccionar las opciones de SPIM.

SIMULADOR DE LOS MICROPROCESADORES UAMICRO
(on esta opcin se pueden cargar en la memoria de la UAMICRO programas que se e11cuentrcn en disco asi como
salvarlos. activar la opcin Archivos aparece una ventana en la UAMICRO con las siguientes opciones


Pantalla de la UAMICRO con las nuevas opciones
Podemos activar una de las opciones desplazndose con las flechas arriba y abajo.

CARGAR.- Al seleccionar la opcin cargar, aparece otra ventana pidiendo el nombre del Archivo a cargar. Es
importante hacer notar que el nombre del archivo debe estar exento de Extensin ya que el simulador de la una
extensin predeterminada. Si el archivo que se intentar cargar no existe. entonces aparece un mensaje de Error el cual
desaparece presionando la tecla
Esc:

Pantalla que muestra la activacin de la opcin Cargar
Si el archivo existe para la versin de la UAMICRO que se est activando, entonces
apareceran las instrucciones que corresponden al programa en la memoria del simulador, asi
como los valores con los que se guardaron los registros.
SALVAR.- Al utilizar la opcion salvar, el simulador muestra una ventana preguntando el nombre
quc tendrj el archivo. Si el archivo existe, entonces aparecer otra ventana indicando si se desea
reemplazar el archivo. Si presiona la letra "S", el archivo ser reemplazado pero si la tecla

presionada es "N", entonces el simulador pedir otro nombre para el archivo

Al activar la opcin Salvar, se pide un nombre sin extensin
DIRECTORIO- activar esta opcin, el simulador nos despligalo archivos que se encuentran
Con el Directorio actual de trabajo indicando el numero de archivos y la cantidad de espacio
ocupado as como la cantidad libre, adems de desplegar las caractersticas de cada uno como son fecha. hora y
tamao.



Ejemplo del desplegado del Directorio al utilizar esta opcin del simulador

DOSSHELL.- Esta opcin permite salir temporalmente al sistema operativo, dejando residente al simulador. Para
regresar al simulador nicamente se teclea desde el prompt del sistema la
palabra "EXIT".



Pantalla de trabajo que deja el simulador al momento de activar el dosshell
E.IEMI'LOS DE PROGRAMAS PARA LAS UAMICROS
I,os programas que aqu se muestran tienen el objetivo de enriquecer la cantidad de
Ejemplos que se mencionan en el libro Sistemas Digitales pero solamente se harn uso de unas cuantas
instrucciones de cada una de las UAMICROS.

EJEMPLO 1
SIMUMLADOR: UAMICROS
DESCRIPCION: cuenta regresiva de2 en 2 desde 20h hasta OOh








EJEMPLO 2
SIMUMLADOR: UAMICROS
DESCRIPCION: Este programa despliega una cuenta ascendente desde O0 hasta OF





SIMULADOR / EMULADOR DEL MICROPROCESADOR
65C02


Simulador SIM-650C.
La interfaz que forma el simulador Sin -650C Se divide en diferentes secciones:

Programa: Representacin mnemnica de Ia memoria, slo on las zonas en las que riene sentido dicha
represenracin como son la zona de programa de usuario (0400H-l FFFH) y kzonade Rom (E000H-FFFFH).

Memoria: Contendo hexadecinal de cada posicin de memoria.

Registros: Valor que poseen los registros internos de este microprocesador como son;
Contador de programa (PC)
Punteio do pila (SP)
Atumulador (A)
Registro X CX)

Registro Y (Y)
Registro & estado (P)

Va de usuario: Valor de cada uno de los registros infernos de configuracin de esta Via.
Pagina Ccro: Acceso rapido al contenido de memoria de a pagina cero de este sistema

Pila: Posicion del puntero de Piia y contenido de esta en todo momento.

Dispone adems de diferentes herramientas de ayuda como son:
-


Visor para examinar el programa de usuario cargado en sus tres posibles formatos Hex.aMm o lst.
Editor de texto para insertar cdigo en el programa de usuario

o bien para crear uno
nuevo-

Herramienta de ayuda para el carnbio de sistema de numeracin -

Buscador de mnemOnicos o seduencia de codigo


Localizador de posiciorles de memoria
Comunicacin con el
microinstruccin MI-650C.
-


Posibilidad de veR La ejecucin de rutinas Del programa monitor.
-


PanLalla de display Teclado y Puertos como apoyo en Ia simulacin, de las rutinas que hacen uso de estos elementos

Visor para Ia comprobacin de las operaciones aritmticas. lgicas y & rotacin.


Botn para activar Ia interupcion LRQ y ejecutar a rutina de interrupcin
En Ia figura 1 se observa la pantalla principal del Simulador y como est dividida en las diferentes
secciones ames descritas














CONJUNTO DE HERRAMIENTAS MSX88



Actualmente, el kit de aprendizaje MSX88, est compuesto por las siguientes herramientas:

A S M 8 8 : Ensamblador para la CPU SX88.

LINK88: Programa montador para el MSX88

MSX88: Emulador del sistema microcomputador, cuya CPU es SX88.
La CPU SX88, como cualquier otra, tiene su propio ensamblador, ste es el ASM88., que es capaz de ensamblar
cualquier programa fuente escrito en lenguaje de ensamble del SX88, generando dos ficheros a partir del primero; un
fichero objeto con extensin .OBJ, destinado a ser procesado nicamente por el montador LINK88, y un fichero
listado con extensin .LST, cuya generacin es opcional.

El ASM88 es un ensamblador cruzado, es decir, se ejecuta en una mquina distinta - el PC bajo MS-DOS- , de en la
que corrern los programas que ensambla - el MSX88-. El cdigo que produce es no reubicable, se ha de elegir una
ubicacin fija para los programas y datos dentro del espacio de memoria definido en el MSX88, de esta manera
siempre se tiene un control total sobre lo que se est haciendo
Su invocacin se realiza desde el DOS, tecleando;

indica que ste es opcional, ya que de no ser suministrado en la invocacin, ser el propio ensamblador quien lo
solicitar.

LINK88 es el nombre del programa montador de los programas objetos producidos por el ASM88., que al
igual que el ltimo, es un montador cruzado.

No tiene funciones de enlazador, pues el tamao de los programas a ejecutar en el MSX88, hace que carezca
de sentido la realizacin de una programacin modular. Pero an as, se mantiene esta herramienta dentro del entorno,
para mantener la coherencia con el resto de los entornos de desarrollo software existentes, consiguiendo de esta
manera, que el modo de trabajo con el MSX88 sea lo ms parecido al de con cualquier sistema real.


A pesar de que los ficheros objetos y ejecutables tendrn un aspecto muy similar. el MSX88, no es capaz de
cargar los programas si estos no han sido procesados antes por LINK88.

MSX88 es el programa que constituye el ncleo del entorno de herramientas. Es un emulador de un sistema
digital basado en microprocesador, cuya CPU denominada SX88, se puede ver como un 8088 simplificado.

Desde sus comienzos, en los que tan slo contaba de CPU y memoria, MSX88 ha sufrido una notable
evolucin, pasando actualmente a incorporar un bloque de periferia, admitiendo diversos conexionados y
configuraciones. An as, lo que se ha conservado como una constante a lo largo de las diversas versiones de este
emulador, es la equivalencia, en la medida de lo posible, de sus elementos con CPUs y perifricos de la familia
aadir, nunca quitar u olvidar, a lo aprendido sobre el MSX88.

Para arrancar el programa, tan slo es necesario teclear desde el DOS;

MSX88 CR>







Descripcin del MSX88
BLOQUES CONSTITUTIVOS



PANTALLAS Y CONFIGURACIONES
Las distintas formas de conectar el conjunto CPU-Memoria con los perifricos, determinan las diferentes
configuraciones posibles en MSX88. A su vez, cada uno de stos modos de conexionado, se muestra al usuario a
travs de dos pantallas; pantalla 0 y pantalla
1. La primera de ellas, es la pantalla principal que inicialmente se muestra tras arrancar el programa (figura-
1), siendo comn a todas las configuraciones. En sta, se representa la CPU mostrando toda su arquitectura
interna, la memoria, y el bloque de periferia que a la vez que evidencia su presencia, oculta su
complejidad, junto con buses que constituyen los caminos de comunicacin entre stos bloques. Se
concibe como una pantalla bsica orientada a los usuarios que se inician en el tema, en la que los
objetivos de estudio se centrarn en el funcionamiento bsico de la CPU.

La pantalla 1 (figuras 2 a 5) se centra en el estudio de los perifricos. sta a diferencia de la anterior, vara
en funcin de la configuracin en la que se encuentre el emulador en un determinado momento. An as,
existen una serie de elementos, situados en la parte superior, que se mantendrn constantes a lo largo de
todas las configuraciones; se trata del conjunto CPU-Memoria, representado a la izquierda, y de los
perifricos PIC y Timer, que se visualizan en la parte derecha. El resto de los elementos que se visualicen
en esta pantalla, vendrn determinados por la configuracin o modo de conexionado seleccionado por el
usuario.

Se establecen cuatro modos de conexionado en MSX88:


Conexionado 0: Es el ms simple de todos ellos (figura 2), pues no contempla los elementos relacionados
con las interrupciones. A los elementos constantes situados en la parte superior, que sern invariantes para
el resto de conexionados, incorpora el PIO conectado a una barra de Leds y a otra de microconmuta-dores.

Conexionado 1: Este, (figura 3) sustituye la barra de Leds y microconmutadores de la configuracin
anterior por una impresora con un Interfaz Centronics, que habr de ser implementado por el usuario.


Conexionado 2: Esta configuracin (figura 4) es idntica a la anterior con la salvedad de haber
sustituido el PIO por un dispositivo que hace handshaking, implementando el Interfaz Centronics necesario para
conectarse a la impresora. La relacin entre ste y la CPU se lleva a cabo bien a travs de interrupciones, o bien por
consulta de estado.

Conexionado 3: Es la configuracin ms compleja de todas (figura 5), pudindose ver como un conexionado 2, al
que se le ha incorporado un CDMA conectado al Hand y a los buses del sistema


LENGUAJE MAQUINA1

El set de instrucciones que ofrece esta CPU es una parte real del repertorio de instrucciones del
microprocesador 8086/88, que recoge solamente las instrucciones ms generales y usuales.

M0D0S DE DIRECCI0NAMIENT02


Las instrucciones del SX88 estn codificadas con cero, uno o dos operandos (registro, memoria, dato
inmediato). Las operaciones se hacen entre registros, registros y memoria, datos inmediatos y registros, o
entre datos inmediatos y memoria, pero nunca entre memoria y memoria. Los modos de direccionamiento de los
operandos indican la manera de calcular la direccin real de stos.

Los siguientes tipos de direccionamiento son utilizados en las instrucciones de esta CPU para referenciar a
los operando involucrados en la instruccin:

Direccionamiento inmediato.

El operando es un dato inmediato contenido en la instruccin, con lo que el tamao de la
instruccin viene condicionado por el tamao del operando.

Direccionamiento directo.

En la instruccin se indica la direccin real de memoria en la que est contenido el operando. Si el
operando ocupa varias posiciones de memoria consecutivas, en la instruccin figurar la direccin ms
baja.

Direccionamiento indirecto a travs del registro BX.

La direccin de memoria donde est el operando viene determinada por el contenido del
registro BX.

Direccionamiento relativo a contador de programa.

Este tipo de direccionamiento se utiliza en las instrucciones de salto condicional, en
las que la direccin de salto se obtiene sumando al registro IP el desplazamiento contenido en la propia
instruccin.

TIP0S DE INSTRUCCI0NES2

Desde un punto de vista funcional se pueden distinguir los siguientes tipos de instrucciones:
Instrucciones de transferencia de datos: MOV.

Instrucciones aritmtico-lgicas:

- Instrucciones aritmticas: ADD, ADC, SUB, SBB.

- Instrucciones lgicas: AND, OR, XOR, NEG, NOT.

Instrucciones de comparacin: CMP.

Instrucciones de incremento/decremento: INC, DEC.


Instrucciones de manejo de la Pila: PUSH, POP, PUSHF, POPF.

Instrucciones de cambio de flujo de programa:

- Instrucciones de salto incondicional: JMP.

- Instrucciones de salto condicional: JZ, JNZ, JS, JNS, JC, JNC, JO, JNO.

- Instrucciones asociadas a subrutinas: CALL, RET.

Instrucciones de gestin de las Interrupciones: INT, IRET, STI, CLI.

Instrucciones de control: NOP, HLT.

Instrucciones de entrada/salida: IN, OUT.

CODIG0 MAGUINA DE LAS INSTRUCCI0NES2

A continuacin, se muestra el cdigo mquina de cada una de las instrucciones de la
CPU SX88. En su codificacin, se han utilizado las siguientes abreviaturas:

W: Indica el tamao de los operandos:
W SIGNIFICADO
0 operandos de 8 bits
1 operandos de 16 bits

r

R
r

R
r

R


W = 0


W = 1
0 0 0 AL AX
0 0 1 CL CX
0 1 0 DL DX
0 1 1 BL BX
1 0 0 AH SP
1 0 1 CH - -
1 1 0 DH - -

1 1 1 BH --

INSTRUCCI0NES DE TRANSFERENCIA2



MOV memoria, registro

Direccionamiento directo:

1000100W 00rrr110 LSB dir MSB dir
Direccionamiento indirecto:

1000100W 00rrr111



MOV registro, memoria

Direccionamiento directo:

1000101W 00rrr110 LSB dir MSB dir
Direccionamiento indirecto:

1000101W 00rrr111



MOV memoria, dato inmediato

Direccionamiento directo:

1100011W 00000110 LSB dir MSB dir LSB dato MSB dato
Direccionamiento indirecto:

1100011W 000000131 LSB dato MSB dato


MOV registro, dato inmediato

1011Wrrr LSB dato MSB dato




MOV registro, REGISTRO

1000101W 11rrrRRR


INSTRUCCI0NES ARITMETIC0-LOGICA S2
INSTRUCCIONES ARITMTICAS.

ADD memoria, registro

Direccionamiento directo:

0000000W 00rrr110 LSB dir MSB dir
Direccionamiento indirecto:

0000000W 00rrr111



ADD registro, memoria

Direccionamiento directo:

0000001W 00rrr110 LSB dir MSB dir
Direccionamiento indirecto:

0000001W 00rrr111



ADD memoria, dato inmediato

Direccionamiento directo:

1000000W 00000110 LSB dir MSB dir LSB dato MSB dato
Direccionamiento indirecto:

1000000W 00000111 LSB dato MSB dato


ADD registro, dato inmediato

1000000W 11000rrr LSB dato



ADD registro, REGISTRO

0000001W 11rrrRRR




ADC memoria, registro

Direccionamiento directo:

0001000W 00rrr110 LSB dir MSB dir


Direccionamiento indirecto:

0001000W 00rrr111



ADC registro, memoria

Direccionamiento directo:
14



0001001W 00rrr110 LSB dir MSB dir
Direccionamiento indirecto:

0001001W 00rrr111



ADC memoria, dato inmediato

Direccionamiento directo:

1000000W 00010110 LSB dir MSB dir LSB dato MSB dato
Direccionamiento indirecto:

1000000W 00010111 LSB dato MSB dato


ADC registro, dato inmediato

1000000W 11010rrr LSB dato MSB dato


ADC registro, REGISTRO

0001001W 11rrrRRR



SUB memoria, registro

Direccionamiento directo:

0010100W 00rrr110 LSB dir MSB dir
Direccionamiento indirecto:

0010100W 00rrr111


15



SUB registro, memoria

Direccionamiento directo:

0010101W 00rrr110 LSB dir MSB dir
Direccionamiento indirecto:

0010101W 00rrr111



SUB memoria, dato inmediato

Direccionamiento directo:

1000000W 00101110 LSB dir MSB dir LSB dato MSB dato
Direccionamiento indirecto:

1000000W 00101111 LSB dato MSB dato
16



SUB registro, dato inmediato

1000000W 11101rrr LSB dato MSB dato


SUB registro, REGISTRO

0010101W 11rrrRRR



SBB memoria, registro

Direccionamiento directo:

0001100W 00rrr110 LSB dir MSB dir
Direccionamiento indirecto:

0001100W 00rrr111



SBB registro, memoria

Direccionamiento directo:

0001101W 00rrr110 LSB dir MSB dir
Direccionamiento indirecto:

0001101W 00rrr111



SBB memoria, dato inmediato

Direccionamiento directo:

1000000W 00011110 LSB dir MSB dir LSB dato MSB dato
17


Direccionamiento indirecto:

1000000W 00011111 LSB dato MSB dato


SBB registro, dato inmediato

1000000W 11011rrr LSB dato MSB dato


SBB registro, REGISTRO

0001101W 11rrrRRR
18


INSTRUCCIONES LGICAS.



AND memoria, registro

Direccionamiento directo:

0010000W 00rrr110 LSB dir MSB dir
Direccionamiento indirecto:

0010000W 00rrr111



AND registro, memoria

Direccionamiento directo:

0010001W 00rrr110 LSB dir MSB dir
Direccionamiento indirecto:

0010001W 00rrr111



AND memoria, dato inmediato

Direccionamiento directo:

1000000W 00100110 LSB dir MSB dir LSB dato MSB dato
Direccionamiento indirecto:

1000000W 00100111 LSB dato MSB dato


AND registro, dato inmediato

1000000W 11100rrr LSB dato MSB dato
19




AND registro, REGISTRO

0010001W 11rrrRRR



OR memoria, registro

Direccionamiento directo:

0000100W 00rrr110 LSB dir MSB dir
Direccionamiento indirecto:

0000100W 00rrr111
20


OR registro, memoria

Direccionamiento directo:

0000101W 00rrr110 LSB dir MSB dir
Direccionamiento indirecto:

0000101W 00rrr111



OR memoria, dato inmediato

Direccionamiento directo:

1000000W 00001110 LSB dir MSB dir LSB dato MSB dato
Direccionamiento indirecto:

1000000W 00001111 LSB dato MSB dato


OR registro, dato inmediato

1000000W 11001rrr LSB dato MSB dato


OR registro, REGISTRO

0000101W 11rrrRRR



XOR memora, registro

Direccionamiento directo:

0011000W 00rrr110 LSB dir MSB dir
Direccionamiento indirecto:

21


0011000W 00rrr111



XOR registro, memoria

Direccionamiento directo:

0011001W 00rrr110 LSB dir MSB dir
Direccionamiento indirecto:

0011001W 00rrr111



XOR memoria, dato inmediato

Direccionamiento directo:

1000000W 00110110 LSB dir MSB dir LSB dato MSB dato
22


Direccionamiento indirecto:

1000000W 00110111 LSB dato MSB dato


XOR registro, dato inmediato

1000000W 11110rrr LSB dato MSB dato


XOR registro, REGISTRO

0011001W 11rrrRRR



NEG memoria

Direccionamiento directo:

1111011W 00011110 LSB dir MSB dir
Direccionamiento indirecto:

1111011W 00011110 LSB dir MSB dir


NEG registro

1111011W 00011111



NOT memoria

Direccionamiento directo:

1111011W 00010110 LSB dir MSB dir
Direccionamiento indirecto:

23


1111011W 00010111



NOT registro

1111011W 11010rrr



4.2.2.2 INSTRUCCI0NES DE C0MPARACIdN2



CMP memoria, registro

Direccionamiento directo:

0011100W 00rrr110 LSB dir MSB dir
24


Direccionamiento indirecto:

0011100W 00rrr111



CMP registro, memoria

Direccionamiento directo:

0011101W 00rrr110 LSB dir MSB dir
Direccionamiento indirecto:



0011101W 00rrr111



CMP memoria, dato inmediato

Direccionamiento directo:

1000000W 00111110 LSB dir MSB dir LSB dato MSB dato
Direccionamiento indirecto:

1000000W 00111111 LSB dato MSB dato


CMP registro, dato inmediato

1000000W 11111rrr LSB dato MSB dato


CMP registro, REGISTRO

0011101W 11rrrRRR


25



4.2.2.2 INSTRUCCI0NES DE INCREMENT0IDECREMENT02



INC memoria

Direccionamiento directo:

1111111W 00000110 LSB dir MSB dir
Direccionamiento indirecto:

1111111W 00000111



INC registro

1111111W 11000rrr
20


DEC memoria

Direccionamiento directo:

1111111W 00001110 LSB dir MSB dir
Direccionamiento indirecto:

1111111W 00001111



DEC registro

1111111W 11001rrr



4.2.2.2 INSTRUCCI0NES DE MANEJ0 DE LA PILA2



PUSH registro

01010rrr



POP registro

01011rrr



PUSHF


10011100



POPF

21


10011101





4.2.2.2 INSTRUCCI0NES DE CAMBI0 DE FLUJ0 DE PR0GRAMA2


INSTRUCCIN DE SALTO INCONDICIONAL.

JMP direccin

11101001 LSB dir MSB dir



INSTRUCCIONES DE SALTO CONDICIONAL.

JZ desplazamiento

01110100 desplazam.



JNZ desplazamiento

01110101 desplazam.



JS desplazamiento

01111000 desplazam.



JNS desplazamiento

01111001 desplazam.



JC desplazamiento

01110010 desplazam.



JNC desplazamiento

01110011 desplazam.



JO desplazamiento

01110000 desplazam.



JNO desplazamiento

01110001 desplazam.
INSTRUCCIONES ASOCIADAS A SUBRUTINAS. CALL
direccin




11101000 LSB dir MSB dir



RET


11000011



4.2.2 S21NSTR5CC10NES DE GEST1dN DE LAS 1NTERR5PC10NES2



INT nmero

11001101 nmero



IRET


11001111



STI


11111011



CLI


11111010



INSTRUCIONES DE C0NTR0L2


NOP


10011000



HLT


11110100








INSTRUCCIONES DE ENTRADA Y SAL1DA2



IN AL, direccin

11100100 direccin



IN AX, direccin

11100101 direccin



OUT direccin , AL

11100110 direccin



OUT direccin, AX

11100111 direccin

N AL, DX

11101100






IN AX, DX

11101101



OUT DX, AL

11101110



OUT DX, AX

11101111







La memoria del MSX88 se representa en pantalla como un bloque en cuyo interior existe una
ventana de 9 posiciones. La posicin central de sta, representa el octeto que est siendo direccionado
en cada momento de la ejecucin de un programa.

Adems, en la pantalla principal, es posible visualizar una segunda ventana idntica a la descrita,
concibindose sta ltima como un rea de datos, que a diferencia de la primera, durante la
ejecucin de un programa, permanecer fijada en torno a la posicin especificada por el usuario.




El MSX88 posee un total de 64 Kbytes direccionados linealmente.El usuario tiene a su
disposicin, un total de 32 Kbytes (desde la posicin 0000H hasta la 7FFFH), estando los 32
Kbytes de memoria alta ocupados por el programa monitor (sistema operativo). Por ello, las escrituras
por encima de la direccin 7FFFH pueden dar lugar a comportamientos anmalos de la aplicacin.




En el primer Kbyte se encuentra la tabla de vectores de interrupcin, tal como ocurre en el
microprocesador en el que se inspira.


Las interrupciones de la CPU SX88 son las mismas que las del 8086/88, siendo stas las
siguientes:

Hardware: Lneas INT y NMI. Conectadas a distintos perifricos en funcin de la
configuracin.

Software: Instruccin INT xx.

l proceso de atencin de una interrupcin es idntico al usado por la CPU 8086/88, siendo todas
vectorizadas, excepto NMI que es de salto indirecto.




La tabla de vectores de interrupcin es el nexo de unin entre un tipo de interrupcin (0...255) y
el procedimiento que ha sido designado para atenderla. Cada interrupcin vectorizada tiene un cdigo
que la identifica para la CPU. Existen por lo tanto 256 entradas en la tabla, una para cada tipo de
interrupcin.

Cada entrada de la tabla es una doble palabra (4 bytes) que contiene la direccin del
procedimiento que va a dar servicio al tipo de interrupcin correspondiente. La palabra (16 bits)
situada en la direccin ms alta de memoria estar siempre a cero debido a que la memoria del
MSX88 slo consta de un segmento de 64 Kbytes, mientras que la segunda es donde el usuario deber
cargar la direccin lgica (en el SX88 coincide con la direccin fsica) de comienzo de la rutina de
tratamiento de la interrupcin que corresponda.

Las 256 posibles interrupciones, correspondientes a los cdigos del 0 al 0FFH, estn organizadas
en la siguiente forma:

- Cuatro interrupciones software que ocupan las posiciones correspondientes a los tipos
0, 3, 6, y 7.:




TIPO 0: Finaliza la ejecucin de un programa.

TIPO 3: Sirve para poner puntos de parada despus de la ejecucin de instrucciones
concretas.

TIPO 6: Espera para leer un carcter del teclado y lo almacena en la posicin de
memoria cuya direccin se indica en el registro BX.

TIPO 7: Escribe en la pantalla de comandos un bloque de datos. La direccin de
comienzo del bloque se deber cargar en el registro BX ,y el nmero de datos
que componen el bloque en el registro AL.

- 251 interrupciones libres para ser utilizadas por el usuario.





Como todo sistema microcomputador, MSX88 posee una serie de perifricos propios, pudindose
establecer una clara distincin entre perifricos internos, y perifricos externos.




Dentro de este grupo se distinguen los siguientes:

PIO: Puertos paralelo de entrada/salida.

HAND-SHAKE: Perifrico de Handshaking.

PIC: Controlador de interrupciones.

TIMER: Contador de eventos.

CDMA: Controlador de Acceso directo a memoria.






Conjunto de dispositivos integrado por la pantalla, las unidades de disco y el teclado del ordenador
donde se ejecuta MSX88, y adems por los siguientes:

Barra de LEDS.

Barra de Microconmutadores.

Impresora.




Es una interfaz de entrada/salida de propsito general, que presenta dos puertos paralelo de 8 bits,
denominados A y B, pudindose programar sus bits individualmente como entrada o salida. Tras un reset,
ambos puertos son configurados como entradas.

Posee cuatro registros internos de ocho bits:

Dos de datos: PA y PB, destinados a contener el dato presente en los puertos A y B,
respectivamente.

Dos de control: CA y CB, que permiten programar individualmente los bits de los puertos A
y B, respectivamente. La programacin, consiste en realizar una operacin de escritura sobre el bit
correspondiente al que se programa. Escribiendo un 0 el bit quedar configurado como salida,
mientras que un 1 lo configura como entrada.
7.2.212 Seleccin de regisrrss2

El acceso a los registros, tanto en lectura como en escritura, se hace de acuerdo a la siguiente tabla:

A1 A0 Registro
0 0 PA
0 1 PB
1 0 CA
1 1 CB





Para lograr un acceso se debe activar tambin la seal CS del PIO. El acceso ser de escritura o
de lectura en funcin del estado de las seales IOW e IOR..



7.2.2.2 Csnexin en el sisrema.2

En el sistema, los registros del PIO se sitan a partir de la direccin 30H, y la conexin de sus
lneas es la que sigue:

- CS: conectada a la salida CS2 de la lgica de seleccin de la periferia.

- IOR , IOW: se conectan a las lneas del mismo nombre de la lgica de generacin de las seales
de lectura/escritura.

- D0...D7: conectados a los bits correspondientes del bus de datos del sistema.

A0
,
, A1: conectadas a los bits menos significativos del bus de direcciones (A0 y A1
,
,
respectivamente).

- PA0...PA7, PB0...PB7: tienen dos posibles conexiones en funcin de la configuracin en que se
encuentre el PIO:

- Configuracin 0 (figura 2): se conectan a los correspondientes bits de los buses de los
microinterruptores (PA0...PA7), y de los leds (PB0...PB7).

- Configuracin 1 (figura 3): se conectan a un bus Centronics de impresora,
correspondindose con las siguientes lneas del interfaz:

PA0: lnea busy .

PA1: lnea strobe.

PB0...PB7: lneas de datos.







Interfaz de periferia que cumple la temporizacin especificada en el interfaz Centronics, no
admitiendo modo de programacin alguno. Se comunica con la CPU por consulta de estado o a travs de
interrupciones, en funcin del BIT 7 de su registro de estado.

Internamente posee dos registros de 8 bits:

- DATO: Registro de datos. Una operacin de escritura sobre ste permite sacar un dato a las lneas
D0...D7, mientras que una lectura del mismo proporciona el ltimo dato sacado por las lneas
D0...D7.

- EST: Registro de estado. Su formato es el que se muestra a continuacin:

INT










STR BUSY
El significado de los bits es el que sigue:

- En lectura:

BIT 0: 0: Lnea BUSY desactivada.

1: Lnea BUSY activada.

BIT 1: 0: Lnea STROBE desactivada

1: Lnea STROBE activada

BITS 2...6: No tienen sentido.

BIT 7: 0: No se activar la lnea INT.

1: Se activar la lnea INT cuando la lnea BUSY no est
activada.

- En escritura:

BIT 0...6: Su contenido es indiferente.




BIT 7: 0: Inhibe la activacin de la lnea INT.

1: La lnea INT se activar al desactivarse la lnea BUSY.

ELECCIN DE REGISTRO

El acceso a los registros, tanto en lectura como en escritura, se hace de acuerdo a la siguiente
tabla:

A
0
DATO
0

1
Regis
tro

E
S
T


Para lograr un acceso se debe activar tambin al seal CS del HAND. El acceso ser de escritura o
de lectura en funcin del estado de las seales IOW e IOR..



Conexin en el sisrema.2

En el sistema, los registros del HAND se sitan a partir de la direccin 40H, siendo la conexin
de sus lneas la que sigue:

- CS: conectada a la salida CS2 de la lgica de seleccin de la periferia.

- IOR , IOW: se conectan a las lneas del mismo nombre de la lgica de generacin de las seales
de lectura/escritura.

- D0...D7: conectados a los bits correspondientes del bus de datos del sistema.

- A0: conectadas al bit menos significativo del bus de direcciones (A0).

- STROBE, BUSY, P0...P7: se conectan a las lneas correspondientes del Interfaz



Centronics de la impresora..

- INT: su conexin vara en funcin de la configuracin en que se halle el HAND:.

- Configuracin 2 (figura 4): se conecta a la entrada INT2 del Controlador de
Interrupciones (PIC).

- Configuracin 3 (figura 5): se encuentra conectada a la entrada DREQ del
CD
MA.




Contador de eventos, que realiza una cuenta ascendente los pulsos de la seal aplicada a su entrada
INT, restaurndose el valor inicial de cuenta al final de la misma.

Posee dos registros internos de ocho bits

- COMP: Registro de comparacin, que determina el mdulo de la cuenta del TIMER.

- CONT: Registro contador, que muestra la cuenta de los pulsos de la seal aplicada a la entrada INT
del perifrico. La coincidencia de su valor con el del registro anterior provoca la activacin de la
salida OUT.
Seleccin de regisrrss2

El
ac
ce
so
a
lo
s
re
gi
st
ro
s,
ta
nt
o
e
Registro
0

1
CON
T
COM
P

Para lograr un acceso, se debe activar tambin la seal CS del TIMER El tipo de acceso
(escritura o lectura) lo determina el estado de las seales IOW e IOR..

Conexin en el sisrema.2




En el sistema, los registros de este dispositivo se sitan a partir de la direccin 10H. Su conexin
tiene lugar en todas y cada una de las configuraciones, en el modo que a continuacin se expone:

- CS: esta lnea se conecta a la salida CS1 de la lgica de seleccin de la periferia.

- IOR , IOW: conectadas a las lneas del mismo nombre de la lgica de generacin de las seales
de lectura/escritura.

- D0...D7: conectados a los bits correspondientes del bus de datos del sistema.

- A0: lnea de seleccin que se conecta al bit menos significativo del bus de direcciones
(A0).

- IN: a esta entrada se le aplica un reloj de frecuencia 1 Hz.

- OUT: se conecta a la entrada de interrupcin INT1 del PIC, por lo que provocar una
interrupcin al activarse cuando los valores de los dos registros internos del dispositivo
coincidan.


CONCLUSIONES
LOS SIMILADORES permite al usuario una herramienta completa para emular el comportamiento funcional
y operacin de un sistema de desarrollo basado en microprocesadores permite entender y profundizar en la
comprensin de los diferentes bloques del sistema practicar los conceptos aplicaciones y uso de la
programacin de interrupcin y entra y salida y por ultimo dominar y practicar el flujo de ejecucin de
instrucciones de un programa y su ejecucin y depuracin paso a paso

Vous aimerez peut-être aussi