Arquitectura de computadores
Assembler x86
Objetivos:
Con la realización del siguiente trabajo práctico se busca:
* Conocer de forma básica el uso del programa Debuger.
* Comprender la diferencia entre lenguaje de máquina y lenguaje ensamblador.
* Visualizar como se encuentra ubicado un programa en la memoria de la computadora.
Introducción de contexto:
Cuando sedesarrolla un programa, con independencia del lenguaje usado, raramente se trata de pensar en cómo se va a hallar este programa dentro de la memoria de la computadora, o sea como estarán ubicados los bytes en memoria.
En este trabajo práctico partiendo de diversos ejemplos veremos el uso de diferentes herramientas que nos van a permitir conocer mejor el funcionamiento del hardware y también visualizar elcomportamiento del código y la información en la memoria de la computadora.
Elementos Necesarios:
* Una computadora ejecutando el sistema operativo Windows XP en forma nativa o en máquina virtual.
* Disponer de un compilador de lenguaje “C”.
* Acceso a Internet.
Desarrollo del Trabajo Práctico:
1. Ejercicio 1: Si se va a trabajar con una máquina virtual, proceder a iniciarla.Dentro del sistema operativo W’XP proceder a iniciar una terminal de comando:
2.1. Iniciar una ventana de comandos, siguiendo la siguiente secuencia:
Inicioejecutarcmdintro
2.2. A fin de iniciar el programa Debuger, dentro de la ventana de comandos tipear “debug” y a continuación pulsar intro.
debugintro
¿Indicar cuál es el nuevo símbolo del prompt? “_”
2.3. Ingresar elcarácter “?” seguido de intro, esto nos dará acceso al help del debuger. Realizar una descripción de la función de cada uno de los comandos y su sintaxis.
A: “assemble” Empezar a ensamblar un programa en el Debug, se le puede dar como parámetro la dirección donde se desea que se inicie el ensamblado.
C: “Compare” Compara dos zonas de memoria mostrando las diferencias.
D: “Dump” Visualiza elcontenido de la memoria
E: “Enter” Sirve para introducir una determinada cadena de caracteres en una determinada localidad de la memoria.
F: “Fill” Llena la zona de memoria especificada con repeticiones de la lista de bytes indicada
G: “Go” Sirve para ejecutar el programa.
H: “Hex” muestra la suma y resta de dos números en hexadecimal, sirve para obtener la longitud del programa si queremos.
I:“Input” Visualiza la lectura del puerto de E/S indicado.
L: “Load” Carga sectores de la unidad 0, 1, ... (A, B, ...) a memoria. Se trata de sectores lógicos del DOS y no los sectores físicos de la BIOS
M: “Move” Copia una zona de memoria en otra de manera inteligente (controlando los posibles solapamientos de los bloques).
N: “Name” Sirve para ponerle un nombre al programa.
O: “Output” Enviaun valor a un puerto de E/S.
P: “Proceed” Ejecuta una instrucción del programa, pero al encontrarse un CALL o INT lo ejecuta de golpe sin entrar en su interior
Q: “Quit” Salir del Debug
R: “Register” Muestra los registros de la UCP
S: “Search” Busca una cadena de bytes por la memoria
T: “Trace” Ejecuta una instrucción del programa (a partir de CS:IP) mostrando a continuación el estado de losregistros y la siguiente instrucción.
U: “Unassemble” Se utiliza para verificar que el programa se cargo en memoria.
W: “Write” Escribe el programa en el disco indicando cuantos bytes ocupo
XA [#páginas] “Allocate expanded memory” Asignar memoria expandida
XD [identificador] “Deallocate expanded memory” Desasignar memoria expandida.
XM [Lpágina] [Ppágina] [identificador]“Map expanded memory pages” Asignar páginas de memoria expandida
XS “Display expanded memory status” Mostrar estado de la memoria expandida
2.4. Ingresar las dos líneas siguientes (cuidando de no cometer errores) y finalizando cada una con el pulsado de la tecla Intro
-E 0100 BE 0D 01 B4 0E B1 0C AC CD 10 E2 FB C3 48 65 6C
-E 0110 6C 6F 20 57 6F 72 6C 64 21
2.5....
Regístrate para leer el documento completo.