ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Uso Del Debug En Microprocesadores

popeye_0018 de Agosto de 2011

8.043 Palabras (33 Páginas)1.069 Visitas

Página 1 de 33

LABORATORIO DE MICROPROCESADORES

Temas:

- Conjunto de instrucciones.

- Uso del Debug

- Programación básica en lenguaje ensamblador.

- Programación en lenguaje ensamblador del 8086

1.- CONJUNTO DE INSTRUCCIONES.

El juego completo de instrucciones reconocidas por los procesadores Intel 8086 a 80286,mas adelante se darán a conocer mas instrucciones del 8086 en forma mas detallada, junto con los coprocesadores 8087 y 80287, se enlistan en el apéndice E. Como puede verse en dicho apéndice, la mayoría de las instrucciones requieren algunos operandos o expresiones para trabajar, y lo cual es válido también para las directivas. Los operandos representan valores, registros o localidades de memoria a ser accedidas de alguna manera. Las expresiones combinan operandos y operadores aritméticos y lógicos para calcular en valor o la dirección a acceder.

Los operandos permitidos se enlistan a continuación:

Constantes.- Pueden ser números, cadenas o expresiones que representan un valor fijo. Por ejemplo, para cargar un registro con valor constante usaríamos la instrucción MOV indicando el registro y el valor que cargaríamos dicho registro.

mov ax,9

mov al,´c´

mov bx,65535/3

mov cx,count

para el último ejemplo count sólo será válido si este fue declarado con la directiva EQU.

Directos.- Aquí se debe especificar la dirección de memoria a acceder en la forma segmento:offset.

mov ax,ss:0031h

mov al,data:0

mov bx,DGROUP:block

Relocalizables.- Por medio de un símbolo asociado a una dirección de memoria y que puede ser usado también para llamados.

mov ax, value

call main

mov al,OFFSET dgroup:tabla

mov bx, count

para el último ejemplo count sólo será válido si fue declarado con la directiva DW.

Contador de localización.- Usado para indicar la actual localización en el actual segmento durante el ensamblado. Representado con el símbolo $ y también conocido como centinela.

help DB ´OPCIONES´,13,10

F1 DB ´ F1 salva pantalla´,13,10

.

.

.

F10 DB ´ F10 exit´,13,10,´$

DISTANCIA = $-help

Registros.- Cuando se hace referencia a cualquiera de los registros de propósito general, apuntadores, índices, o de segmento.

Basados.- Un operador basado representa una dirección de memoria relativa a uno de los registros de base (BP o BX). Su sintaxis es:

desplazamiento[BP]

desplazamiento[BX]

[desplazamiento][BP]

[BP+desplazamiento]

[BP].desplazamiento

[BP]+desplazamiento

en cada caso la dirección efectiva es la suma del desplazamiento y el contenido del registro.

mov ax,[BP]

mov al,[bx]

mov bx,12[bx]

mov bx,fred[bp]

Indexado.- Un operador indexado representa una dirección de memoria relativa a uno de los registros índice (SI o DI). Su sintaxis es:

desplazamiento[DI]

desplazamiento[SI]

[desplazamiento][DI]

[DI+desplazamiento]

[DI].desplazamiento

[DI]+desplazamiento

en cada caso la dirección efectiva es la suma del desplazamiento y el contenido del registro.

mov ax,[si]

mov al,[di]

mov bx,12[di]

mov bx,fred[si]

Base-indexados.- Un operador base-indexado representa una dirección de memoria relativa a la combinación de los registros de base e índice. Su sintaxis es:

desplazamiento[BP][SI]

desplazamiento[BX][DI]

desplazamiento[BX][SI]

desplazamiento[BP][DI]

[desplazamiento][BP][DI]

[BP+DI+desplazamiento]

[BP+DI].desplazamiento

[DI]+desplazamiento+[BP]

en cada caso la dirección efectiva es la suma del desplazamiento y el contenido del registro.

mov ax,[BP][si]

mov al,[bx+di]

mov bx,12[bp+di]

mov bx,fred[bx][si]

Estructuras.- Su sintaxis es variable.campo. variable es el nombre con que se declaró la estructura, y campo es el nombre del campo dentro de la estructura.

date STRUC

mes DW ?

dia DW ?

aa DW ?

date ENDS

actual date ‹´ja´,´01´,´84´›

mov ax,actual.dia

mov actual.aa, ´85´

Operadores y expresiones.- Se cuenta con los siguientes operadores:

-aritméticos

expresión1 * expresión2

expresión1 / expresión2

expresión1 MOD expresión2

expresión1 + expresión2

expresión1 - expresión2

+ expresión

- expresión

-de corrimiento

expresión1 SHR contador

expresión1 SHL contador

-relacionales

expresión1 EQ expresión2

expresión1 NE expresión2

expresión1 LT expresión2

expresión1 LE expresión2

expresión1 GT expresión2

expresión1 GE expresión2

- de bit

NOT expresión

expresión1 AND expresión2

expresión1 OR expresión2

expresión1 XOR expresión2

-de índice

[expresión1] [expresión2]

ejemplos:

mov al, string[3]

mov string[last],al

mov cx,dgroup:[1] ; igual a mov cx,dgroup:1

-de apuntador

tipo PTR expresión

tipo puede ser BYTE ó 1, WORD ó 2, DWORD ó 4, QWORD ó 8, TBYTE ó 10, NEAR ó 0FFFFh, FAR ó 0FFFEh. Ejemplos:

call FAR PTR subrout3

mov BYTE ptr [array], 1

add al, BYTE ptr [full_word]

-de nombre de campo

estructura.campo

ejemplos:

inc month.day

mov time.min,0

mov [bx].dest

-de propósito especial.

OFFSET expresión.- Regresa el desplazamiento del operando

mov bx, OFFSET dgroup:array

mov bx, offset subrout3

SHORT etiqueta.- Para un salto de menos de 128 bytes

jmp SHORT loop

LENGTH variable.- Regresa el número de elementos de variable según su tipo

mov cx,length array

SIZE variable.- Regresa el tamaño en bytes alojados para variable

mov cx,size array

SEG expresión.- Regresa el valor del segmento para expresión

mov ax, SEG saludo

2.-DEBUG

Para comenzar a dar los primeros pasos en ensamblador, es aconsejable saber las interioridades del ordenador, en especial cómo funciona la CPU. Por ello se hace necesario aprender a utilizar una herramienta que ofrece el MS-DOS:

DEBUG es un programa que permite introducir o escribir pequeños programas en ensamblador o lenguaje máquina, pudiendo ejecutar instrucciones una a una (step by step o paso a paso). De esta manera se pueden localizar y corregir errores en los programas.

Un "bug" (chinche, bicho, microbio, etc.) se denomina en informática a un error de programa (se dice que los errores de un programa "chinchan"). El proceso de buscar, localizar y capturar "bugs" o errores, se denomina debugging (depuración), y de ahí el nombre de DEBUG.

El origen del término debugging se remonta a los primeros días de la informática, cuando, en la universidad de Harvard, un ordenador MARK I se paró.Tras una intensa búsqueda - y bastantes quebraderos de cabeza -, los técnicos encontraron la fuente de los problemas: una polilla atrapada en los contactos de un relé. Tras quitarla, anotaron en el libro de registro que habían "debugged" (quitado la polilla) del ordenador.

Pero nuestra misión no ser quitar chinches, ni polillas ni corregir errores en los programas, si no introducir instrucciones en lenguaje máquina e ir viendo cómo se van ejecutando, cómo se almacenan los resultados, dónde deben estar los datos y otros detalles y procesos que determinan el funcionamiento del ordenador. Todo esto nos ayudará a entender cómo funciona la máquina y, sobre todo, para entender cómo funcionan las órdenes y las operaciones antes de incluirlas definitivamente en un programa.

ENTRAR EN DEBUG

Para ejecutar DEBUG se pueden utilizar dos métodos desde el prompt del DOS:

1- DEBUG

Ejecuta DEBUG en una nueva sesión

2- DEBUG nombre_fichero_EXE_ó_COM

Ejecuta DEBUG cargando en memoria el fichero .EXE ó .COM que indiquemos como parámetro.

Al entrar en DEBUG, aparecerá un guión en la parte izquierda, y, a su derecha, un cursor. Este es

...

Descargar como (para miembros actualizados) txt (52 Kb)
Leer 32 páginas más »
Disponible sólo en Clubensayos.com