Uso Del Debug En Microprocesadores
Enviado por popeye_00 • 18 de Agosto de 2011 • 8.043 Palabras (33 Páginas) • 994 Visitas
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]
...