MICROPROCESADORES DEBUG
Enviado por gabriel_asd77 • 4 de Mayo de 2014 • 1.470 Palabras (6 Páginas) • 270 Visitas
Lenguaje de Máquina en Microprocesadores (DEBUG)
El DEBUG es un programa de DOS que permite visualizar la memoria, introducir programas en ella y rastrear su ejecución. Es utilizado para probar y depurar programas ejecutables. Trabaja desplegando todo el código del programa y los datos en formato hexadecimal, y cualquier dato que se introduzca a la memoria también debe estar en formato hexadecimal. Permite también ejecutar un programa en “modo de paso sencillo”(un paso a la vez), de manera que se pueda ver el efecto de cada instrucción sobre las localidades de memoria y los registros.
Ver Taller enlace siguiente Generalidades e Introducción al DEBUG
Instrucciones DEBUG
Introducir “programas” con Debug
Como a partir de ahora tendremos más de una instrucción, y la introducción de las instrucciones las estamos realizando directamente en código de máquina (números hexadecimales) tal como CDh 21h
(INT 21), escribir estas instrucciones se torna complicado.
Para esto, el Debug incluye el comando A (Assemble, ensamblar), que nos permite introducir directamente la mnemotecnia, o instrucciones que nos resultan más fáciles de comprender ymemorizar. Así que en ves de introducir los códigos de máquina en hexadecimal, a partir de ahora comenzaremos a utilizar el comando A.
Por ejemplo, si deseamos escribir las instrucciones INT 21 e INT 20 en las posiciones 100h y 102h respectivamente, desde el indicador del Debug debemos ingresar:
- A 100 [Enter]
11F5:0100 INT 21 [Enter]
11F5:0102 INT 20 [Enter]
11F5:0104 [Enter]
Nota: El listado anterior es un ejemplo, y no se debe ejecutar.
Mover datos a Registros
Como vimos, para realizar operaciones aritméticas debemos asignar valores a registros. Para evitar tenerque hacerlo utilizando la orden R del Debug, utilizaremos la instrucción MOV para cargar números en registros.
Veamos como funciona moviendo números de un registro a otro:
Primero introducimos en AX el valor 1234h por medio de la instrucción MOV AX, 1234 y en DX el valor ABCDh,por medio de MOV DX, ABCD. El comando del Debug que debemos utilizar para introducir las instrucciones es A 100. para ubicar los códigos a partir de la dirección 100h. Escribamos en la próxima dirección, lainstrucción MOV AH,DL y ejecutemos con T las tres instrucciones anteriores.
1) ¿Qué valores hay en los registros AX y DX?
Si ahora introducimos MOV BX, AX en la dirección 0108h (que debería ser la próxima dirección libre) y loejecutamos con T...
2) ¿Cuáles son los nuevos valores de los registros AX y BX?
Veamos ahora los siguientes ejemplos:
Utilizando el comando A del Debug, ingresar las siguientes instrucciones:
11F5:0100 MOV AX,1000
11F5:0103 MOV BX,1010
11F5:0106 ADD AX,BX
3) ¿Qué realiza cada una de las instrucciones del listado anterior?. Detallar
En nuestro próximo ejemplo, veremos una forma diferente de escribir en los registros los datos a sumar.
Primero, utilizando el comando E del Debug hagamos lo siguiente:
-E 1000 [Enter]
11F5:1000 00.FF 11.00 [Enter]
-E 1010 [Enter]
11F5:1010 EC.00 00.11 [Enter]
Luego, utilizando el comando A, introduzcamos las instrucciones:
- A 100 [Enter]
11F5:0100 MOV AX,[1000]
11F5:0103 MOV BX,[1010]
11F5:0107 ADD AX,BX
11F5:0109 MOV [1020],AX [Enter]
Para comprenderlo mejor, veamos el volcado de la memoria entre las direcciones 1000h y 1030h, utilizando para ello el comando D de Debug, y el rango de memoria que queremos ver
-D 1000, 1030 [Enter]
11F5:1000 FF 00 A3 01 74 08 3C 0C-77 43 75 02 32 C0 2E F6 ....t.<.wCu.2...
11F5:1010 00 11 A3 04 74 0C 3C 0C-74 08 04 0C 72 2F 3C 18 ....t.<.t...r/<.
11F5:1020 FF 11 8A D0 2E A1 36 A4-0A E4 75 21 8A F0 2E A1 ......6...u!....
11F5:1030 38
4) ¿Qué realizan las instrucciones
...