MODOS DE DIRECCIONAMIENTO - wiki

Download Report

Transcript MODOS DE DIRECCIONAMIENTO - wiki

MODOS DE DIRECCIONAMIENTO
N. L :6.
MATERIA: Lenguaje ensamblador.
HORA: 7:00 – 8:00 A.M.
ESQUELETO DE UN PROGRAMA EN
ENSAMBLADOR.
A continuación se presenta la estructura básica de un programa en ensamblador con extensión
.asm
.model small
Existen diferentes modelos que determinan el tamño delos segmentos.
.stack
.data
.code
mov ax,@data
mov ds,ax
push ds
….CÓDIGO DEL PROGRAMA.
mov ax, 4c00h
int 21h
end
DECLARACION DE DATOS EN EL
SEGMENTO DE DATOS.
 Existen un conjunto de directivas que nos permiten declarar





datos en el segmento de datos, las directivas son las
siguientes.
Db=
Define byte =8 bits =1 carácter.
Dw =
Define palabra =16 bits
=2 caracteres.
Dd= Define doble palabra =32 bits
=4 caracteres.
No existen tipos de datos en lenguaje ensamblador a
diferencia de los lenguajes de alto nivel, lo que se realiza es
para reservar espacios de memoria.
Sintaxis para declarar datos, cadenas, arreglos, matrices:
Nombre_Dato directiva valor(s)
EJEMPLOS.
1.- Se desea declarar una variable contador de tipo byte
inicializada a cero en el segmento de datos.
.data
Contador db 0.
2.- Define una variable llamada carácter inicializada con el
carácter z.
.data
carácter db ‘z’
3.- Declara una variable “promedio”, inicializada con tu
promedio general.
.data
promedio db 9
EVIDENCIA No. 4
 Define los siguientes esqueletos de programas en
ensamblador:
 A.- Guardar como p1.asm un documento creado en bloc de
notas.
 Define las siguientes variables inicializadas a cero promedio,
sumatoria, contador_repe, contador_normal.
 B.- Guardar como p2.asm, declarando las siguientes
variables.
 Un arreglo inicializado von 4 valores de tipo carácter los que sean.
 La variable “ínidice” inicializada a cero.
 Un mensaje con tu nombe.
 Tamaños de los modelos, y el tamaño del segmento de
código.
MODOS DE DIRECCIONAMIENTO.
 Son las formas en que se hace referencia a la memoria.
 Varian de autor a autor, se identificn entre 7 u 8 modos de







direccionamiento.
1.- DIRECCIONAMIENTO INMEDIATO.
2.- DIRECCIONAMIENTO POR REGISTROS.
3.- DIRECCIONAMIENTO DIRECTO.
4.- DIRECCIONAMIENTO INDEXADO DIRECTO.
5.- DIRECCIONAMIENTO RELATIVO A LA BASE.
6.- DIRECCIONAMIENTO INDIRECTO.
7.- DIRECCIONAMIENTO BASE INDEXADO.
DIRECCIONAMIENTO INMEDIATO
 Se le identifica cuando el operando es una constante.
 Ejemplos:
 Mov ah,34h
 Mov bx,0f989h
 Mov ch, ‘c’
Invalidos:
- mov cl, 9999h
- mov dh, ‘ab’.
DIRECCIONAMIENTO POR REGISTROS
 Se identifica cuando el operando fuente como el operando
destino son registros válidos del microprocesador.
 Ejemplos:




mov, ax,bx
Mov ah,al
Mov cx,cl
Mov si,di
 Inválidos.
 Mov ah,bx
 Mov dl,bp
DIECCIONAMIENTO DIRECTO
 Se identifica cuando el operando fuente o el operando destino es




una variable declarado en el segmento de datos.
Ejemplos:
Mov dx,palabra
Mov datos,ax
Mov carácter,ch
 Inválidos. No es permitido direccionar de variable a variable o de
memoria a memoria.
 Mov palabra,datos
 Mov carácter,datos
 Mov carácter,arreglo[0]
P3.asm
 Diseñe un programa en ensamblador que utilice los primeros
3 modos de direccionamiento, haga referencia a por lo menos
2 instrucciones para cada modo de direccionamiento. NOTA:
No repita los ejemplos vistos en clases.
DIRECCIONAMIENTO INDEXADO
DIRECTO.
 Se identifica cuando el operando fuente u operando destino




es una variable declarada en el segmento de datos indexada
por alguno de los registros índice.
Ejemplos:
Mov arreglos[si],’a’
Mov cl,vector[di]
Mov vector[si],0
5.- RELATIVO A LA BASE
 Bx,bp
 Ejemplos:
 . Data
 Mivector db 9,8,7,6,5,4,3,2,1
.code
Inicialización.
Mov bp,0
Mov al, mivector [bp+1]
Mov ch,mivetor[bp+4(desplazamiento)]
6.- INDIRECTO
 Instrucciones de apoyo:
 Lea: Obtiene la dirección efectiva.
 Sintaxis:
 Lea op_destino, op_fuente
Se identifica a este modo de direccionamiento cuando se accede
directamente a la dirección efectiva del arreglo o matriz para hacer
referencia a uno de lo elementos.
NOTA: No debe aparecer el nombre de la variable definida por el
programador .
Lea si, mivector : si apunta al inicio de mivector.
P5.asm
 Diseña el programa declarando en el segmento de datos los
arreglos que contienen 16 de los nombres del grupo
ensamblador de las 7 am, por medio de código y haciendo
uso de direccionamiento relativo a la base agrega el carácter
‘$’, en la última posición de cada arreglo.
DIRECCIONAMIENTO INDIRECTO








El direccionamiento indirecto, puede llegar a clasificarse en dos submodos.
A) Indirecto por registros. Como se menciono anteriormente el direccionamiento indirecto hace
referencia a una localidad de memoria, sin necesidad de referenciar al nombre de la variable o
arreglo. Por lo tanto el modo de direccionamiento indirecto por registro ayuda a localizar un dato
en memoria haciendo uso de registros de 16, 32 o 64 bits.
Lea si, mivector
Mov [si],’$’
Lea bp,arreglo
Mov [bp],44bbh
INVALIDO.
Mov [ah],0
B) Indirecto inmediato. En este modo de direccionamiento se hace referencia de manera directa a
una localidad de memoria, sin hacer uso de ningún registro ni de ninguna variable.
 Mov [40B9h], ah
 Mov bx,[1000h]

7.- BASE INDEXADO
En este modo de direccionamiento ayuda a hacer referencia a
un valor en la memoria haciendo uso de una variable mas un
registro base mas un registro indice. Recordando los
registros base BX, BP, SI, DI.
Ejemplos:
.data
Matriz db 1,2,3,4
Db 5,6,,7,8
Db 9,10,11,12
db 13,14,15,16.
.code
Inicialización
Mov si,1
Mov bx,2
Mov ah, matriz[si][bx]
Add dl,matriz[3][0]
Mov ah,matriz[1][2]
Mov ah,matriz[1+2]
Mov dx,0
Mov di,3
Mov bp,4
Mov dx, matriz [di],[bp]