Ejercicios Debug Fajardo 577

Share Embed Donate


Short Description

Ejercicios Debug Fajardo 577...

Description

ESCUELA SUPERIOR POLITECNICA DE CHIMBORAZO

NOMBRE: Cristhian Fajardo FECHA: 04 - 07 - 2016 CURSO: 5to “A” EIE-CRI CODIGO: 577  ARQUITECTURA DE DE COMPUTADORES COMPUTADORES Ejercicios 1. Introducir Introduc ir el siguiente código para la suma de 2 números: Código de Máquina: 01D8  Asignar a AX=5  Asignar a BX=3

2. Introducir Introduc ir el siguiente código para la resta de 2 números. Código de Máquina: 29F8  Asignar a AX=5  Asignar a BX=3

3. Introducir Introduc ir el siguiente código para la multiplicación multiplicac ión de 2 números: Código de Máquina: F7E3  Asignar a AX=5  Asignar a BX=3

4. Introducir el siguiente código para la división de 2 números: Código de Máquina: F7F3  Asignar a AX=8  Asignar a BX=4

5. Utilizando los ejercicios del 1 al 4 realice un programa que genere secuencialmente la suma, resta, multiplicación y división, en ese orden, los valores originales del registro AX y BX son los que deseen.

Ensamblando un programa Para crear al instante un programa en ensamblador con debugger se utiliza el comando “A” (Assemble), este comando permite introducir código en forma de nemónicos y su sintaxis es “A[dirección]”, donde dirección es la ubicación de memoria a partir de la cual se empezara a ensamblar, sino se especifica la direccióninicial a partir de la cual se debe ensamblar, ensambla a partir de la localidad especificada por CS:IP. Ejecutado el comando “A”, debug preguntará en forma sucesiva y secuencial por la siguiente instrucción a ensamblar, cada instrucción se ensambla en el momento de ser digitada y cada byte generado se almacena en la memoria en la dirección inicial y en secuencia sucesiva.

Digite “A [enter]”, como resultado se obtiene: -A 17A3:0100 Debug se encuentra listo para aceptar las instrucciones: mov ah, 8 [enter] add ah, 3 [enter] sub ah, 4 [enter] int 20 [enter] [enter] Las localidades de memoria o segmento pueden ser distinto en cada PC. Para ejecutar el programa anterior se usa el comando “G [dirección]”, que ejecuta instrucciones a partir de una dirección. Se observa que nuestro programa comienza en el segmento 17A3:0100 y termina en el segmento 17A3:0108, si se desea ejecutar todas las instrucciones a partir de CS:IP (17A3:0100) hasta la instrucción en 17A3:0108, se digita “g108”, como resultado se obtiene:

Debug despliega los registros con los resultado intermedios, se observa comparando el estado inicial y final de los registros con respecto a AX en su parte alta, es decir, AH que tiene un valor inicial AX=0000, pasando por AX=0800, sumando 3, AX=0B00 y restando 4, AX=0700 que es el resultado final de este programa. Debug ejecuta la interrupción 20 “int 20” termina el programa y regresa el control al DOS.

Desensamblar  Para desensamblar un programa que se acaba de escribir se utiliza el comando “U” que desensambla lo que se digita partiendo de la localidad de memoria especificada y la cantidad de bytes especificados con “L” que significa longitud (length), lo que muestra tanto el código digitado con nemotécnicos como el código en hexadecimal de cada instrucción.

Existe también un comando que ayuda a rastrear la ejecución del programa haciendo un paso a paso este comando es el “Trace (t)”.

Guardar y c argar un pro grama Lo hecho hasta ahora ha sido operar un programa en memoria, para guardarlo en disco y recuperarlo después, siga los siguientes pasos, tomando el código ya trabajado:

1. Averigüe la longitud del programa restando la dirección final (ultima instrucción del programa) de la dirección inicial (primera instrucción del programa), la longitud se expresa en hexadecimal.  - h 10A 100, lo que resulta en “020A 000A”.

2. Crear un nombre para el programa, que incluya la vía y la extensión. c:primprog.com. no más de ocho caracteres para el nombre.

 -

n

3. Poner la longitud del programa en el registro CX.  - rcx, lo que despliega el contenido del registro CX, CX 0000, se coloca la longitud del programa restando la dirección final 010A de la inicial 0100 que se obtiene 000A, se digita “:000A”.

4. Darla orden de escritura. La orden de escritura se da con “w”, - w aparece el mensaje “writing 000A bytes”, escribe la cantidad de byte en el registro CX.

Para cargar el archivo anterior u otro archivo, se debe seguir los siguientes pasos: 1. Proporcionar el nombre del programa que se cargará usando el comando “n”.  n c:\ primprog.com 2. Cargarlo mediante comando (L) load. -l 3. Para verificar que fue cargado, desensamble a partir de la localidad 100H.  -u 100 L9. Para estar seguro de la ubicación antes de entrar a debug ejecute el comando “dir” para mostrar los archivos presentes en el lugar donde guardo el archivo.

Salir de debug, para salir de debug digite el comando “q”, es decir, -q



Seleccione un archivo pequeño .exe o .com de máx. 4Kb y desensámblelo con el DEBUG Visualize porciones datos, i.e. comando D

de

código, i.e. comando U,

Seleccione, analize y reporte instrucciones, i.e. comando T

una

subrutina

Prepare Reporte escrito con listado y explicación de la rutina

y

porciones de

mín.

de 32



HACER UN PROGRAMA QUE MUESTRE EN TODA LA PANTALLA LA LETRA  A(MAYUSCULA). Resolución de pantalla en modo texto es de (80 x 35 caracteres)

Código ASCII La letra A mayúscula es igual a (65 decimal) y (41 en Hexadecimal) Como debug solo usa el sistema hexadecimal usaremos A=41 Segmento de memoria de la pantalla: Esta es igual a B800 donde la letra A se encontraría en la dirección lógica B800:0041

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF