5/20/2018 Sim Ul Adores
1/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
5/20/2018 Sim Ul Adores
2/70
3. Dar nombre al projecto y guardarlo Save
4. Ahora, abrir un archivo nuevo File New
5/20/2018 Sim Ul Adores
3/70
5. Editar ti archivo Fil Save
6. Guardar archivo con extensin file_name.asm
5/20/2018 Sim Ul Adores
4/70
5. Editar ti archivo Fil Save
5/20/2018 Sim Ul Adores
5/70
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)
5/20/2018 Sim Ul Adores
6/70
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)
5/20/2018 Sim Ul Adores
7/70
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.
5/20/2018 Sim Ul Adores
8/70
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)
5/20/2018 Sim Ul Adores
9/70
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 #.
LD A,23H
HALT
SOURCE: .EQU 120H
DEFB 0AH,0BH
5/20/2018 Sim Ul Adores
10/70
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 unmdulo no puede ejecutarse cuando contiene referencias sin resolver a rtulos de otros archivos objeto o bibliotecas.
5/20/2018 Sim Ul Adores
11/70
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:
E l l j d lid d l il d ( di bl d i l )
5/20/2018 Sim Ul Adores
12/70
E l l j d lid d l il d ( di bl d i t l )
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 laayuda 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
objetoUn 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)
5/20/2018 Sim Ul Adores
13/70
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 instruccintendra 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
5/20/2018 Sim Ul Adores
14/70
cmo traducir un programa, pero no producen instrucciones mquina
.byte/half/word Almacena los n valores de 8/16/32 bits en bytes/medias
.double/float Almacena los n nmeros de punto flotante de doble/simple
.data Los elementos si uientes son almacenados en el se mento de
.kdata Los elementos si uientes son almacenados en el se mento de
.text Los elementos siguientes son almacenados en el segmento de.ktext Los elementos siguientes son almacenados en el segmento de
.s ace Asi na n b tes de es acio en el se mento actual debe ser se .
.extern sym size Declara que el dato almacenado en sym ocupa size
b tes es un lobal. El ensamblador lo one en arte del. lobl s m Declara s m como lobal: se uede referenciar desde otros
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
Nme
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, ...., 4, ...., Argumentos a rutina (resto de argumentos, a pila)
t0, ...., 8, ...., Temporales (no preservados a travs de llamada, guardar
s0, ...., 16, ...., Guardado temporalmente (preservado a travs de llamada,t8, t9 24, 25 Temporales (no preservados a travs de llamada, guardar
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.
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
5/20/2018 Sim Ul Adores
15/70
Formato Clculo de la direccin Ejemplo
(registro) Contenido del registro lw $t0,($t2)
valor Valor inmediato (vin) lw $t0,0x10010008
valor (registro) vin + cr lw
identificador direccin del identificador lw $t0,array
identificador +/- valor did +/- vin lw $t0,array+8
identificador (registro) did + cr lw $t0,array($t1)
identificador +/- valor 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
Uso
BadVAdre
8 Direccin de memoria en donde ocurre la
Status 12 Mscara de interrupcin y bits de habilitacin
Cause 13 Tipo de excepcin y bits de interrupcinEPC 14 Direccin de la instruccin que caus la
Instrucciones para manejar excepciones.
rfe Vuelta desde Restaura el registro Status
syscall Llamada al sistema El registro $v0 contiene el nmero de la
llamada al sistema (ver la tabla de llamadasbreak Produce excepcin n Provoca la excepcin n. La exception
1 se reserva para el depuradornop no operacin No hace nada
Cdigos de excepciones
5/20/2018 Sim Ul Adores
16/70
6 IBUS Error de bus durante una ca tura de instruccin7 DBUS Error de bus durante una car a o almacenamiento8 SYSCA
Exce cin llamada al sistema9 BKPT Exce cin rovocada or un unto de ru tura break oint 10 RI Excepcin de instruccin reservada12 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.
5/20/2018 Sim Ul Adores
17/70
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
5/20/2018 Sim Ul Adores
18/70
Gobierna el uso de registros cuando los procedimientos de un programa se compilan separadamente. Son convenios
software, no hardware
5/20/2018 Sim Ul Adores
19/70
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.
5/20/2018 Sim Ul Adores
20/70
Editamos el cdigo ensamblador file.s en cualquier procesador de texto ASCII. Abrimos PCSPIM
Cargamos file.s mediante File -> Open
5/20/2018 Sim Ul Adores
21/70
5/20/2018 Sim Ul Adores
22/70
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 instruccina 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
(onesta opcin se pueden cargar en la memoria de la UAMICRO programas que se e11cuentrcn en disco asi comosalvarlos.activar la opcin Archivos aparece una ventana en la UAMICRO con las siguientes opciones
5/20/2018 Sim Ul Adores
23/70
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, asicomo los valores con los que se guardaron los registros.
5/20/2018 Sim Ul Adores
24/70
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
5/20/2018 Sim Ul Adores
25/70
DOSSHELL. Esta opcin permite salir temporalmente al sistema operativo, dejando residente al simulador. Para
Pantalla de trabajo que deja el simulador al momento de activar el dosshell
E.IEMI'LOS DE PROGRAMAS PARA LAS UAMICROS
I,osprogramas 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
5/20/2018 Sim Ul Adores
26/70
EJEMPLO 2
SIMUMLADOR: UAMICROS
5/20/2018 Sim Ul Adores
27/70
SIMUMLADOR: UAMICROS
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)
5/20/2018 Sim Ul Adores
28/70
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: -
Visorparaexaminar el
progr ama 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 microinstruccinMI-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
5/20/2018 Sim Ul Adores
29/70
Botn para activar Ia interupcion LRQ y ejecutar a rutina de interrupcin
5/20/2018 Sim Ul Adores
30/70
5/20/2018 Sim Ul Adores
31/70
CONJUNTO DE HERRAMIENTAS MSX88
5/20/2018 Sim Ul Adores
32/70
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,
5/20/2018 Sim Ul Adores
33/70
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>
5/20/2018 Sim Ul Adores
34/70
Descripcin del MSX88
BLOQUES CONSTITUTIVOS
5/20/2018 Sim Ul Adores
35/70
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
5/20/2018 Sim Ul Adores
36/70
usuario.
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 configuracinanterior 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
5/20/2018 Sim Ul Adores
37/70
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.
5/20/2018 Sim Ul Adores
38/70
p , q g g y
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.
5/20/2018 Sim Ul Adores
39/70
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
= =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
5/20/2018 Sim Ul Adores
40/70
1 0 1 CH
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
5/20/2018 Sim Ul Adores
41/70
MOV i d i di
MOV registro, REGISTRO
1000101W 11rrrRRR
INSTRUCCI0NES ARITMETIC0-LOGICA S2
INSTRUCCIONES ARITMTICAS.
5/20/2018 Sim Ul Adores
42/70
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
5/20/2018 Sim Ul Adores
43/70
ADC memoria, registro
Direccionamiento directo:
0001000W 00rrr110 LSB dir MSB dir
Direccionamiento indirecto:
0001000W 00rrr111
ADC registro, memoria
Direccionamiento directo:
5/20/2018 Sim Ul Adores
44/70
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
5/20/2018 Sim Ul Adores
45/70
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
5/20/2018 Sim Ul Adores
46/70
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
5/20/2018 Sim Ul Adores
47/70
1000000W 00011110 LSB dir MSB dir LSB dato MSB dato
Direccionamiento indirecto:
1000000W 00011111 LSB dato MSB dato
SBB registro, dato inmediato
1000000W 11011rrr LSB dato MSB dato
SBB registro, REGISTRO
0001101W 11rrrRRR
5/20/2018 Sim Ul Adores
48/70
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
5/20/2018 Sim Ul Adores
49/70
AND registro, REGISTRO
0010001W 11rrrRRR
OR memoria, registro
Direccionamiento directo:
0000100W 00rrr110 LSB dir MSB dir
Direccionamiento indirecto:
0000100W 00rrr111
5/20/2018 Sim Ul Adores
50/70
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:
5/20/2018 Sim Ul Adores
51/70
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
5/20/2018 Sim Ul Adores
52/70
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:
5/20/2018 Sim Ul Adores
53/70
1111011W 00010111
NOT registro
1111011W 11010rrr
4.2.2.2 INSTRUCCI0NES DE C0MPARACIdN2
CMP memoria, registro
Direccionamiento directo:
0011100W 00rrr110 LSB dir MSB dir
5/20/2018 Sim Ul Adores
54/70
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
5/20/2018 Sim Ul Adores
55/70
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
5/20/2018 Sim Ul Adores
56/70
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
5/20/2018 Sim Ul Adores
57/70
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.
5/20/2018 Sim Ul Adores
58/70
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
5/20/2018 Sim Ul Adores
59/70
di i
11101000 LSB dir MSB dir
RET
11000011
4.2.2 S21NSTR5CC10NES DEGEST1dN DE LAS 1NTERR5PC10NES2
INT nmero
11001101 nmero
5/20/2018 Sim Ul Adores
60/70
IRET
11001111
STI
11111011
CLI
11111010
INSTRUCIONES DE C0NTR0L2
NOP
10011000
HLT
11110100
5/20/2018 Sim Ul Adores
61/70
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
5/20/2018 Sim Ul Adores
62/70
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 unaventana 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.
5/20/2018 Sim Ul Adores
63/70
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 deinterrupcin.
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.:
5/20/2018 Sim Ul Adores
64/70
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 entreperifricos internos, yperifricos 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.
5/20/2018 Sim Ul Adores
65/70
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 Ay 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
5/20/2018 Sim Ul Adores
66/70
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 sealesde 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.
5/20/2018 Sim Ul Adores
67/70
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.
5/20/2018 Sim Ul Adores
68/70
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
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
5/20/2018 Sim Ul Adores
69/70
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 lasalida OUT.
Seleccin de regisrrss2
El
ac
Registro
0
1
CON
T
COM
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
5/20/2018 Sim Ul Adores
70/70
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