Introduccion Emu8086 v1 3
Introduccion Emu8086 v1 3
Introduccion Emu8086 v1 3
Departam mento de e Sistema as e Informtica Escuela a de Elect trnica F Facultad de d Cs. Ex xactas, In ngeniera y Agrime ensura U Universid dad Nacio onal de R Rosario
Ing. Andr s Capalbo o Ing. Diego Alegrechi i ban Almirn n Ing. Esteb
FCEIA
Digital II
Tabla de contenidos
1 2 Introduccin .................................................................................................................... 3 Instalacin del entorno .................................................................................................. 3
2.1 Emu8086 .................................................................................................................................. 3 2.1.1 Windows XP ..................................................................................................................... 3 2.1.2 Windows Vista y 7 ............................................................................................................ 4 2.2 Dispositivos Virtuales de Digital II ............................................................................................ 4
3 4
Tabla de Figuras
Figura 1 Instalacin DVIO ....................................................................................................................... 4 Figura 2 Archivo de configuracin dvio.ini............................................................................................... 5 Figura 3 Ventana de inicio del emu8086 ................................................................................................. 5 Figura 4 Eleccin del tipo de template .................................................................................................... 6 Figura 5 Ventana principal emu8086 ...................................................................................................... 7 Figura 6 Editor de cdigo fuente ............................................................................................................. 7 Figura 7 Cdigo fuente durante la emulacin ......................................................................................... 7 Figura 8 Emulador .................................................................................................................................. 8 Figura 9 Extended Viewer....................................................................................................................... 9 Figura 10 Flags y mapa de memoria .................................................................................................... 10 Figura 11 Emulador, cdigo fuente ....................................................................................................... 10 Figura 12 Custom Memory Map............................................................................................................ 10 Figura 13 Interrupt Vector Table (IVT) .................................................................................................. 11 Figura 14 Emulador Interrupcin por Hardware ................................................................................. 12 Figura 15 Dispositivos Virtuales Digital II ........................................................................................... 13 Figura 16 Ayuda Dispositivos Virtuales ................................................................................................. 14 Figura 17 Ejemplo de dispositivos virtuales y emulador........................................................................ 15 Figura 18 Documentacin y tutoriales emu8086 ................................................................................... 15
Noviembre 2010
Introduccin al emu8086
2 de 16
FCEIA
Digital II
1 Introduccin
Hasta el ao 2009 en la ctedra de Digital II hemos utilizado la herramienta MASM 6.11 para la realizacin del segundo trabajo prctico de assembler. A partir del ao 2010 hemos introducido una nueva herramienta llamada emu8086 reemplazando al MASM. El emu8086 es un emulador del microprocesador 8086 (Intel o AMD compatible) con assembler integrado. A diferencia del entorno de programacin en assembler utilizado anteriormente en la ctedra (MASM), este entorno corre sobre Windows y cuenta con una interfaz grfica muy amigable e intuitiva que facilita el aprendizaje el leguaje de programacin en assembler. Dado que en un entorno emulado de microprocesador no es posible implementar una interfaz real de entrada/salida, el emu8086 permite interfacear con dispositivos virtuales y emular una comunicacin con el espacio de E/S. Para esto, el emu8086 cuenta con una serie de dispositivos virtuales preexistentes en el software base, listos para ser utilizados, entre los que se encuentran una impresora, un cruce de calles con semforos, un termmetro, un motor paso a paso, etc. No obstante, la ctedra ha desarrollado dispositivos adicionales con caractersticas particulares para la realizacin del segundo trabajo prctico. Se muestra a continuacin una tabla comparativa con las diferencias entre el entorno de programacin en assembler utilizado anteriormente en la ctedra (MASM 6.11) y el nuevo emu8086:
Emu 8086 Entorno educativo Basado en Windows En forma virtuales. nativa admite dispositivos Microsoft Assembler (MASM 6.11) Entorno para produccin y educativo. Basado en DOS No admite dispositivos virtuales en forma nativa Set de instrucciones del 8086, 80186/286/386/486 Directivas comunes con TASAM (Borland Turbo Assembler) No permite emular interrupciones No permite emular el espacio de E/S No permite emular intrrupciones.
Set de instrucciones de 8086 Directivas propias adicionales Emula interrupciones por Hw y Sw Emula el espacio de E/S (instrucciones IN y OUT) Permite emular interrupciones. Herramientas adicionales para el debug
2.1 Emu8086
En primer lugar descargar el archivo instalador del emu8086 de la pgina web de la ctedra el siguiente archivo: http://www.dsi.fceia.unr.edu.ar/downloads/digital_II/EMU_Setup.zip
Luego ejecutar el instalador y seguir los pasos de instalacin teniendo en cuenta los comentarios siguientes.
2.1.1 Windows XP
Para la instalacin en Windows XP no es necesario tener cuenta ninguna consideracin en particular, slo basta con seguir los pasos indicados por el instalador y aceptar las configuraciones por defecto propuestas por el emu8086.
Noviembre 2010
Introduccin al emu8086
3 de 16
FCEIA
Digital II
El direct torio de insta alacin por defecto d es C:\emu8086. C Adicionalme ente, los siguientes dos archivos se e instalan en la raz de el disco C: C:\emu8 8086.hw C:\emu8 8086.io
Instalar l los DVIO (Di ispositivos Virtuales V de Entrada/Salid E da) en el mis smo directorio en el cual se instal el l emu8086 6, ver por eje emplo Figura a 1.
Figura a 1 Instalac cin DVIO Luego de finalizado el proceso de d instalacin n se debe ed ditar el archi ivo dvio.ini y modificar el l path con la a ubicacin correcta de e los archivo os emu8086.io y emu808 86.hw.
Por defec cto Windows Vista/7 no permite en modificar arc chivos ubicados s directorio Arch hivo de Program mas (o Program Files), por esta a razn para a poder editar el e archivo emu8086.ini luego de e la instalacin se debe previa amente modifica ar de manera te emporal el nivel l de segurid dad y proteccin n de usuario de Windows. Para a esto ir a Control Panel Sy ystem and Security Action Center, C luego en n Security de ebajo de User Account A Contro ol hacer click en n Change Settin ngs. Llevar la barra de desplaz zamiento al nive el de seguridad d ms bajo ( (Never notify) y aceptar. Editar ahora el archiv vo emu8086.in, luego de esto re estaurar el nivel de seguridad al a que tena por r defecto.
Noviembre e 2010
Introduccin al emu8086
4 de 16
FCEIA
Digital II
F Figura 3 Ve entana de inicio del emu8086 Luego de e iniciar el en ntorno el em mu8086 ofrece diferentes opciones:
Noviembre e 2010
Introduccin al emu8086
5 de 16
FCEIA
Digital II
New: pe ermite escrib bir un nuevo o cdigo en n lenguaje ensamblado e r (Cdigo F Fuente con n extensin .ASM) Code ex xamples: permite accede er a una serie e de program mas ejemplos muy tiles al momento o de apren nde a utilizar el entorno y la programa acin en assembler. Quick start s tutor: llama l al bro owser y perm mite explorar gran varie edad de doc cumentos de e ayuda. Recent file f : muestra a los ltimos archivos con n los cuales se s estuvo tra abajando.
En el cas so de hacer click en New w, el entorno ofrece traba ajar con difer rentes plantillas o templates:
E del tipo de temp plate Figura 4 Eleccin COM tem mplate (direc ctiva #make_ _com#): es el formato ms m simple y antiguo de e un archivo o ejecutab ble, tpicamen nte estos arc chivos se car rgan con un offset de 10 00h (256 byte es). Por esta a razn se e debe agre egar la dire ectiva ORG 100h al co omienzo del cdigo par ra indicar la a utilizaci n de este tipo t de arch hivos. Forma ato soportad do por DOS S y Windows s Command d Prompt. EXE tem mplate (direc ctiva #make_exe#): este e es el form mato ms avanzado de e un archivo o ejecutab ble. No tiene limitaciones s en cuanto al tamao del d archivo y nmero de segmentos. . Este tem mplate permit te crear un programa p ex xe simple co on los segme entos de cd digo, datos y pila pred definidos. Es ste tipo de archivo a est soportado por p Windows s y Windows s Command d Prompt. El ensamb blador elige automticam mente este tipo de arc chivo cuando o encuentra a o de pila. definido un segmento BIN temp plate (directiva #make_b bin#): es un a archivo ejecu utable simple e. Permite de efinir el valor r de todos s los registro os, segmento os y el lugar de memoria a donde se cargar a est te programa. . Cuando por ejemplo o el ensamblador carga el archivo "MY.BIN" en el emulador buscar el l e "MY.BIN" en la ubic cacin espe ecificada en n archovo "MY.BINF" y cargar al archive "MY.BIN NF", al igual que el valor r inicial configurado para a todos los registros. r En n el caso de e que el emulador e no o encuentre al archivo "MY.BINF", se utilizar el valor ac ctual de los s registros s al momento o de la ejec cucin del .B BIN y este c digo se ubicar en los valores que e tengan en e ese mome ento CS:IP. BOOT te emplate (dire ectiva #make e_boot#): fun nciona igual de que un .BIN, pero ut tiliza valores s predefini idos para ub bicar el cdig go y que coin nciden con el primer track k de un flopp py disk (boot t sector). La nica diferencia con la directiv va #make_b bin# es que carga el cdigo c en la a n predefinida a 0000:7c00h h. Este temp plate permite e emular el bootedo b de una u IBM PC C direccin desde el floppy disk.
En Digita al II utilizarem mos para la resolucin del trabajo pr rctico un tem mplate modif ficado y no tr rabajaremos s con ning guno de estos cuatro te emplates pre edefinidos en n el emu808 86, con lo cual c en esta ventana se e deber seleccionar s la a opcin em mpty workspa ace. Luego de esto tendre emos acceso o a la ventan na principal del d emulador r que cuenta a con una ba arra de men dit, bookmark ks, assemble er, etc.) y var rios botones de uso frecuente como New, Open, , de Windows (file, ed
Noviembre e 2010
Introduccin al emu8086
6 de 16
FCEIA
Digital II
Save, Compile o Em mulate. Esta ventana es en definitiva a un editor de e texto que permite crea ar y editar el l cdigo fu uente de ass sembler.
Figura 5 Ventana prin ncipal emu80 086 Para ver r rpidament te las princip pales funcion nes del emu8086 proced demos a abr rir uno de los s programas s de ejemp plo, el C:\em mu8086\exam mples\1_sam mple.asm o Hello, world si optamos por seleccio onarlo desde e el botn rpido exam mples.
Figura 6 Editor de cdigo c fuente e al presionar el e botn Em mulate se ab brirn dos nu uevas ventan nas, una es el e emulador propiamente p e Luego, a dicho (F Figura 8 Em mulador) y la a otra muestra el cdigo fuente durante la emula acin (Figura a 7 Cdigo o fuente durante la em mulacin).
Noviembre e 2010
Introduccin al emu8086
7 de 16
FCEIA
Digital II
4 El Emulado or
Luego de cargar el cdigo c en el emulador al l hacer click en el en Em mulate variedad d de funcione es e informac cin: , se s tendr ac cceso a gran n
Fig gura 8 Emulador En la parte superior de la ventana se puede ver v la barra d de herramien ntas con las siguientes opciones: File, perm mite adminis strar (cargar o guardar) lo os archivos que q va crean ndo o ejecuta ando Math, da a acceso a un na calculado ora y un conv vertidor en ba asas de num meracin. Debug, provee p herra amientas para a depurar pr rogramas. View, pe ermite abrir otras ventanas que pue eden ser de e mucha ayu uda al ejecu utar depurar r programas. External, permite eje ecutar el prog grama con ot tras herramie entas diferen ntes del EMU U8086. Virtual de evices, activ va los dispositivos virtuale es con que cuenta c el programa, dado o que se tata a de un em mulador no se s tiene acce eso a los pue ertos fsicos de la compu utadora, por lo que estos s son simu ulados. Virtual drive, da opciones para administrar la as unidades virtuales v de almacenamie a ento (HDD y FDD virtuales). Help, act tiva la herram mienta de ay yuda.
Debajo d de la barra de herramient tas hay una serie de boto ones con las s siguientes funciones: f Load: ca arga un archivo ejecutabl le EXE, COM M, etc. ya existente. Reload: reinicia el programa p y comienza c a ejecutar e el mismo m desde la primer instruccin de e cdigo, todos t los reg gistros iniciali izan nuevam mente, Single step s : permit te ejecutar las l instrucciones una a una detenindose luego de cada a instruccin.
Noviembre e 2010
Introduccin al emu8086
8 de 16
FCEIA
Digital II
Step ba ack: retroced de a la ltim ma instrucci n que ya fu ue ejecutada a permitiend do ejecutarla a nuevame ente. Run: pe ermite ejecutar todas las s instruccione es una a un na a la veloc cidad establecida por el l control step s delay. La ejecucin se detiene e al presionar r STOP.
Vale la p pena hacer notar n que tam mbin es pos sible, en el men m debug , insertar un break point t cuando se e est dep purando prog grama o ejec cutar el progr rama hasta el e lugar donde se encuen ntra el cursor r (run until). Debajo de d la barra de d botones se s observan tres paneles s, a la izquierda se puede e ver el esta ado de todos s los regis stros dispon nibles en el 8086. Dura ante la ejecu ucin de un n programa, se puede modificar el l contenid do de los mismos. m Ade ems, al hac cer doble click c sobre alguno a de lo os registros se abre el l "Extende ed Viewer" que q permite ver el conte enido del reg gistro representando en distintas bas ses (binario, , hexadec cimal, octal, ASCII, A decim mal, etc.).
Figura a 9 Extend ded Viewer Luego se e pueden ve er dos panele es, el de la iz zquierda muestra el cdigo mquina y las direcciones fsicas s de la me emoria de pro ograma con la codificaci n hexadecim mal, decimal l y ASCII de cada byte de e cdigo. En n el panel de la derech ha se pueden n ver las inst trucciones de e assembler pero con las s direcciones s y etiquetas s eltas por part te del ensam mblador. ya resue En ambos paneles, el cdigo resaltado r en azul muest tra la prxim ma instrucci n a ser eje ecutada. Por r , en Figura 8 veremos qu ue la instruccin a ser ej jecutada es MOV AX, 00 003h, y en el panel de la a ejemplo, izquierda a que la mism ma insume 3 bytes de c digo mquina, el primer ro en la direc ccin fsica 07100h 0 es el l B8, que coincide co on el cdigo mquina de el 8086 para a la instrucc cin MOV AX X, mientras que los dos s bytes sig guientes (dire ecciones 071 101h y 0710 02h) represen ntan el dato de 16 bits 0 0003 a ser transferido al l registro AX. A A la izqu uierda, en la ventana del emulador, se s pueden to odos los registros del mic croprocesado or y su valor r actual. L Luego de cada c ejecuta ar instrucci n aquellos registros qu ue se haya an modificad do se vern n resaltado os en azul. Tener en cu uenta que el e valor de lo os registros se puede modificar m dinmicamente e durante el debug, es sto es til cu uando se nec cesita forzar r alguna situa acin particu ular durante la evolucin n del programa. arte inferior de d la ventana a del emulad dor se puede en encontrar r varios boto ones de utilid dad, el botn n En la pa Flags pe ermite ver el estado de lo os Flag, el botn b Aux pe ermite, por ejemplo, e ver el mapa de memoria, el l botn stc ck muestra el e estado de la pila.
Noviembre e 2010
Introduccin al emu8086
9 de 16
FCEIA
Digital II
Figura 10 Flags y ma apa de memo oria Junto co on la ventana a principal de el emulador (Figura 8 Emulador) se abre una ventana v com mplementaria a que mue estra el cdig go fuente:
Figura 11 Emulador, , cdigo fuen nte Durante el proceso o de debug g (depuraci n) se podr r ver enton nces, el c digo fuente e, el cdigo o amblado (cdigo fuente con direcc ciones/etique etas resultas s) y finalme ente el cdig go mquina a desensa resultant te de cada in nstruccin.
Noviembre e 2010
Introduccin al emu8086
10 de 16
FCEIA
Digital II
ms deta allada se po odr encontra ar en este ej jemplo, pero o bsicament te este archi ivo le indica al emu8086 6 como de ebe conforma ar el mapa de memoria. En este caso o, en la primera posicin del mapa se e encontrar la IVT, e es decir, los punteros (IP P y CS) a ca ada una de la as subrutinas de atenci n de interrupciones (ver r seccin Interrupcion nes). Adem s a partir de la direc ccin fsica FFFF0h (o lgica FFF FF:0000) se e encontra . Como se puede ar el cdigo o correspond diente con Arranque.bin A p ver, se s utilizan archivos .bin, , que es e el resultado de d la compila acin de arch hivos de cdigo fuente.
Noviembre e 2010
Introduccin al emu8086
11 de 16
FCEIA
Digital II
Suponga amos que se e ejecuta la interrupcin por p software e tipo 5 (INT 5), el microp procesador proceder p se e la siguiente forma pa ara obtener el e IP y CS as sociado con esa e interrupc cin, multiplic ca el tipo de interrupcin n por cuatro, 4 x 5 = 20 (14h), este e resultado ser s la direcc cin fsica en n la cual se encuentra e el IP (00014h) ) y dos po osiciones ms arriba el CS C (00016h). El progr ramador deb be crear y d definir los va alores de la a IVT de for rma que ant te la existen ncia de una a interrupc cin el flujo de d programa no se vea afectado. Dado qu ue en la realiz zacin del se egundo traba ajo prctico se s utilizarn interrupcione es ser nece esario que el l alumno c cree y defina a la IVT. 4.1.2.2 Interrupci n por hard dware p hardware e son gener radas por pe erifricos ex xternos, micr rocontroladores o por el l Las interrupciones por coproces sador matem mtico 8087. Las inter rrupciones por p hardware e se encuent tran deshabi ilitadas cuan ndo el Flag de d Interrupcio ones (IF) se e encuentr ra en 0. Cua ando el IF es st en 1, el emu8086 ve erifica continuamente los s primeros 25 56 bytes del l archivo emu8086.hw, si algun no de los by ytes ledos e es distinto de d cero, por r ejemplo el byte 15, el l ocesador transfiere el co ontrol a la su ubrutina de atencin a de la interrupci in tipo 15 en e base a lo o micropro configura ado en la IVT T. Por def fecto, la in nterrupciones s por hard dware se encuentran e habilitadas, pero se deshabilitan n automticamente cuando se est ejecutando o una interrup pcin de hard dware o software. cin por hard dware el emulador lo indica mediante e una leyend da en la para a Cuando se produce una interrupc na del mismo o. superior de la ventan
Figur ra 14 Emul lador Interr rupcin por Hardware H gura 14 se pu uede ver un ejemplo de interrupcin i por hardware tipo 15. En la Fig En el ca aso de las interrupcion nes por softw ware el emulador no re ealiza ningu una adverten ncia ante la a aparicin n de la mism ma.
Noviembre e 2010
Introduccin al emu8086
12 de 16
FCEIA
Digital II
Fi igura 15 Dispositivos Virtuales V Di igital II Al hacer r click en cad da uno de los s botones se e puede inici iar el disposi itivo y este estar e en con ndiciones de e interactu uar con el em mu8086. En la ventana de la Figura 15 se e puede ver una barra de e desplazam miento Speed d que permite modificar r cidad tempo oral de com mportamiento o de aquellos dispositivos donde la variable tiempo es s la veloc importan nte, por ejem mplo en los s Timers permite modificar la veloc cidad de cue enta o en el e tanque la a velocidad de llenado o o vaciado del d mismo. os dispositivo os genera un pedido de interrupcin n hacia el em mu8086 se puede p ver en n Cuando alguno de lo a la leyenda a Atencin. Hay interr rupciones pe endientes y el tipo de e la parte inferior de la ventana cin INT:15, esto debe coincidir con n lo mostrado o en el emula ador (ver Fig gura 14) interrupc
Noviembre e 2010
Introduccin al emu8086
13 de 16
FCEIA
Digital II
Noviembre e 2010
Introduccin al emu8086
14 de 16
FCEIA
Digital II
Dispositivovirtual v Tanque e
Cdig gofuente
Noviembre e 2010
Introduccin al emu8086
15 de 16
FCEIA
Digital II
Noviembre 2010
Introduccin al emu8086
16 de 16