SlideShare ist ein Scribd-Unternehmen logo
1 von 37
INSTITUTO DE ESTUDIOS SUPERIORES DE CHIAPAS CHACÓN AGUIRRE PAULINA YANNETH Salazar Narváez Ing. Sistemas Computacionales 4to “A” Catedrático: Lic. Enrique Martínez Gutiérrez Asignatura: Lenguaje Ensamblador
DEBUG es un programa que se utiliza para depurar programas, para conocer lo que realiza la computadora a nivel de hardware todo lo que ocurre cuando ejecuta un programa, porque te va mostrando los valores de los registros, localidad de memoria, etc
Introducción. En la siguiente presentación se hablara del programa DEBUG que es un programa que se encarga de probar y depurar  programas ejecutables desde DOS. Se hablara de sus características principales cuales son los comandos mas utilizados y su función, cual es su estructura, como inicializa entre otras utilerías que ofrece DEBUG.
El programa DEBUG. ,[object Object],[object Object],[object Object],[object Object]
Comandos de DEBUG Los comandos que proporciona DEBUG nos permiten realizar diferentes operaciones útiles. La mayoría de los comandos de DEBUG ejecutan una acción y vuelven al indicador, pero si es un comando largo, como puede ser mostrar un trozo grande de código, puede detenerse pulsando CTRL-Pausa o interrumpirse con CTRL-C para volver.  Mostrar estados de la memoria expandida. XS Asignar páginas de memoria expandida. XM Desasignar memoria expandida. XD Asignar memoria expandida. XA Escribir o grabar un programa en disco. W “ Desensamblar” código máquina y pasarlo a código simbólico. U Rastrear la ejecución de una instrucción. T Mostrar el contenido de uno o más registros. R Salir de la selección con DEBUG. Q Proceder a ejecutar un conjunto de instrucciones relacionadas. P Nombrar un programa. N Correr el programa ejecutable que se encuentra en memoria. G Introducir datos en memoria, iniciando en una localidad especifica. E Mostrar el contenido de un área de memoria. D Ensamblar instrucciones simbólicas y pasarlas a código de maquina. A Descripción. Comando.
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
El despliegue del DEBUG Consiste en tres partes: 1.  La dirección hexadecimal del ultimo byte de la izquierda que se despliega en la forma  segmento:desplazamiento. 2.  Representación hexadecimal del área desplegada. 3.  Representación en ASCII de los bytes que contienen características desplegables . x……….x xx ……………. xx-xx ……………. xx xxxx:xx30 x……….x xx ……………. xx-xx ……………. xx xxxx:xx20 x……….x xx ……………. xx-xx ……………. xx xxxx:xx10 <--ASCII--> <----- Representación Hexadecimal -----> Dirección
Inicio con DEBUG. Para empezar con DEBUG, coloque el sistema en el directorio del disco duro que contenga DEBUG. Para iniciar el programa, teclee la palabra DEBUG y presione un Enter.  DEBUG debe cargarse al disco de la memoria. Cuando el indicador (-), aparezca en la pantalla. DEBUG está listo para recibir sus comando.
Visualización de las localidades de memoria. El único comando por el cual nos interesaremos es D (Display, mostrar), el cual lista ocho líneas de 16 bytes cada una y muestra su representación hexadecimal y ASCCI Verificación del equipo del sistema. Vamos a determinar el BIOS que tiene instalado su equipo. Estas palabra está en las localidades  410H-411H, que puede ver desde DEBUG por medio de una dirección de dos partes: 40 para la dirección de segmentos y 10 para el desplazamiento desde la dirección del segmento. Teclear correctamente 40:10
Ahora agarramos la primera línea algo así: 0040:0010 23 C8 F0 80 .. .. .. .. En este ejemplo, los dos bytes en la palabra del estado del equipo contienen los valores hexadecimales 23 C8. invierta los bytes (C8 23) y conviértalos a binario: A continuación está una explicación del código hexadecimal. 1 1 0 0 0 1 0 0 0 0 0 1 0 0 1 1 Binario: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Bit: 1 = unidad de disco flexible está presente 0 1 = coprocesador matemático está presente 1 Modo inicial de video = 10 (donde 01 = 40 X 25 en color, 10 = 80 X 12 25 en color y 11 = 80 X 12 25 monocromático. 5, 4 Número de dispositivos de disco flexible = 1 (donde 00 = 1, 01 = 2, 10 = 3 y 11 = 4) 7, 6 Número de puertos seriales conectados = 4 (binario 100) 11, 9  Número de puertos paralelos para impresora conectados =  3 (binario 11) 15, 14 Dispositivo Bits
Verificar el tamaño de la memoria. Aquí se calculara la cantidad de memoria que el DOS piensa que tiene instalada. Depende del modelo de la computadora, el valor puede estar basado en interrupciones internos y puede indicar menos memoria de la que realmente este instalada. El valor esta en área de la BIOS en las localidades 413H y 414H. Teclee correctamente D 40:13
Aparecerá 0040:0010 .. .. .. 80 02 .. .. .. Los dos primeros bytes mostrados en el desplazamiento 0010H son los kilobytes de memoria en hexadecimal, con los bytes en secuencia inversa. Ejemplo: 640 02 80 80 02 Decimal (k) Hexadecimal Corregido Hexadecimal Inverso
Verificación del número de serie y de la nota de derechos reservados. El numero de la serie de la computadora está alojado en el ROM de BIOS en la localidad FE000H. Para visualizarlo teclee D FE00:0 La pantalla muestra un número de series de siete dígitos seguido , en maquinas convencionales, de una nota de derechos reservados. Para seguir checando los derechos reservado basta con poner D y un Enter.
Verificación de la fecha en la ROM BIOS La fecha de fabricación de su ROM BIOS inicia en la totalidad FFFF5H, registrada como mm/dd/aa. Par verla teclee: D FFFF:5 (Enter) Esta fecha nos puede determinar la edad de la computadora y su modelo.
Verificación de la identidad del modelo. Ya después de la fecha de fabricación del ROM BIOS está la identificación del modelo en la localidad FFFFEH ó FFFF:E Aquí algunos de los modelos. Primera IBM PC FF PC-XT (1982), Portátil (1982) FE PC-AT (1984), PC-XT Modelo 286 PS/2 Modelos 50 y 60, etc. FC PC-XT (1986) FB PS/2 Modelo 30 FA PC Convertible F9 PS/2 Modelos 70 y 80 F8 Modelo Código
Ejercicio 1 de lenguaje máquina: DATOS INMEDIATOS. A continuación se usara DEBUG para introducir un programa directamente en memoria y rastrear su ejecución. Este programa mostrara un sencillo código de lenguaje maquina, como aparece en el almacenamiento principal y los efectos de su ejecución. Programa Datos Inmediatos, datos definidos como parte de una instrucción. Se muestra el lenguaje máquina en formato hexadecimal y para legibilidad en código simbólico, junto con explicación . Para la primera instrucción, el código simbólico es MOV AX,0123, lo cual mueve (o copia) el valor 0123H al registro AX.  MOV es la instrucción, el registro AX es el primer operando y el valor inmediato 0123H es el segundo operando. No operación (no hace nada) NOP 90 Restar AX de AX (limpiar AX) SBU AX,AX 2BC0 Restar el contenido de AX a CX SUB CX,AX 2BC8 Mover el contenido de BX a CX MOV CX,BX 8BCB Sumar el contenido de AX a BX ADD BX,AX 03D8 Mover el contenido de AX a BX MOV BX,AX BD8 Sumar el valor 0025H a AX ADD AX,0025 052500 Mover el valor 0123H  a AX MOV AX,0123 B82301 Explicación Código simbólico Instrucción de máquina
Las instrucciones de máquina pueden tener uno, dos o tres bytes de longitud. El primer byte es la operación real y cualesquiera otros bytes, si están presentes, son operandos: referencia a un valor de inmediato, un registro o una localidad de memoria.  La ejecución del programa empieza con la primera instrucción de máquina y avanza por cada instrucción, una después de otra. Al llegar ha este punto no esperamos que tenga mucho sentido el código de máquina.
Para iniciar. Teclee el comando DEBUG y presione Enter. Cuando DEBUG este cargado por completo, despliega su indicador (-). Introducir instrucciones de programa. Para introducir el programa directamente en memoria, solo teclee la parte del lenguaje máquina pero no el código simbólico o la explicación. Teclee el siguiente comando E (Enter) con los espacios en blanco que se indican. E CS:100 B8 23 01 05 25 00 CS:100 indica la dirección de memoria inicial donde se almacenaran los datos -100H (256) bytes siguiendo al inicio del segmento de código.  El comando E hace que DEBUG cada par de dígitos hexadecimales en un byte de memoria, desde CS:100 hasta CS:105.
El siguiente comando E almacena 6 bytes, empezando en CS:106 a 107, 108, 109, 10A y 10B: E CS:106 8B D8 03 D8 8B CB El ultimo comando E almacena 5 bytes, empezando en CS:10C a 10D, 10E, 10F y 110: E CS:10C 2B C8 2B C0 90 Si teclea algún comando de manera incorrecta, solo repítalo con los valores correctos.
Rastreo de la instrucción de máquina. Formato hexadecimal Comandos Registros de banderas Registro IP Regresar
Ejecución de instrucción de programa. Es algo sencillo ejecutar las instrucciones anteriores, una a la vez. Los comandos DEBUG que nos conciernen aquí son R (registro) y T (rastreo).  Para ver los contenidos iniciales de los registros y las banderas. Teclee el comando R. DEBUG muestra el contenido de los registros en forma hexadecimal.  El registro IP muestra IP=0100, indicando que la ejecución de la instrucción inicia 100H bytes después del inicio del segmento del código.  En el registro de las banderas muestra la siguiente configuración: NV UP EI PL NZ NA PO NC Esta configuración significa: no desbordamiento, dirección hacia arriba/abajo, interrupción habilitada, signo positivo, no cero, no acarreo auxiliar, paridad impar y no acarreo. Ver figura.
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],23 01
DEBUG muestra los resultados en los registros. El contenido del registro IP es 0103H, que indica la ubicación del desplazamiento en el segmento del código de la siguiente instrucción que será ejecutada a saber: xxxx:0103 052500 ADD AX,0025 Para ejecutar esta instrucción, introduzca otra T. la instrucción ADD suma 25H a la mitad baja del registro AX y 00H a la mitad alta, en realidad suma 0025H al AX. Ahora AX contiene 0148H y el IP contiene 016H para la siguiente instrucción que se ejecutara: xxxx:0106 8BD8 MOV BX,AX. Teclee T. la instrucción MOV mueve el contenido del registro AX a  BX. Después de mover BX contiene 0148H AX aun contiene 0148H ya que MOV copia en el lugar de mover los datos de esa localidad a otra. Ahora teclee T hasta pasar por el resto de las instrucciones. La instrucción ADD suma el contenido de AX a BX, dando 0290H en BX. Después el programa mueve el contenido de BX a CX, resta a AX de CX y resta AX de el mismo. Después de la ultima operación la bandera de cero se cambia de NZ a ZR para indicar que el resultado de la ultima operación fue cero. A continuacion se muetra todos los pasos.
 
Mostrar el contenido de memoria Para mostrar la ultima instrucción NOP presione T, pero esta instrucción no realiza cosa alguna.  En lugar de eso para ver el programa en lenguaje de máquina en el segmento del código requiere el siguiente despliegue: D CS:100 DEBUG muestra 16 bytes de datos en cada línea. A la derecha esta la representación ASCII de cada byte. La primera línea del despliegue inicia en el desplazamiento 100H del segmento del código y representa el contenido de CS:100 hasta CS:10F. La segunda línea representa el contenido CS:110 hasta CS:11F.
Corregir una entrada. Si se introduce un valor erróneo en el segmento de datos o en el segmento de código, reintroducir el comando E para corregirlo. También se reanuda la ejecución en la primera instrucción indicando el registro IP con 0100. se teclea el comando R seguido por el registro designado, esto es, R IP [Enter]. DEBUG muestra el contenido de IP y espera por una entrada. Se teclea el valor 0100, Enter, después se teclea R. DEBUG muestra los registros, banderas y la primera instrucción que será ejecutada. Ya se puede usar T para volver a rastrear las instrucciones paso a paso.
Introducir un programa simbólico en ensamblador. El ejercicio de programa fue en formato de lenguaje máquina, también puede utilizar DEBUG para ingresar instrucciones simbólicas  en lenguaje ensamblador. Ahora examinaremos como introducir enunciados en lenguaje ensamblador. El comando A. A (ensamblar) le dice a DEBUG que acepte instrucciones simbólicas en ensamblador y las convierte en lenguaje maquina. Inicialice la dirección de inicio en el segmento de código con desplazamiento 100H para sus instrucciones como: A 100 (Enter) DEBUG muestra el valor del segmento de código y el desplazamiento como xxxx:0100
A continuación se teclea cada una e las siguientes instrucciones seguido de un Enter. MOV AL,25 MOV BL,32 ADD AL,BL NOP DEBUG muestra lo siguiente: Puede ver que DEBUG ha terminado la localidad de inicio de cada instrucción. Pero antes de ejecutar el programa usemos el comando U (desensamblar) de DEBUG para examinar el lenguaje de máquina generado.
El comando U Muestra el código de máquina para sus instrucciones en lenguaje ensamblador. Se puede usar este comando para indicarle a DEBUG las localidades de la primera y ultima instrucción que quiere ver, en este caso, 100H y 106H. Teclee  U 100,106 (Enter) Y la pantalla muestra: Ahora rastree le ejecución del programa, el código de máquina es lo que realmente se ejecuta. Introducir R para desplegar los registros y la primera instrucción , después T sucesivamente para rastrear las instrucciones subsecuentes. Cuando se llega a NOP se puede continuar con la siguiente instrucción si no presionar Q para salir.
La instrucción INT A continuación se muestra como accesar el DOS y el BIOS para enviar información acerca del sistema, por el cual se utiliza la instrucción INT (interrupción) la cual sale de un programa, ingresa una rutina del DOS o de BIOS, realiza la función solicitada y regresa a su programa.  Usaremos el comando P (proceder) de DEBUG para ejecutar toda la rutina de interrupción.  Obtener el numero de versión del DOS. A veces es necesario saber cual es la versión del DOS que la computadora esta corriendo.  La instrucción que entrega el numero de versión  es INT 21H del DOS, función 30H; esto es, cargue 30H en el registro AH y solicite INT 21H. Ingrese A 100 de DEBUG y las siguientes instrucciones en ensamblador: MOV AH,30 INT 21 NOP (Enter adicional)
Para rastrear la ejecución de las instrucciones primero ingresar R para ver los registros y T para rastrear MOV. En lugar de rastrear la instrucción INT, ingrese P para ejecutar toda la rutina del DOS. El proceso termina con la instrucción NOP. Ahora se ve el AL el numero principal de la versión DOS como X en DOS X.20, y en el AH el numero secundario de la versión, como 14H (o 20) en DOS X.20
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Lenguaje ensamblador: Operador PTR Aquí otro programa que introduce algunas características nuevas, donde se mueven y se suman datos entre las localidades de memoria y registro. Instrucciones: 00 00 00  DB  120  00 00 DB  11E  05 00 DB  11C  14 23 DB  11A   NOP 119   NOP 118 BYTE PTR [122],30 MOV  113 WORD PTR [120],25 MOV  10D [11E],AX MOV  10A  AX,25 ADD  107 AX,[11C] ADD 103 AX,[11A] MOV  100
Una explicación de las instrucciones es: Se sigue el mismo procedimiento teclear A 100, después todas las instrucciones y un Enter de más. Se introduce R para mostrar el registro y la primera instrucción, después T sucesivamente. Salir de la ejecución cuando se llega a NOP en 118. teclear D 110 para mostrar los contenidos combinados de AX (233E) y de las localidades 11EH-11EF (3e23), 120H-121H (2500) y 122H (30) Define otros valores de bytes para uso en el programa. 11C, 11E y 120 Define los valores de bytes 14H y 23H. DB (definir bytes) le permite definir datos que sus instrucciones están referenciado. 11A Mueve el valor inmediato 30H a la localidad de memoria 122H. Queremos mover un byte y el operador BYTE PTR indica longitud. 113 Mueve el valor inmediato 25H a las localidades de memoria 120h-121H. El operador WORD PTR indica a DEBUG que debe mover el 25H a una palabra de memoria 10D Mueve el contenido de AX a las localidades de memoria 11EH-11EF 10A Suma el valor inmediato 25H al AX 107 Suma el contenido de todas las localidades de memoria 11CH-1DH al AX 103 Mueve el contenido de las localidades de memoria 11AH-11BH al AX. Los corchetes indican una dirección de memoria y no valores  100
Conclusión. DEBUG puede ser uno de los programas  mas antiguas que hay pero todavía realiza lo que se le indica. Como se dijo es útil para probar y depurar programas escritos en lenguaje máquina y en lenguaje ensamblador. Se espera que lo investigado sea de gran utilidad para investigaciones futuras.
Bibliografía. Libro: Lenguaje ensamblador y programación para IBM PC compatibles. Autor: Abel Peter Editorial: Pearson Educación

Weitere ähnliche Inhalte

Was ist angesagt?

Lenguajes de interfaz
Lenguajes de interfazLenguajes de interfaz
Lenguajes de interfazXavi Flores
 
3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento internoFernando Solis
 
Lenguaje ensamblador basico
Lenguaje ensamblador basicoLenguaje ensamblador basico
Lenguaje ensamblador basicoGustavo Davila
 
Comandos básicos ms-dos
Comandos básicos ms-dosComandos básicos ms-dos
Comandos básicos ms-dosDianithaa17
 
Portafolio Lenguajes y Autómatas Unidad 1
Portafolio Lenguajes y Autómatas Unidad 1Portafolio Lenguajes y Autómatas Unidad 1
Portafolio Lenguajes y Autómatas Unidad 1Humano Terricola
 
Tipos de datos C#
Tipos de datos C#Tipos de datos C#
Tipos de datos C#alex28Xx
 
REGISTRO DE BANDERAS
REGISTRO DE BANDERASREGISTRO DE BANDERAS
REGISTRO DE BANDERASFabian Rojas
 
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...Hugo Alberto Rivera Diaz
 
Unidad 3 topicos avanzados de programacion
Unidad 3 topicos avanzados de programacionUnidad 3 topicos avanzados de programacion
Unidad 3 topicos avanzados de programacionIrving Che
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Giancarlo Aguilar
 
Topicos Avanzados de Programacion - Unidad 3 componentes y librerias
Topicos Avanzados de Programacion - Unidad 3 componentes y libreriasTopicos Avanzados de Programacion - Unidad 3 componentes y librerias
Topicos Avanzados de Programacion - Unidad 3 componentes y libreriasJosé Antonio Sandoval Acosta
 
Equipo 6 programacion hibrida
Equipo 6 programacion hibridaEquipo 6 programacion hibrida
Equipo 6 programacion hibridagabo
 
Red hat linux
Red hat linuxRed hat linux
Red hat linuxluiiis1
 

Was ist angesagt? (20)

Lenguajes de interfaz
Lenguajes de interfazLenguajes de interfaz
Lenguajes de interfaz
 
Ejercicios
EjerciciosEjercicios
Ejercicios
 
Metodo burbuja
Metodo burbujaMetodo burbuja
Metodo burbuja
 
3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno
 
Procedimientos almacenados
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenados
 
Lenguaje ensamblador basico
Lenguaje ensamblador basicoLenguaje ensamblador basico
Lenguaje ensamblador basico
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Comandos básicos ms-dos
Comandos básicos ms-dosComandos básicos ms-dos
Comandos básicos ms-dos
 
Portafolio Lenguajes y Autómatas Unidad 1
Portafolio Lenguajes y Autómatas Unidad 1Portafolio Lenguajes y Autómatas Unidad 1
Portafolio Lenguajes y Autómatas Unidad 1
 
Unidad 2 expresiones regulares
Unidad 2 expresiones regularesUnidad 2 expresiones regulares
Unidad 2 expresiones regulares
 
Estructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busquedaEstructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busqueda
 
Tipos de datos C#
Tipos de datos C#Tipos de datos C#
Tipos de datos C#
 
REGISTRO DE BANDERAS
REGISTRO DE BANDERASREGISTRO DE BANDERAS
REGISTRO DE BANDERAS
 
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
 
Unidad 3 topicos avanzados de programacion
Unidad 3 topicos avanzados de programacionUnidad 3 topicos avanzados de programacion
Unidad 3 topicos avanzados de programacion
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.
 
Topicos Avanzados de Programacion - Unidad 3 componentes y librerias
Topicos Avanzados de Programacion - Unidad 3 componentes y libreriasTopicos Avanzados de Programacion - Unidad 3 componentes y librerias
Topicos Avanzados de Programacion - Unidad 3 componentes y librerias
 
Curso básico de ensamblador
Curso básico de ensambladorCurso básico de ensamblador
Curso básico de ensamblador
 
Equipo 6 programacion hibrida
Equipo 6 programacion hibridaEquipo 6 programacion hibrida
Equipo 6 programacion hibrida
 
Red hat linux
Red hat linuxRed hat linux
Red hat linux
 

Andere mochten auch

Lenguaje ensamblador y programacion para ibm pc y compatibles
Lenguaje ensamblador y programacion para ibm pc y compatiblesLenguaje ensamblador y programacion para ibm pc y compatibles
Lenguaje ensamblador y programacion para ibm pc y compatiblesmarii Carmona
 
Sistemas de Telecomunicaciones cap 2
Sistemas de Telecomunicaciones cap 2Sistemas de Telecomunicaciones cap 2
Sistemas de Telecomunicaciones cap 2Francisco Apablaza
 
Lenguaje ensamblador del microprocesador
Lenguaje ensamblador del microprocesadorLenguaje ensamblador del microprocesador
Lenguaje ensamblador del microprocesadorsmfch
 
Ensamblador
EnsambladorEnsamblador
Ensambladorzero0174
 
Instrucciones lenguaje assembler
Instrucciones lenguaje assemblerInstrucciones lenguaje assembler
Instrucciones lenguaje assemblerANDREA
 
Arquitectura interna del procesador
Arquitectura interna del procesadorArquitectura interna del procesador
Arquitectura interna del procesadoralexanderchule
 
A Framework for Collecting, Extracting and Managing Event Identity Informatio...
A Framework for Collecting, Extracting and Managing Event Identity Informatio...A Framework for Collecting, Extracting and Managing Event Identity Informatio...
A Framework for Collecting, Extracting and Managing Event Identity Informatio...Debanjan Mahata
 
Jak nahrat fotografii do alba v 9 krocích
Jak nahrat fotografii do alba v 9 krocíchJak nahrat fotografii do alba v 9 krocích
Jak nahrat fotografii do alba v 9 krocíchZuzana Krkošková
 
Dossier prensa premios 2013
Dossier prensa premios 2013Dossier prensa premios 2013
Dossier prensa premios 2013Turismo Andaluz
 
Nombres grammaire
Nombres grammaireNombres grammaire
Nombres grammaireLOLAPARIS
 
Estrategias de ventas y mercadotecnia (w9)
Estrategias de ventas y  mercadotecnia (w9)Estrategias de ventas y  mercadotecnia (w9)
Estrategias de ventas y mercadotecnia (w9)Alberto Murillo
 

Andere mochten auch (20)

Lenguaje ensamblador y programacion para ibm pc y compatibles
Lenguaje ensamblador y programacion para ibm pc y compatiblesLenguaje ensamblador y programacion para ibm pc y compatibles
Lenguaje ensamblador y programacion para ibm pc y compatibles
 
Debug en simbolo del sistema
Debug en simbolo del sistemaDebug en simbolo del sistema
Debug en simbolo del sistema
 
Aii 09-mm.ppt
Aii 09-mm.pptAii 09-mm.ppt
Aii 09-mm.ppt
 
Fundamentos de telecomunicaciones
Fundamentos de telecomunicacionesFundamentos de telecomunicaciones
Fundamentos de telecomunicaciones
 
Tasm
TasmTasm
Tasm
 
Sistemas de Telecomunicaciones cap 2
Sistemas de Telecomunicaciones cap 2Sistemas de Telecomunicaciones cap 2
Sistemas de Telecomunicaciones cap 2
 
Lenguaje ensamblador del microprocesador
Lenguaje ensamblador del microprocesadorLenguaje ensamblador del microprocesador
Lenguaje ensamblador del microprocesador
 
Ensamblador
EnsambladorEnsamblador
Ensamblador
 
Linq
LinqLinq
Linq
 
Data segment
Data segmentData segment
Data segment
 
Instrucciones lenguaje assembler
Instrucciones lenguaje assemblerInstrucciones lenguaje assembler
Instrucciones lenguaje assembler
 
Microprocesador 8085 Apuntes assembler
Microprocesador 8085 Apuntes assemblerMicroprocesador 8085 Apuntes assembler
Microprocesador 8085 Apuntes assembler
 
UNIDAD 2 PROGRAMACIÓN BASICA
UNIDAD 2 PROGRAMACIÓN BASICAUNIDAD 2 PROGRAMACIÓN BASICA
UNIDAD 2 PROGRAMACIÓN BASICA
 
Arquitectura interna del procesador
Arquitectura interna del procesadorArquitectura interna del procesador
Arquitectura interna del procesador
 
A Framework for Collecting, Extracting and Managing Event Identity Informatio...
A Framework for Collecting, Extracting and Managing Event Identity Informatio...A Framework for Collecting, Extracting and Managing Event Identity Informatio...
A Framework for Collecting, Extracting and Managing Event Identity Informatio...
 
Jak nahrat fotografii do alba v 9 krocích
Jak nahrat fotografii do alba v 9 krocíchJak nahrat fotografii do alba v 9 krocích
Jak nahrat fotografii do alba v 9 krocích
 
Dossier prensa premios 2013
Dossier prensa premios 2013Dossier prensa premios 2013
Dossier prensa premios 2013
 
Findability - encontrabilidad web
Findability - encontrabilidad webFindability - encontrabilidad web
Findability - encontrabilidad web
 
Nombres grammaire
Nombres grammaireNombres grammaire
Nombres grammaire
 
Estrategias de ventas y mercadotecnia (w9)
Estrategias de ventas y  mercadotecnia (w9)Estrategias de ventas y  mercadotecnia (w9)
Estrategias de ventas y mercadotecnia (w9)
 

Ähnlich wie Debug PaulinaChacon

Ähnlich wie Debug PaulinaChacon (20)

Edianny.adan.programacion.docx
Edianny.adan.programacion.docxEdianny.adan.programacion.docx
Edianny.adan.programacion.docx
 
Registros de la cpu
Registros de la cpuRegistros de la cpu
Registros de la cpu
 
assembler
assembler assembler
assembler
 
PROCESAMIENTO EN PANTALLA Y TECLADO BASICO
PROCESAMIENTO EN PANTALLA Y TECLADO BASICOPROCESAMIENTO EN PANTALLA Y TECLADO BASICO
PROCESAMIENTO EN PANTALLA Y TECLADO BASICO
 
LENGUAJE DE MAQUINA
LENGUAJE DE MAQUINALENGUAJE DE MAQUINA
LENGUAJE DE MAQUINA
 
Exposicion lenguaje de maquina 9 y 10
Exposicion lenguaje de maquina 9 y 10Exposicion lenguaje de maquina 9 y 10
Exposicion lenguaje de maquina 9 y 10
 
Unidad 2 ensamblador
Unidad 2   ensambladorUnidad 2   ensamblador
Unidad 2 ensamblador
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
microprocesadores y microcontroladores
microprocesadores y microcontroladoresmicroprocesadores y microcontroladores
microprocesadores y microcontroladores
 
Lenguaje de ensamblador daniel romo 9 a -san felipe
Lenguaje de ensamblador daniel romo 9 a -san felipeLenguaje de ensamblador daniel romo 9 a -san felipe
Lenguaje de ensamblador daniel romo 9 a -san felipe
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Tutorial ensamblador
Tutorial ensambladorTutorial ensamblador
Tutorial ensamblador
 
Emu 8086
Emu 8086Emu 8086
Emu 8086
 
Práctica final tercer parcial
Práctica final  tercer parcialPráctica final  tercer parcial
Práctica final tercer parcial
 
Guia de laboratorio a
Guia de laboratorio aGuia de laboratorio a
Guia de laboratorio a
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Lenguaje máquina
Lenguaje máquinaLenguaje máquina
Lenguaje máquina
 
Emulador de ensamblador EMU8086.
Emulador de ensamblador EMU8086.Emulador de ensamblador EMU8086.
Emulador de ensamblador EMU8086.
 
Assembler
AssemblerAssembler
Assembler
 

Debug PaulinaChacon

  • 1. INSTITUTO DE ESTUDIOS SUPERIORES DE CHIAPAS CHACÓN AGUIRRE PAULINA YANNETH Salazar Narváez Ing. Sistemas Computacionales 4to “A” Catedrático: Lic. Enrique Martínez Gutiérrez Asignatura: Lenguaje Ensamblador
  • 2. DEBUG es un programa que se utiliza para depurar programas, para conocer lo que realiza la computadora a nivel de hardware todo lo que ocurre cuando ejecuta un programa, porque te va mostrando los valores de los registros, localidad de memoria, etc
  • 3. Introducción. En la siguiente presentación se hablara del programa DEBUG que es un programa que se encarga de probar y depurar programas ejecutables desde DOS. Se hablara de sus características principales cuales son los comandos mas utilizados y su función, cual es su estructura, como inicializa entre otras utilerías que ofrece DEBUG.
  • 4.
  • 5. Comandos de DEBUG Los comandos que proporciona DEBUG nos permiten realizar diferentes operaciones útiles. La mayoría de los comandos de DEBUG ejecutan una acción y vuelven al indicador, pero si es un comando largo, como puede ser mostrar un trozo grande de código, puede detenerse pulsando CTRL-Pausa o interrumpirse con CTRL-C para volver. Mostrar estados de la memoria expandida. XS Asignar páginas de memoria expandida. XM Desasignar memoria expandida. XD Asignar memoria expandida. XA Escribir o grabar un programa en disco. W “ Desensamblar” código máquina y pasarlo a código simbólico. U Rastrear la ejecución de una instrucción. T Mostrar el contenido de uno o más registros. R Salir de la selección con DEBUG. Q Proceder a ejecutar un conjunto de instrucciones relacionadas. P Nombrar un programa. N Correr el programa ejecutable que se encuentra en memoria. G Introducir datos en memoria, iniciando en una localidad especifica. E Mostrar el contenido de un área de memoria. D Ensamblar instrucciones simbólicas y pasarlas a código de maquina. A Descripción. Comando.
  • 6.
  • 7. El despliegue del DEBUG Consiste en tres partes: 1. La dirección hexadecimal del ultimo byte de la izquierda que se despliega en la forma segmento:desplazamiento. 2. Representación hexadecimal del área desplegada. 3. Representación en ASCII de los bytes que contienen características desplegables . x……….x xx ……………. xx-xx ……………. xx xxxx:xx30 x……….x xx ……………. xx-xx ……………. xx xxxx:xx20 x……….x xx ……………. xx-xx ……………. xx xxxx:xx10 <--ASCII--> <----- Representación Hexadecimal -----> Dirección
  • 8. Inicio con DEBUG. Para empezar con DEBUG, coloque el sistema en el directorio del disco duro que contenga DEBUG. Para iniciar el programa, teclee la palabra DEBUG y presione un Enter. DEBUG debe cargarse al disco de la memoria. Cuando el indicador (-), aparezca en la pantalla. DEBUG está listo para recibir sus comando.
  • 9. Visualización de las localidades de memoria. El único comando por el cual nos interesaremos es D (Display, mostrar), el cual lista ocho líneas de 16 bytes cada una y muestra su representación hexadecimal y ASCCI Verificación del equipo del sistema. Vamos a determinar el BIOS que tiene instalado su equipo. Estas palabra está en las localidades 410H-411H, que puede ver desde DEBUG por medio de una dirección de dos partes: 40 para la dirección de segmentos y 10 para el desplazamiento desde la dirección del segmento. Teclear correctamente 40:10
  • 10. Ahora agarramos la primera línea algo así: 0040:0010 23 C8 F0 80 .. .. .. .. En este ejemplo, los dos bytes en la palabra del estado del equipo contienen los valores hexadecimales 23 C8. invierta los bytes (C8 23) y conviértalos a binario: A continuación está una explicación del código hexadecimal. 1 1 0 0 0 1 0 0 0 0 0 1 0 0 1 1 Binario: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Bit: 1 = unidad de disco flexible está presente 0 1 = coprocesador matemático está presente 1 Modo inicial de video = 10 (donde 01 = 40 X 25 en color, 10 = 80 X 12 25 en color y 11 = 80 X 12 25 monocromático. 5, 4 Número de dispositivos de disco flexible = 1 (donde 00 = 1, 01 = 2, 10 = 3 y 11 = 4) 7, 6 Número de puertos seriales conectados = 4 (binario 100) 11, 9 Número de puertos paralelos para impresora conectados = 3 (binario 11) 15, 14 Dispositivo Bits
  • 11. Verificar el tamaño de la memoria. Aquí se calculara la cantidad de memoria que el DOS piensa que tiene instalada. Depende del modelo de la computadora, el valor puede estar basado en interrupciones internos y puede indicar menos memoria de la que realmente este instalada. El valor esta en área de la BIOS en las localidades 413H y 414H. Teclee correctamente D 40:13
  • 12. Aparecerá 0040:0010 .. .. .. 80 02 .. .. .. Los dos primeros bytes mostrados en el desplazamiento 0010H son los kilobytes de memoria en hexadecimal, con los bytes en secuencia inversa. Ejemplo: 640 02 80 80 02 Decimal (k) Hexadecimal Corregido Hexadecimal Inverso
  • 13. Verificación del número de serie y de la nota de derechos reservados. El numero de la serie de la computadora está alojado en el ROM de BIOS en la localidad FE000H. Para visualizarlo teclee D FE00:0 La pantalla muestra un número de series de siete dígitos seguido , en maquinas convencionales, de una nota de derechos reservados. Para seguir checando los derechos reservado basta con poner D y un Enter.
  • 14. Verificación de la fecha en la ROM BIOS La fecha de fabricación de su ROM BIOS inicia en la totalidad FFFF5H, registrada como mm/dd/aa. Par verla teclee: D FFFF:5 (Enter) Esta fecha nos puede determinar la edad de la computadora y su modelo.
  • 15. Verificación de la identidad del modelo. Ya después de la fecha de fabricación del ROM BIOS está la identificación del modelo en la localidad FFFFEH ó FFFF:E Aquí algunos de los modelos. Primera IBM PC FF PC-XT (1982), Portátil (1982) FE PC-AT (1984), PC-XT Modelo 286 PS/2 Modelos 50 y 60, etc. FC PC-XT (1986) FB PS/2 Modelo 30 FA PC Convertible F9 PS/2 Modelos 70 y 80 F8 Modelo Código
  • 16. Ejercicio 1 de lenguaje máquina: DATOS INMEDIATOS. A continuación se usara DEBUG para introducir un programa directamente en memoria y rastrear su ejecución. Este programa mostrara un sencillo código de lenguaje maquina, como aparece en el almacenamiento principal y los efectos de su ejecución. Programa Datos Inmediatos, datos definidos como parte de una instrucción. Se muestra el lenguaje máquina en formato hexadecimal y para legibilidad en código simbólico, junto con explicación . Para la primera instrucción, el código simbólico es MOV AX,0123, lo cual mueve (o copia) el valor 0123H al registro AX. MOV es la instrucción, el registro AX es el primer operando y el valor inmediato 0123H es el segundo operando. No operación (no hace nada) NOP 90 Restar AX de AX (limpiar AX) SBU AX,AX 2BC0 Restar el contenido de AX a CX SUB CX,AX 2BC8 Mover el contenido de BX a CX MOV CX,BX 8BCB Sumar el contenido de AX a BX ADD BX,AX 03D8 Mover el contenido de AX a BX MOV BX,AX BD8 Sumar el valor 0025H a AX ADD AX,0025 052500 Mover el valor 0123H a AX MOV AX,0123 B82301 Explicación Código simbólico Instrucción de máquina
  • 17. Las instrucciones de máquina pueden tener uno, dos o tres bytes de longitud. El primer byte es la operación real y cualesquiera otros bytes, si están presentes, son operandos: referencia a un valor de inmediato, un registro o una localidad de memoria. La ejecución del programa empieza con la primera instrucción de máquina y avanza por cada instrucción, una después de otra. Al llegar ha este punto no esperamos que tenga mucho sentido el código de máquina.
  • 18. Para iniciar. Teclee el comando DEBUG y presione Enter. Cuando DEBUG este cargado por completo, despliega su indicador (-). Introducir instrucciones de programa. Para introducir el programa directamente en memoria, solo teclee la parte del lenguaje máquina pero no el código simbólico o la explicación. Teclee el siguiente comando E (Enter) con los espacios en blanco que se indican. E CS:100 B8 23 01 05 25 00 CS:100 indica la dirección de memoria inicial donde se almacenaran los datos -100H (256) bytes siguiendo al inicio del segmento de código. El comando E hace que DEBUG cada par de dígitos hexadecimales en un byte de memoria, desde CS:100 hasta CS:105.
  • 19. El siguiente comando E almacena 6 bytes, empezando en CS:106 a 107, 108, 109, 10A y 10B: E CS:106 8B D8 03 D8 8B CB El ultimo comando E almacena 5 bytes, empezando en CS:10C a 10D, 10E, 10F y 110: E CS:10C 2B C8 2B C0 90 Si teclea algún comando de manera incorrecta, solo repítalo con los valores correctos.
  • 20. Rastreo de la instrucción de máquina. Formato hexadecimal Comandos Registros de banderas Registro IP Regresar
  • 21. Ejecución de instrucción de programa. Es algo sencillo ejecutar las instrucciones anteriores, una a la vez. Los comandos DEBUG que nos conciernen aquí son R (registro) y T (rastreo). Para ver los contenidos iniciales de los registros y las banderas. Teclee el comando R. DEBUG muestra el contenido de los registros en forma hexadecimal. El registro IP muestra IP=0100, indicando que la ejecución de la instrucción inicia 100H bytes después del inicio del segmento del código. En el registro de las banderas muestra la siguiente configuración: NV UP EI PL NZ NA PO NC Esta configuración significa: no desbordamiento, dirección hacia arriba/abajo, interrupción habilitada, signo positivo, no cero, no acarreo auxiliar, paridad impar y no acarreo. Ver figura.
  • 22.
  • 23. DEBUG muestra los resultados en los registros. El contenido del registro IP es 0103H, que indica la ubicación del desplazamiento en el segmento del código de la siguiente instrucción que será ejecutada a saber: xxxx:0103 052500 ADD AX,0025 Para ejecutar esta instrucción, introduzca otra T. la instrucción ADD suma 25H a la mitad baja del registro AX y 00H a la mitad alta, en realidad suma 0025H al AX. Ahora AX contiene 0148H y el IP contiene 016H para la siguiente instrucción que se ejecutara: xxxx:0106 8BD8 MOV BX,AX. Teclee T. la instrucción MOV mueve el contenido del registro AX a BX. Después de mover BX contiene 0148H AX aun contiene 0148H ya que MOV copia en el lugar de mover los datos de esa localidad a otra. Ahora teclee T hasta pasar por el resto de las instrucciones. La instrucción ADD suma el contenido de AX a BX, dando 0290H en BX. Después el programa mueve el contenido de BX a CX, resta a AX de CX y resta AX de el mismo. Después de la ultima operación la bandera de cero se cambia de NZ a ZR para indicar que el resultado de la ultima operación fue cero. A continuacion se muetra todos los pasos.
  • 24.  
  • 25. Mostrar el contenido de memoria Para mostrar la ultima instrucción NOP presione T, pero esta instrucción no realiza cosa alguna. En lugar de eso para ver el programa en lenguaje de máquina en el segmento del código requiere el siguiente despliegue: D CS:100 DEBUG muestra 16 bytes de datos en cada línea. A la derecha esta la representación ASCII de cada byte. La primera línea del despliegue inicia en el desplazamiento 100H del segmento del código y representa el contenido de CS:100 hasta CS:10F. La segunda línea representa el contenido CS:110 hasta CS:11F.
  • 26. Corregir una entrada. Si se introduce un valor erróneo en el segmento de datos o en el segmento de código, reintroducir el comando E para corregirlo. También se reanuda la ejecución en la primera instrucción indicando el registro IP con 0100. se teclea el comando R seguido por el registro designado, esto es, R IP [Enter]. DEBUG muestra el contenido de IP y espera por una entrada. Se teclea el valor 0100, Enter, después se teclea R. DEBUG muestra los registros, banderas y la primera instrucción que será ejecutada. Ya se puede usar T para volver a rastrear las instrucciones paso a paso.
  • 27. Introducir un programa simbólico en ensamblador. El ejercicio de programa fue en formato de lenguaje máquina, también puede utilizar DEBUG para ingresar instrucciones simbólicas en lenguaje ensamblador. Ahora examinaremos como introducir enunciados en lenguaje ensamblador. El comando A. A (ensamblar) le dice a DEBUG que acepte instrucciones simbólicas en ensamblador y las convierte en lenguaje maquina. Inicialice la dirección de inicio en el segmento de código con desplazamiento 100H para sus instrucciones como: A 100 (Enter) DEBUG muestra el valor del segmento de código y el desplazamiento como xxxx:0100
  • 28. A continuación se teclea cada una e las siguientes instrucciones seguido de un Enter. MOV AL,25 MOV BL,32 ADD AL,BL NOP DEBUG muestra lo siguiente: Puede ver que DEBUG ha terminado la localidad de inicio de cada instrucción. Pero antes de ejecutar el programa usemos el comando U (desensamblar) de DEBUG para examinar el lenguaje de máquina generado.
  • 29. El comando U Muestra el código de máquina para sus instrucciones en lenguaje ensamblador. Se puede usar este comando para indicarle a DEBUG las localidades de la primera y ultima instrucción que quiere ver, en este caso, 100H y 106H. Teclee U 100,106 (Enter) Y la pantalla muestra: Ahora rastree le ejecución del programa, el código de máquina es lo que realmente se ejecuta. Introducir R para desplegar los registros y la primera instrucción , después T sucesivamente para rastrear las instrucciones subsecuentes. Cuando se llega a NOP se puede continuar con la siguiente instrucción si no presionar Q para salir.
  • 30. La instrucción INT A continuación se muestra como accesar el DOS y el BIOS para enviar información acerca del sistema, por el cual se utiliza la instrucción INT (interrupción) la cual sale de un programa, ingresa una rutina del DOS o de BIOS, realiza la función solicitada y regresa a su programa. Usaremos el comando P (proceder) de DEBUG para ejecutar toda la rutina de interrupción. Obtener el numero de versión del DOS. A veces es necesario saber cual es la versión del DOS que la computadora esta corriendo. La instrucción que entrega el numero de versión es INT 21H del DOS, función 30H; esto es, cargue 30H en el registro AH y solicite INT 21H. Ingrese A 100 de DEBUG y las siguientes instrucciones en ensamblador: MOV AH,30 INT 21 NOP (Enter adicional)
  • 31. Para rastrear la ejecución de las instrucciones primero ingresar R para ver los registros y T para rastrear MOV. En lugar de rastrear la instrucción INT, ingrese P para ejecutar toda la rutina del DOS. El proceso termina con la instrucción NOP. Ahora se ve el AL el numero principal de la versión DOS como X en DOS X.20, y en el AH el numero secundario de la versión, como 14H (o 20) en DOS X.20
  • 32.
  • 33.
  • 34. Lenguaje ensamblador: Operador PTR Aquí otro programa que introduce algunas características nuevas, donde se mueven y se suman datos entre las localidades de memoria y registro. Instrucciones: 00 00 00 DB 120 00 00 DB 11E 05 00 DB 11C 14 23 DB 11A   NOP 119   NOP 118 BYTE PTR [122],30 MOV 113 WORD PTR [120],25 MOV 10D [11E],AX MOV 10A AX,25 ADD 107 AX,[11C] ADD 103 AX,[11A] MOV 100
  • 35. Una explicación de las instrucciones es: Se sigue el mismo procedimiento teclear A 100, después todas las instrucciones y un Enter de más. Se introduce R para mostrar el registro y la primera instrucción, después T sucesivamente. Salir de la ejecución cuando se llega a NOP en 118. teclear D 110 para mostrar los contenidos combinados de AX (233E) y de las localidades 11EH-11EF (3e23), 120H-121H (2500) y 122H (30) Define otros valores de bytes para uso en el programa. 11C, 11E y 120 Define los valores de bytes 14H y 23H. DB (definir bytes) le permite definir datos que sus instrucciones están referenciado. 11A Mueve el valor inmediato 30H a la localidad de memoria 122H. Queremos mover un byte y el operador BYTE PTR indica longitud. 113 Mueve el valor inmediato 25H a las localidades de memoria 120h-121H. El operador WORD PTR indica a DEBUG que debe mover el 25H a una palabra de memoria 10D Mueve el contenido de AX a las localidades de memoria 11EH-11EF 10A Suma el valor inmediato 25H al AX 107 Suma el contenido de todas las localidades de memoria 11CH-1DH al AX 103 Mueve el contenido de las localidades de memoria 11AH-11BH al AX. Los corchetes indican una dirección de memoria y no valores 100
  • 36. Conclusión. DEBUG puede ser uno de los programas mas antiguas que hay pero todavía realiza lo que se le indica. Como se dijo es útil para probar y depurar programas escritos en lenguaje máquina y en lenguaje ensamblador. Se espera que lo investigado sea de gran utilidad para investigaciones futuras.
  • 37. Bibliografía. Libro: Lenguaje ensamblador y programación para IBM PC compatibles. Autor: Abel Peter Editorial: Pearson Educación