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]