Académique Documents
Professionnel Documents
Culture Documents
DIRECCIONAMIENTO
No. 26
8:00 a.m.
Lenguaje Ensamblador
ESQUELETO DE UN PROGRAMA EN
ENSAMBLADOR
Tipo de Modelo de
un programa en
Model small Ensamblador.
Determina el
tamaño de los
stack Segmento de
Pila
segmentos
Aquí se
data Segmento de
declaran:
Variables
Code Datos Arreglos
Matrices
mov ax, @data Cadenas
mov ds, ax Inicialización
push ds
…código del programa
mov ax,4c00h
int 21h
end Finalización
Declaración de datos en el
segmento de Datos
Directivas:
db = Define byte = 8 bits = 1 carácter
dw = Define palabra = 16 bits = 2 caracteres
dd = Define doble palabra = 32 bits = 4 caracteres
Ejemplos:
1. Se desea declarar una variable contador de tipo byte inicializada
a cero en el segmento de datos.
Ejemplo 1
. data
contador db 0
Ejemplo 2
2. Define una variable “carácter”
inicializada con el carácter ‘z’.
. data
caracter db ‘z’
Ejemplo:
a) MOV AH, 34H
b) MOV BX, OF989H
c) MOV CH, ‘C’
Inválidos:
d) MOV CL, 9999H
e) MOV DH, ‘AB’
f) MOV ‘A’, BL
Direccionamiento por Registros
Se le identifica cuando tanto el operando fuente
como el operando destino son registros válidos
del microprocesador.
Ejemplo:
a) MOV AX, BX
b) MOV AH, AL
c) MOV CX, CL
Inválidos:
d) MOV AH, BX
e) MOV DL, BP
f) MOV CL, CX
Direccionamiento Directo
Se identifica cuando el operando fuente o el operando
destino es una variable declarada en el segmento de datos.
Ejemplo:
a) MOV DX, palabra
b) MOV datos, AX
c) MOV caracter, CH
Ejemplo:
a) MOV arreglo[SI], ‘A’
b) MOV CL, vector[DI]
c) MOV vector[SI], 0
Inválidos:
d) MOV vector1[SI], vector2[DI]
Direccionamiento Relativa a la Base
Se utilizan los registros BX, BP.
0 9
Ejemplo: 1 8
Considere el siguiente programa:
2 7
.data
MiVector db 9,8,7,6,5,4,3,2,1 3 6
.code
4 5
Inicialización
5 4
mov bp, 0
mov ah, MiVector[bp+1] ;[0+1]=1 6 3
mov cl, MiVector[bp+5] ;[0+5]=5
7 2
Finalización
8 1
Direccionamiento Indirecto
Este modo de direccionamiento se
identifica porque se hace referencia
directa a una dirección efectiva.
Instrucción de apoyo:
6
Apunta al inicio de MiVector. 5
4
mov ah, [SI] ;apunta al 9 3
add SI, 3 2
mov bh,[SI] ;apunta al 6 1
Direccionamiento Base Indexado
Este modo de direccionamiento se
identifica porque para direccionar un
elemento en la memoria se hace uso
de los registros base (bx,bp) más
registros índices (si,di), más una
variable definida por el programador.
0 1
Ejemplo r1
1
2
2
3
3 4
.data
matriz db 1,2,3,4 ;r1 4 5
db 6,5,7,8 ;r2 5 6
db 9,10,11,12 ;r3 r2 7
6
db 13,14,15,16 ;r4 8
7
.code 9
8
1
}Inicialización 9 0
r3
10 1
mov BX, 1 11 1
mov DI, 2 12 1
mov AH, matriz [BX]][DI] ;matriz [1][2]
13 2
mov DL, 2 ;matriz [1+2] r4 1
add DL, matriz [BX][DI] ;matriz [3] 14
3
15
1
4