10.07.2015 Views

"Programación en Ensamblador del microprocesador ... - PoliformaT

"Programación en Ensamblador del microprocesador ... - PoliformaT

"Programación en Ensamblador del microprocesador ... - PoliformaT

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

IOTPRÁCTICA 4"Programación <strong>en</strong> <strong>Ensamblador</strong><strong>del</strong> <strong>microprocesador</strong> P<strong>en</strong>tium (II)"ÍNDICE4.1.- Enunciado de la práctica.4.2.- Cuestionario de la prácticaOBJETIVOS Realizar un programa <strong>en</strong> <strong>en</strong>samblador para el Procesador P<strong>en</strong>tium.CONOCIMIENTOS PREVIOS Empleo <strong>del</strong> <strong>en</strong>torno de programación Microsoft Visual Studio,específicam<strong>en</strong>te las opciones de de ejecución paso a paso y demonitorización de registros. Sintaxis y utilización <strong>del</strong> juego de instrucciones básicas <strong>del</strong>Procesador P<strong>en</strong>tium


IOT-PRÁCTICA 4Programación <strong>en</strong> <strong>en</strong>samblador <strong>del</strong> micr. P<strong>en</strong>tium (II)4.1. ENUNCIADO DE LA PRÁCTICA.1) Arranca el <strong>en</strong>torno de programación Visual Studio.2) Crea un nuevo proyecto:File/New/Proyect…Templates:Name:Location:Solution Name:Pulsa <strong>en</strong> “OK”Pulsa <strong>en</strong> “Next” yWin32 Console ApplicationIOT_P4w:\IOT_P4IOT_P4Marca el check box “Empty project” y pulsa <strong>en</strong> “Finish”3) Añade un nuevo fichero al proyecto:En la v<strong>en</strong>tana de la izquierda aparecerá la solución “IOT_P4”, d<strong>en</strong>trode la cual está el proyecto “IOT_p4”. De este proyecto colgarán 3carpetas. Pulsa con el botón derecho sobre la última “Source Files”.Aparecerá un m<strong>en</strong>ú desplegable. Selecciona la opción “Add/NewItem…”. Introduce la sigui<strong>en</strong>te información:Templates:Name:y pulsa <strong>en</strong> “Add”C++ File (.cpp)main4) Crea un programa <strong>en</strong> <strong>en</strong>samblador que calcule el resultado de ladivisión <strong>en</strong>tera <strong>en</strong>tre dos números cont<strong>en</strong>idos <strong>en</strong> los registros BX yCX, sin hacer uso de la instrucción DIV. El resultado ha dealmac<strong>en</strong>arse <strong>en</strong> el registro DX.Para ello puedes inspirarte <strong>en</strong> el sigui<strong>en</strong>te algoritmo, escrito <strong>en</strong> C:int main(){int X, Y, resultado;}X = 13;Y = 4;resultado = 0;while ( X>= Y){X = X - Y;resultado = resultado + 1;}Para recordar las instrucciones que puedes emplear, consulta la tablaque aparece al principio de la práctica anterior. El programa a realizarpodría com<strong>en</strong>zar de la sigui<strong>en</strong>te forma:


IOT-PRÁCTICA 4Programación <strong>en</strong> <strong>en</strong>samblador <strong>del</strong> micr. P<strong>en</strong>tium (II)int main(){_asm {MOV eBX, 13MOV eCX, 4...}}5) Para iniciar la ejecución paso a paso, pincha con el botón derechosobre el proyecto “IOT_P4”. Se abrirá un m<strong>en</strong>ú desplegable.Selecciona la opción “Debug/Step Into new instance”.6) Activa la v<strong>en</strong>tana de visualización de registros de la CPU“Debug/Windows/Registers”.7) Ejecuta paso a paso el programa para comprobar si funcionacorrectam<strong>en</strong>te (pulsando Step Over ó F10). Es muy importanteque realices esta tarea despacio y con mucha at<strong>en</strong>ción. Cada vez queejecutes una instrucción comprueba que los registros y losindicadores tomas los valores esperados y que el programa se vaejecutando tal y como t<strong>en</strong>ias previsto.8) Calcula la división de otras cantidades para verificar que el algoritmoque has implem<strong>en</strong>tado funciona <strong>en</strong> todos los casos.9) Cumplim<strong>en</strong>ta el cuestionario


IOT-PRÁCTICA 4Programación <strong>en</strong> <strong>en</strong>samblador <strong>del</strong> micr. P<strong>en</strong>tium (II)4.2. CUESTIONARIO1. Escribe las instrucciones de l<strong>en</strong>guaje <strong>en</strong>samblador que has introducidopara realizar la división:2.- ¿Cómo crees que se podría calcular el resto de la división <strong>en</strong>tera?3.- Utilizando tu reloj mide cuanto tiempo tarda el ord<strong>en</strong>ador <strong>en</strong> realizar ladivisión 100.000 <strong>en</strong>tre 1. NOTA: Este tiempo es demasiado pequeño parapoder ser medido con tu reloj. Para solucionar este problema serecomi<strong>en</strong>da realizar esta división 50.000 veces. Es decir, ti<strong>en</strong>es querealizar un bucle que repita la división 100.0001, 50.000 veces.4.- Con la información obt<strong>en</strong>ida <strong>en</strong> el punto anterior ¿Cual es el tiempo mediode ejecución de una instrucción de l<strong>en</strong>guaje máquina?5.- Analizando la evolución <strong>del</strong> registro contador <strong>del</strong> programa trataremos deaveriguar cuantas posiciones de memoria ocupa la primera instrucción <strong>del</strong>programa. En el P<strong>en</strong>tium este registro se llama EIP y puedes consultar suvalor <strong>en</strong> la v<strong>en</strong>tana “Registers”. (NOTA: Recuerda que el procesador con elque estas trabajando no es igual al descrito <strong>en</strong> la teoría). Completa la sigui<strong>en</strong>tetabla:1 ª instrucción<strong>en</strong> <strong>en</strong>sambladorDirecc. de memoriadonde se <strong>en</strong>cu<strong>en</strong>traNúmero de posiciones dememoria que ocupa2 ª instrucción<strong>en</strong> <strong>en</strong>sambladorDirecc. de memoriadonde se <strong>en</strong>cu<strong>en</strong>tra

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!