Descargar la presentación
La descarga está en progreso. Por favor, espere
1
MODOS DE DIRECCIONAMIENTO
N. L :6. MATERIA: Lenguaje ensamblador. HORA: 7:00 – 8:00 A.M.
2
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 .stack .data .code mov mov ds,ax push ds ….CÓDIGO DEL PROGRAMA. mov ax, 4c00h int 21h end Existen diferentes modelos que determinan el tamño delos segmentos.
3
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)
4
EJEMPLOS. .data Contador db 0.
1.- Se desea declarar una variable contador de tipo byte inicializada a cero en el segmento de datos. .data Contador db 0.
5
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. promedio db 9
6
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.
7
Tamaños de los modelos, y el tamaño del segmento de código.
8
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.
9
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’.
10
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
11
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]
12
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.
13
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
14
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)]
15
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.
16
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.
17
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]
18
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.
19
.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]
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.