PDF de programación - Bloque 1 - Programación en ensamblador de la arquitectura IA-32 bajo Win32

Imágen de pdf Bloque 1 - Programación en ensamblador de la arquitectura IA-32 bajo Win32

Bloque 1 - Programación en ensamblador de la arquitectura IA-32 bajo Win32gráfica de visualizaciones

Publicado el 22 de Mayo del 2021
623 visualizaciones desde el 22 de Mayo del 2021
1,1 MB
75 paginas
Creado hace 14a (19/10/2009)
Bloque 1

Programación en ensamblador

de la arquitectura IA-32

bajo Win32

Prácticas de

Arquitectura de Computadores

SESIÓN 1

Introducción a las herramientas de trabajo

Objetivos

Esta práctica introduce al alumno en el uso de las herramientas de desarrollo en
lenguaje ensamblador de la arquitectura IA-32. Durante su desarrollo, el alumno
deberá obtener una versión ejecutable y que funcione correctamente de un pro-
grama sencillo.

Conocimientos y materiales necesarios

Para el adecuado aprovechamiento de esta sesión de prácticas, el alumno nece-
sita:

Conocer los aspectos básicos de la arquitectura IA-32: parámetros de la ar-
quitectura, modelo de memoria, tipos de datos, registros y formatos de las
instrucciones.
Conocer las directivas de ensamblador de uso común.
Llevar los apuntes de la arquitectura IA-32 proporcionados en las clases de
teoría

Desarrollo de la práctica

1. El ciclo de desarrollo de un programa

La obtención de la versión ejecutable de un programa utilizando herramientas de desa-

rrollo para lenguaje ensamblador requiere:

Crear el código fuente en lenguaje ensamblador. Para su creación se utiliza un editor de
textos, que para este bloque de prácticas será el editor integrado en el Visual Studio.
Obtener el código objeto. Esta tarea es realizada por el compilador de ensamblador (ml) ,
que lo genera a partir del fichero fuente. Si se detectan errores en esta fase, es necesario
volver al punto anterior para corregirlos.

1

Sesión 1

Introducción a las herramientas de trabajo

Otros fich.

objeto
(.obj)

Librerías

(.lib)

Editor

(Visual Studio)

Prueba.asm

ml

¿Errores?



Prueba.obj

link

¿Errores?



Prueba.exe

Depurador

(Visual Studio)

¿Funciona?

No



Fin

Figura 1.1: Ciclo de desarrollo de un programa en ensamblador

Obtener el archivo ejecutable, enlazando el código objeto del programa con las librerías
necesarias. Esto lo hace el montador de enlaces o linker (link). Si el linker fuese incapaz
de hacerlo (porque quedan referencias sin resolver) sería necesario volver al primer
punto para corregirlo.

Depurar el ejecutable si no funcionase correctamente. Mediante el depurador se ejecuta
paso a paso el programa para comprobar por qué falla. Una vez detectado el origen

2

Sesión 1

Introducción a las herramientas de trabajo

del error, será necesario volver al primer punto para corregirlo.
Los pasos del ciclo de desarrollo se muestran gráficamente en la figura 1.1. Los nom-
bres encerrados en rectángulos representan programas, y los nombres encerrados en
elipses son ficheros almacenados en el disco.

2. Obtención de ficheros ejecutables

Para ilustrar todos estos conceptos, el alumno obtendrá a continuación la versión ejecu-
table de un programa que calcula la suma de tres variables, utilizando el lenguaje ensam-
blador de la arquitectura IA-32.

J Para que no pierdas tiempo, ya se ha creado la mayor parte del fichero fuen-
te que utilizarás (1-1prog1.asm). Pregunta a tu profesor de prácticas dónde
se encuentra y cópialo en tu directorio de trabajo.

J Ahora hay que arrancar una interfaz de comandos de Windows. Las herra-
mientas del Visual Studio permiten poner en marcha una interfaz de co-
mandos con una configuración especial. Dicha interfaz permitirá al usuario
acceder al compilador (ml) y al linker (link) del Visual Studio. Para arrancar
la interfaz de comandos abre el menú inicio, programas, Microsoft Visual Stu-
dio 2005, Visual Studio Tools y entonces elige la opción Símbolo del sistema de
Visual Studio 2005.

J El listado contiene errores de sintaxis intencionados que deberás corregir.
Te ayudará el compilador, ya que comprueba la sintaxis de tu código fuente
y te informa de las líneas que contienen errores. Para compilar el programa
teclea el comando
ml /c /Cx /coff 1-1prog1.asm
Los caracteres o cadenas precedidos del carácter / representan opciones de
compilación necesarias que no se explican en este documento. La salida que
obtendrás será:

Microsoft (R) Macro Assembler Version 8.00.50727.42
Copyright (C) Microsoft Corporation. All rights reserved.

Assembling: 1-1prog1.asm
1-1prog1.asm(15) : error A2008: syntax error :
1-1prog1.asm(20) : error A2008: syntax error :

in instruction
in instruction

J El compilador indica que el código fuente tiene dos errores, uno en la línea
15 y otro en la 20, que debes corregir para poder continuar. (Nota: el editor
del Visual Studio muestra el número de línea en el que está el cursor en
una barra de estado en la parte inferior de la pantalla). Cuando creas que
el código fuente no contiene errores, repite el proceso de compilación. Si
de verdad no había errores, el compilador habrá generado el fichero objeto,
1-1prog1.obj. Ejecuta en la interfaz de comandos el comando DIR para ver
el fichero objeto que se acaba de crear.

3

Sesión 1

Introducción a las herramientas de trabajo

Los ficheros .obj no contienen una versión totalmente terminada del código máquina
de un programa. Esto es debido a que, normalmente, cuando escribimos un programa, no
escribimos nosotros todo el código necesario para la correcta ejecución del programa. Así,
en muchas ocasiones, dentro de nuestros programas llamamos a funciones que no están
escritas por nosotros. Un ejemplo de esto lo tenemos en cualquier programa ensamblador
desarrollado para el sistema operativo Windows. En estos programas siempre se llama al
procedimiento ExitProcess, cuyo objetivo es devolver el control al sistema operativo. Sin
embargo, en nuestros programas este procedimiento no está escrito, solamente lo llamamos.
El código máquina de ExitProcess se encuentra en realidad en otro fichero denominado
kernel32.lib, el cual pertenece a una categoría de ficheros conocidos como librerías. Enton-
ces el código de nuestro programa (1-1prog1.obj) hay que completarlo con el código de
ExitProcess, que es proporcionado por kernel32.lib. Para llevar a cabo esta operación se
utiliza la herramienta link, a la cual se conoce como linker o montador de enlaces. Esta herra-
mientas “enlaza” (une) el código escrito por nosotros con el código de ExitProcess y genera
una versión completa y ejecutable de nuestro programa, que se denominará 1-1prog1.exe

J Genera la versión ejecutable del programa tecleando el siguiente comando:

link /SUBSYSTEM:CONSOLE 1-1prog1.obj kernel32.lib
Tras su ejecución, comprueba que se ha generado el fichero 1-1prog1.exe,
ejecutando el comando DIR.

J Puedes ordenar al sistema operativo la ejecución de 1-1prog1.exe; sin em-
bargo, al ejecutarlo no notarás efecto alguno, ya que este programa (como la
gran mayoría de los que harás en este bloque de prácticas) no hacen opera-
ciones de Entrada/Salida. Comprueba esto, tecleando 1-1prog1 y pulsando
ENTER a continuación.





3. Depuración de programas

Para ejecutar paso a paso las instrucciones de un programa y comprobar su funciona-
miento se utiliza una herramienta denominada depurador o debugger. A la ejecución paso a
paso de un programa se le denomina depuración del programa. Para depurar un programa
es necesario que el código fuente haya sido compilado y enlazado de una manera especial,
para que incluya dentro del fichero ejecutable los nombres (etiquetas) que el programador
ha dado a las diferentes partes del programa (por ejemplo, inicio, datos, bucle, fuera), y
no sólo el código máquina. Esto generará un archivo ejecutable que contiene información
simbólica, es decir, nombres de etiquetas, variables, etc. pensada para ser utilizada por el
depurador.

J Compila y enlaza de nuevo el programa para que incluya información de
depuración (esto requerirá utilizar opciones adicionales en las llamadas al
compilador y linker). En concreto ejecuta los siguientes comandos:
ml /c /Cx /coff /Zi /Zd /Zf 1-1prog1.asm
link /DEBUG /SUBSYSTEM:CONSOLE 1-1prog1.obj kernel32.lib

J Ejecuta el comando DIR. Observa que además de los ficheros 1-1prog1.obj y
1-1prog1.exe, también se ha generado el fichero 1-1prog1.pdb. Este fichero
contiene una base de datos con información del programa ejecutable que
será utilizada por el depurador para llevar a cabo el proceso de depuración.

4

Sesión 1

Introducción a las herramientas de trabajo

Figura 1.2: Entorno de depuración del Visual Studio

J Ahora vas a arrancar el entorno de desarrollo del Visual Studio, dentro del
cuál se encuentra el depurador. Para ello, tienes que ejecutar en la línea de
comandos el comando siguiente:
devenv /debugexe 1-1prog1.exe

J Para comenzar la depuración, abre el menú Depurar, y elige la opción Paso a
paso por instrucciones. Observa que la estructura de ventanas del entorno de
desarrollo adquiere un nuevo aspecto. Esto se debe a que el entorno pasa a
un nuevo estado que se llama Depurando, tal y como puedes observar en la
barra de título de la ventana principal del entorno.

La Figura 1.2 muestra el entorno de depuración del Visual Studio. Como puedes obser-
var en esta figura, este entorno se encuentra organizado en cinco ventanas. En la ventana
superior derecha se muestra el código fuente del programa que estamos depurando. A la
izquierda de esta ventana hay otras dos, denominadas Memoria1 y Memoria2. Se trata de dos
ventanas de exploración de memoria, que se utilizan para explorar las áreas de memoria
usadas por las secciones de datos y pila del programa. En la zona inferior izquierda se en-
cuentra la ventana de registros, que muestra el estado de los registros generales de la CPU
durante la ejecución del programa, y en la zona inferior derecha hay una ventana, deno-
minada Inspección 1, que se puede utilizar para inspeccionar el estado de las variables del
programa.

El entorno de depuración del Visual Studio es configurable por el usuario. Así éste puede
variar el número y el tipo de ventanas que aparecen en el entorno, así como su tamaño. Por
favor, no realices modificaciones en el entorno, porque al abandonarlo, dichas modificacio-
nes se registran automáticamente y, entonces, la siguiente persona que utilizase el ordenador
se encontraría con el entorno modificado. Si t
  • Links de descarga
http://lwp-l.com/pdf19223

Comentarios de: Bloque 1 - Programación en ensamblador de la arquitectura IA-32 bajo Win32 (0)


No hay comentarios
 

Comentar...

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

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

Puedes registrarte o validarte desde aquí.

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