Está en la página 1de 113

LENGUAJE ENSAMBLADOR

UNIDAD 1
ENSAMBLADOR
Es un lenguaje de programación de
bajo nivel para los computadores,
microprocesadores, microcontroladores
y otros circuitos integrados
programables. Implementa una
representación simbólica de los códigos
de máquina binarios y otras constantes
necesarias para programar una
arquitectura dada de CPU y constituye la
representación más directa del código
máquina específico para cada
arquitectura legible por un programador
Cobol
Alto nivel Pascal
Basic
Java

C
Mediano BCPL
nivel

Bajo nivel Ensamblador

Maquina 001110011010100
 Los lenguajes de bajo nivel son mas
fáciles de utilizar que los lenguajes
máquina, pero, al igual que ellos,
dependen de la máquina en
particular. El lenguaje de bajo nivel
por excelencia es el ensamblador.
 Las instrucciones en lenguaje
ensamblador son instrucciones
conocidas como nemotécnicos.
• Por ejemplo, nemotécnicos típicos de operaciones
aritméticas son: en inglés, ADD, SUB, DIV, etc.; en
español, SUM, RES, DIV,etc. Una instrucción típica de
suma sería:
ADD M, N, P

• Esta instrucción podría significar “sumar el número


contenido en la posición de memoria M al número
almacenado en la posición de memoria N y situar el
resultado en la posición de memoria P”.

Evidentemente es mucho más sencillo recordar la


instrucción anterior con un nemotécnico que su
equivalente en código máquina”.
0110 1001 1010 1011
 Un programa escrito en lenguaje
ensamblador no puede ser ejecutado
directamente por la computadora en
esto se diferencia esencialmente del
lenguaje máquina, sino que requiere
una fase de traducción al lenguaje
máquina.
 El programa original escrito en
lenguaje ensamblador se denomina
programa fuente y el programa
traducido en lenguaje máquina se
conoce como programa objeto, ya
directamente entendible por la
computadora.
 El traductor de programas fuente a
objeto es un programa llamado
ensamblador, existente en casi todos
los computadores.
Ventajas del lenguaje ensamblador.
• Los lenguajes ensambladores presentan
la ventaja frente a los lenguajes
máquina de su mayor facilidad de
codificación y, en general, su velocidad
de cálculo.

• La segunda razón es el control total de


la PC que se tiene con el uso del mismo.

• El ensamblador permite una


optimización ideal en los programas
tanto en su tamaño como en su
ejecución.
Desventajas del lenguaje ensamblador.
• Dependencia total de la máquina lo que
impide la transportabilidad de los
programas. El lenguaje ensamblador del
PC es distinto del lenguaje ensamblador
del Apple Macintosh.

• La formación de los programadores es


más compleja que la correspondiente a
los programadores de alto nivel, ya que
no sólo las técnicas de programación,
sino también el conocimiento del interior
de la máquina.
ESCALABILIDAD
 Es la propiedad deseable de un
sistema, una red o un proceso,
que indica su habilidad para
extender el margen de
operaciones sin perder calidad, o
bien manejar el crecimiento
continuo de trabajo de manera
fluida.
MICROPROCESADOR
 El microprocesador o simplemente
procesador, es el circuito integrado
central y más complejo de una
computadora

 El procesador es un circuito
integrado constituido por millones de
componentes electrónicos integrados.
Su arquitectura interna consta de las
siguientes partes

 Unidad de control
 Unidad Aritmética lógica
 Registros Internos
 Buses internos
 Interrupciones
Arquitectura Interna del
microprocesador
Secuencia de acciones
1. Se inicia en una posición de memoria
definida
2. Se lee el dato de esa posición y se manda
al control
3. La unidad de control decodifica la
instrucción y la ejecuta en señales
adecuadas
4. Se incrementa el contador del programa
(registro que indica a que posición se
debe dirigir)
5. Se repite proceso desde el punto 2, hasta
recibir unas señal del exterior
Arquitectura del
microprocesador
ALU
 Circutito digital que realiza
operaciones artimeticas y logicas
Unidad de control
Cerebro del microprocesador, genera
señales de control interno y externo.
Recibe códigos los cuales decodifica y
ejecuta.

Los códigos pueden ser:


1. Operaciones aritmético lógicas
2. Cargar o leer datos
3. Saltos o interrupciones
Regsitros internos
 Posiciones de memoria con utilidad general o especifica.
Tipos:
1. Registros de datos: operaciones aritméticas lógicas y
manipulación de datos
2. Registros de Direcciones : para acceder a posiciones de
memoria
- Contador de programa: leer o escribir datos de
programa
- Puntero de pila: Recuperar y guardar datos de uso
interno
- índices: para acceder a posiciones de memoria en
forma relativa
3. Registro de estado: para información especifica
Interrupciones
 Utilizadas para interrumpir la
secuencia del programa.
Buses Internos
Caminos de comunicación que conectan
dos o mas dispositivos o acceder a
diferentes partes del circuito

1. Bus de dirección: para seleccionar


posición de memoria para leer o escribir
datos
2. Bus de datos: transmitir datos
El microprocesador se dividen por el
numero de bits que conforman el dato
4, 8 , 16, 32, 46 bits
3. Bus de control: para sincronizar
actividades y transacciones con los
periféricos del sistema
CLASIFICACION DEL
MICROPROCESADOR
Una forma es en función de las instrucciones que
son capaces de ejecutar.
Microprocesadores con tecnología CISC y RISC

CISC (Complex Instructions Set Computer):


Interpreta y ejecuta un gran numero de
instrucciones, lo cual los hace lentos

RISC ( Reduced Instructios Set Computer):


Interpreta y ejecuta solo instrucciones reducidas,
son mas rápidos que los CISC
Von Neumann
 Es una de las arquitecturas mas primitivas, cuando se
invento los programas eran muy pequeños y los costos
de memoria eran muy altos. En esta estructura, tanto
datos como programa son guardados en la misma
memoria y accesados en el mismo bus.
 Cada instrucción es leída de memoria, decodificada y
ejecutada.
 Durante el estado de decodificación algunos operadores
son leídos de la misma memoria.
 Las computadoras Von Neumann son llamadas también
computadoras de almacenamiento de programas, porque
los programas son guardados en ROM, la cual no se
cambia durante el tiempo de ejecución.
Arquitectura Harvard
Esta es una modificación de la arquitectura Von
Neumann, en esta arquitectura se separa la salida
(direcciones y bus de datos) de datos para accesar
al código (programa) y datos (operadores).

Esto hace posible leer datos e instrucciones al


mismo tiempo (en diferentes buses)

Desde que las instrucciones tienen un bus de


datos separados, la siguiente instrucción puede
ser leída mientras se decodifica y ejecutan las
instrucciones actuales
Derivados de la arquitectura
Harvard
Existen algunos derivados de la
arquitectura Harvard, las cuales
tienen múltiples buses de datos para
accesar datos, tales arquitecturas son
mas aplicadas para aplicaciones
intensivas de datos (como procesos
de señales digitales) las cuales
requieren múltiples operadores de
datos para la ejecución de cada
instrucción.
Desde que estos operadores son
Complex Instruction Set Computer
(CISC)
En los inicios de la computación, se codificaba en código
ensamblador o maquina.

Para hacer rápida y fácil la programación las


computadoras soportaban un gran numero de
instrucciones. Estas instrucciones podían hacer
operaciones complejas, una sola instrucción podía leer
uno o mas operadores y hacer una o mas operaciones
con esos operadores.

Esto hacia la programación fácil y con menos código.


Otro factor favorable fue el costo de memoria, las
memorias eran costosas, por lo que los diseñadores
Reduced Instruction Set
(RISC)
Es un tipo de microprocesador con las siguientes
características fundamentales:
 Instrucciones de tamaño fijo y presentadas en un
reducido número de formatos.
 Sólo las instrucciones de carga y almacenamiento
acceden a la memoria de datos.

Además estos procesadores suelen disponer de


muchos registros de propósito general.
El objetivo de diseñar máquinas con esta
arquitectura es posibilitar la segmentación y el
paralelismo en la ejecución de instrucciones y
reducir los accesos a memoria.
Esta surge con los lenguejes de alto nivel
Procesador digital de
señal
 Es un sistema basado en un procesador que posee
un juego de instrucciones, un hardware y un
software optimizados para aplicaciones que
requieran operaciones numéricas a muy alta
velocidad. Debido a esto es especialmente útil
para el procesado y representación de señales
analógicas en tiempo real: en un sistema que
trabaje de esta forma (tiempo real) se reciben
muestras normalmente provenientes de un
conversor analógico/digital (ADC).
Caracteristicas:
 Necesita una memoria donde almacenar los datos
con los que trabajará y el programa que ejecuta
 Puede trabajar con varios datos en paralelo y un
diseño e instrucciones específicas para el
procesado digital.
VLIW PROCESADOR
 Very Long Instruction Word. Esta arquitectura de
CPU implementa una forma de paralelismo a nivel
de instrucción. Es similar a las arquitecturas
superescalares, ambas usan varias unidades
funcionales (por ejemplo varias ALUs, varios
multiplicadores, etc) para lograr ese paralelismo.
 Los procesadores con arquitecturas VLIW se
caracterizan, como su nombre indica, por tener
juegos de instrucciones muy simples en cuanto a
número de instrucciones diferentes, pero muy
grandes en cuanto al tamaño de cada instrucción.
Ventajas
 Simplificación de la arquitectura hardware al no
tener que planificar el código.
 Menor potencia y consumo.

Inconvenientes
 Requiere compiladores mucho más complejos.
 Cualquier mejora en la arquitectura hardware
implica un cambio en el juego de instrucciones
(compatibilidad hacia atrás nula).
SMID
 Single Instruction, Multiple Data es una técnica empleada para
conseguir paralelismo a nivel de datos.

 SIMD consisten en instrucciones que aplican una misma operación


sobre un conjunto más o menos grande de datos. Es una
organización que influye muchas unidades de procesamiento bajo
la supervisión de una unidad de control común.

 Todos los procesadores reciben la misma instrucción de la unidad


de control, pero operan sobre diferentes conjuntos de datos. Es
decir la misma instrucción es ejecutada de manera síncrona por
todas las unidades de procesamiento.
MULTICORE-PROCESADOR
 A multi-core processor Es un componente de
computadora con dos o mas
procesadoresindependientes (called "cores"), los
cuales son unidades que leen y ejecutan
isntrucciones de programas. Los datos en la
instruccion le dicen al procesador que hacer. Las
instrucciones hacen cosas muy basicas como leer
datos de meoria o mandar datos a un display,
pero son procesados rapidamente.
PROCESADOR STREAM
 El procesador STREAM, acrónimo de Sistema de
Tiempo Real para la Extracción y Análisis de
Movimiento, es una arquitectura de procesamiento
de imágenes implementada
 en una tarjeta PCI
• Desde el punto de vista funcional es,
básicamente, el encargado de realizar toda
operación aritmético-lógica, de control y de
comunicación con el resto de los componentes
integrados que conforman un PC, siguiendo el
modelo base de Von Neumann.

• También es el principal encargado de ejecutar


los programas, sean de usuario o de sistema;
sólo ejecuta instrucciones programadas a muy
bajo nivel, realizando operaciones elementales,
básicamente, las aritméticas y lógicas, tales
como sumar, restar, multiplicar, dividir, las
lógicas binaris y accesos a memoria.
 Esta unidad central de procesamiento
está constituida, esencialmente:
 por registros,
 una unidad de control
 y una unidad aritmético lógica (ALU)
.
TIPOS DE ENSAMBLADORES

Aunque todos los ensambladores realizan básicamente las mismas tareas,


podemos clasificarlos de acuerdo a características.
Así podemos clasificarlos en:

-Ensambladores Cruzados (Cross-Assembler).


- Ensambladores Residentes.
- Macroensambladores.
- Micro ensambladores.
- Ensambladores de una fase.
- Ensambladores de dos fases.
Ensambladores Cruzados (Cross-Assembler).

Se denominan así los ensambladores que se utilizan


en una computadora que posee un procesador
diferente al que tendrán las computadoras donde va
a ejecutarse el programa objeto producido.
El empleo de este tipo de traductores permite
aprovechar el soporte de medios físicos (discos,
impresoras, pantallas, etc.), y de programación que
ofrecen las máquinas potentes para desarrollar
programas que luego los van a ejecutar sistemas
muy especializados en determinados tipos de tareas.
Ensambladores Residentes.

Son aquellos que permanecen en la memoria principal de la


computadora y cargan, para su ejecución, al programa objeto
producido. Este tipo de ensamblador tiene la ventaja de que se
puede comprobar inmediatamente el programa sin necesidad de
transportarlo de un lugar a otro, como se hacía en cross-
assembler, y sin necesidad de programas simuladores.
Sin embargo, puede presentar problemas de espacio de
memoria, ya que el traductor ocupa espacio que no puede ser
utilizado por el programador. Asimismo, también ocupará
memoria el programa fuente y el programa objeto. Esto obliga a
tener un espacio de memoria relativamente amplio. Es el
indicado para desarrollos de pequeños sistemas de control y
sencillos automatismo empleando microprocesadores
MACROENSAMBLADORES.

Son ensambladores que permiten el uso de


macroinstrucciones (macros). Debido a su potencia,
normalmente son programas robustos que no
permanecen en memoria una vez generado el programa
objeto. Puede variar la complejidad de los mismos,
dependiendo de las posibilidades de definición y
manipulación de las macroinstrucciones, pero
normalmente son programas bastantes complejos, por
lo que suelen ser ensambladores residentes.
MICRO ENSAMBLADORES.

Generalmente, los procesadores utilizados en las


computadoras tienen un repertorio fijo de instrucciones,
es decir, que el intérprete de las mismas interpretaba de
igual forma un determinado código de operación.
El programa que indica al intérprete de instrucciones de
la UCP cómo debe actuar se denomina microprograma. El
programa que ayuda a realizar este microprograma se
llama micro ensamblador. Existen procesadores que
permiten la modificación de sus microprogramas, para lo
cual se utilizan micro ensambladores.
ENSAMBLADORES DE UNA FASE.

Estos ensambladores leen una línea del programa fuente y la


traducen directamente para producir una instrucción en lenguaje
máquina o la ejecuta si se trata de una pseudoinstrucción. También
va construyendo la tabla de símbolos a medida que van
apareciendo las definiciones de variables, etiquetas, etc.
Debido a su forma de traducción, estos ensambladores obligan a
definir los símbolos antes de ser empleados para que, cuando
aparezca una referencia a un determinado símbolo en una
instrucción, se conozca la dirección de dicho símbolo y se pueda
traducir de forma correcta. Estos ensambladores son sencillos,
baratos y ocupan poco espacio, pero tiene el inconveniente
indicado
Los microprocesadores poseen dos
tipos de memoria interna:

 Memoria RAM (memoria de acceso


aleatoria)
 Memoria ROM (memoria de solo
lectura)
 Los bytes en memoria se numeran de
forma consecutiva, iniciando con 00,
de modo que cada localidad tiene un
un numero de direccion unico.

64 k sistema base ROM


Inicio Direccion
Dec Hex 1924 k area de expansion
960 k F0000 De memoria (ROM)

128 k area de despliegue de


video (RAM)

640 k memoria (RAM)


CLASIFICACION DE MEMORIAS.

Las memorias se clasifican, por la tecnología


empleada y según la forma en la que se puede
modificar su contenido.
Las cuales son:
Memoria RAM (memoria de acceso aleatorio)
Memoria ROM (memoria de solo lectura)
CLASIFICACION DE MEMORIA RAM

EDO RAM. (Memoria de acceso aleatorio


con salida de datos extendida).
DRAM. (Memoria dinámica de acceso
aleatorio).

RAM SDRAM. (Memoria dinámica de


paginación de acceso aleatorio).
RDRAM. (Memoria dinámica de acceso
aleatorio para tecnologías rambus).
SRAM. (Memoria estática de acceso
aleatorio.
CLASIFICACION DE MEMORIA ROM

PROM. (Memoria programable de


solo lectura).
EPROM. (Memoria de solo lectura
ROM programable y borrable).
EEPROM. (Memoria de solo
lectura programable y borrable
eléctricamente).
Memoria flash.
SEGMENTOS Y
DIRECCIONAMIENTO
El procesador se divide en dos
unidades lógicas :

 Unidad de ejecución (EU)


 Unidad de interfaz del bus (BIU)
 El papel de la EU es ejecutar
instrucciones, contiene el ALU, CU y
varios registros
El BIU envía instrucciones y datos a la EU.

La función mas importante del BIU es manejar la


unidad de control del bus, los registros de
segmentos, y la cola de instrucciones.

La BIU controla los buses que transfieren los


datos a la EU, a la memoria y a los dispositivos de
E/S externos, mientras que los registros de
segmentos controlan el direccionamiento de
memoria
El BIU permite acceso a las
instrucciones, puede acceder a estas
desde la memoria y colocarlas en la
cola de instrucciones. Tamaño de la
cola de 4 a 32 bytes
 La EU y la BIU trabajan en paralelo, La EU notifica
al BIU cuando necesita acceso a los datos en
memoria o a dispositivos de E/S

 La EU solicita instrucciones de maquina de la cola


de instrucciones de la BIU
 Mientras la EU esta ocupada ejecutando una
instriccion el BIU busca otra en la memoria, esto
aumenta la velocidad de procesamiento.
 Un segmento es un area especial en
un programa que incia en un limite de
una localidad regularmente divisible
entre 16 o 10 hex

 Un segmento, puede estar ubucado


casi en cualquier lugar y puede ser
hasta de 64 K
 Se puede tener cualquier numero de
segmentos, para direccionar un
segmento en particular basta cambiar
la direccion en el registro del
segmento apropiado
Los tres segmentos principales son:

 Segmentos de código
 Segmentos de datos
 Segmentos de pila
Segmentos de codigo (CS)
 Contiene instrucciones de maquina
que son ejecutadas.
 Comúnmente la primera instrucción
ejecutable esta en el inicio del
segmento, el SO enlaza a esa
localidad para iniciar la ejecución del
programa
Segmento de datos (DS)
 Contiene datos, constantes y areas de
trabajo definidos por el proograma
 El registro del DS direcciona al
segmento de datos
Segmento de pila (SS)
 La pila contiene los datos y
direcciones que se necesitan guardar
temporalmente o para el uso de sus
llamadas subrutinas.

 El registro del segmento de la pila


(SS) direcciona el segmento de la pila
 Los registros de segmentos contienen
la direccion inicial de cada segmento
REGISTROS
 Los registros del procesador se
emplean para controlar las
instrucciones en ejecucion, manejar
direccionamiento, y proporcionar
capacidad aritmetica.

 Son direccionables por medio de un


nombre, los bits se numeran de
derecha a izquierda
REGISTRO DE SEGMENTO
 Un registro de segmento tiene 16
bits de longitud y facilita un area de
memoria para el direccionamiento
conocida como el segmento actual.
REGISTRO CS
 Registro CS
El DOS almacena la dirección inicial
del segmento de código de un
programa en el registro CS
REGISTRO DS
 La dirección inicial de un segmento
de programa es almacenada en el
registro DS
REGSITRO SS
 El registro SS permite la colocacion
en memoria de una pila para
almacenamiento temporal de
direcciones y datos.
REGISTRO ES
Algunas operaciones con cadenas de
caracteres utilizan regsitro extra de
segmento para manejar el
direccionamiento de memoria.

Un registro ES esta asociado con un


registro DI (indice)
REGISTRO FS y GS
 Son registros extras de segmento en
los procesadores 80386 y
posteriores.
REGISTRO DE APUNTADOR DE
DIRECCIONES
 El registro apuntador de instrucciones
(IP) contiene el desplezamiento de
direcciones de la siguiente direccion
que se ejecuta.
REGISTROS APUNTADORES
 Los registros apuntador de pila (SP) y
BP (apuntador base) estan asociados
con el registro SS y permiten al
sistema acceder a datos de la pila
REGISTRO BP
 Facilita la referencia de parametros
los cuales son datos y direcciones
transmitidos via pila
REGISTROS DE PROPOSITO
GENERAL
 Los registros de proposito general AX,
BX, CX, y DX, con caballos de batalla
del sistema, en el sentido que se
puede direccionar como una palabara
o como una parte de un byte.

 La parte izquiera es la parte alta


 La parte derecha es la parte baja
Registro AX
 Es el acumulador principal, usado
para operaciones de E/S y la mayor
parte de la aritmetica
REGISTRO BX
 Es conocido como registro base y es
el unico de proposito general, usado
para la transferencia de datos entre la
memoria y el procesador
REGISTRO CX
 Se utiliza como contador de bucles,
operaciones con cadenas y
desplazamientos
REGISTRO DX
 Se utiliza para operaciones de
multiplicacion y division junto con AX
y en operaciondes de entrada y salida
de puertos, su mitad inferior contiene
el numero de puertos
REGISTROS INDICE
 REGISTRO SI (indice fuente) y DI
(indice destino)

 Requerido para operaciones con


cadenas
REGISTROS DE BANDERAS
 Sirven para indicar el estado actual de
la maquina y el resultado del
procesamiento.
OF (overflow): overflow indica desbordamiento
DF (dirección): Designa dirección hacia la
izquierda o hacia la derecha para mover o
comparar cadenas de caracteres.
IF (Interrupción): indica una interrupción externa
TF (trampa): Permite la operación del procesador
en modo de un paso
SE (signo): Contiene el signo resultante de una
operación aritmética
ZF (cero): Indica el resultado de una operación
aritmética o de una comparación.
AF (acarreo auxiliar): contiene el acarreo del bit 3
de un dato de 8 bits, para aritmética
especializada
PF (paridad) : Indica paridad, par o impar
CF (acarreo) : Contiene el acarreo de un orden
mas alto, despues de una operación aritemtica.
DIRECCIONAMIENTO
El campo de operación de una
instrucción especifica la operación
que se debe realizar. Esta debe ser
ejecutada sobre algunos datos
almacenados en registros de la
computadora, o sobre operandos
almacenados en memoria
 El modo de direccionamiento
especifica la forma de interpretar la
información contenida en cada campo
de operando para localizar, en base a
esta información, el operando
Entonces los modos de
direccionamiento de un procesador
son las diferentes formas de
transformación del campo operando
de la instrucción en la dirección del
operando
Las técnicas de direccionamiento se
utilizan con la siguiente finalidad:

 Dar versatilidad
 Reducir el numero de bits del campo
del operando
La disponibilidad de diferentes
esquemas de direccionamiento da al
programador flexibilidad para escribir
programas eficientes en cuanto la
numero de instrucciones y el tiempo
de ejecución.
Registro
Implícito Pila

Registro
Inmediato absoluto Contador de programa
Memoria
Apuntador de pila
Directo
Relativo a registros (indexados) Base (base y desplazamiento)

Índice
Autoincremental
Autoindexado
Autodecrementa

Indirecto
Los modos de direccionamiento
también pueden clasificarse en
propios e impropios

 Propios es cuando el operando esta


en una dirección concreta
 Impropio es cuando puede estar en
registros del procesador.
Direccionamiento implícito
 El operando se especifica en la misma
definición de la instrucción.

La instrucción no lleva parámetros.

 Particularmente en instrucciones que no


accesan memoria, o bien, tienen una forma
específica de accesarla.

 Ejemplos: PUSHF, POPF, NOP


Direccionamiento inmediato
 El operando figura en la instrucción
no el la dirección

 Ejemplo:
 MOV AH, 9
Direccionamiento por
registro
 El operando esta especificado con el
direccionamiento directo por registro

 Usa solamente registros como operandos


 Es el más rápido, pues minimiza los
recursos necesarios (toda la información
fluye dentro del EU del CPU)
Ejemplo:
MOV AX, BX
Direccionamiento directo
 Uno de los operandos involucra una
localidad específica de memoria
 El valor constante se tiene que buscar en
memoria, en la localidad especificada.
 Es más lento que los anteriores, pero es el
más rápido para ir a memoria, pues ya
“sabe” la localidad, la toma de la
instrucción y no la tiene que calcular.
Ejemplo:
MOV AH, Variable
Direccionamiento indirecto
 Se usan los registros SI, DI como apuntadores

 El operando indica una localidad de memoria, cuya


dirección está en SI o DI.

 Es más lento que los anteriores, pues tiene que


“calcular” la localidad
Ejemplos:
MOV AL, [SI]
Direccionamiento relativo
 No es necesario utilizar todos los bits
de la dirección de memoria en el
campo operando, basta con usar los
bits precisos.

 Esto es debido a que las direcciones


referenciadas por el programa no
están alejadas unas de las otras.
Direccionamiento por base y
desplazamiento
 Formato:
 [BX o BP + SI o DI (opcionales)+constante (opcional)]

 BX o BP indica una localidad base de la memoria


 A partir de BX o BP, se puede tener un desplazamiento
variable y uno constante
 La diferencia es el segmento sobre el que trabajan por
defecto:
 BX por defecto en el segmento de datos
 BP por defecto en el segmento de pila.
 Ejemplos:
 MOV AX, [BX]
 MOV DX, [BX+2]
 MOV CX, [BX+DI]
 MOV DL, [BX+SI+3]
Direccionamiento indexado
 La dirección del operando también se
calcula sumando un registro del CPU
al campo del operando
Direccionamiento
postincremental
 La dirección del operando se
encuentra en un registro y este es
incremental después de acceder al
operando.
Direccionamiento
autodecremental
 Para obtener la dirección del
operando hay que decrementar un
registro en el tamaño del operando.
MODOS UTILIDADES
Inmediato Operaciones con constantes
Directo por registro Variables locales de
procedimientos no recursivos
Indirecto por registro Variables referenciadas a través
de apuntadores
Absoluto Direcciones del sistema
Relativo Variables globales
Indexado Acceso a vectores, matrices y
cadenas
Autoincremental Desapilar parámetros de
procedimientos
Recorrido de vectores y cadenas
Autodecremental Apilar parámentros de
procedimientos
Recorrido de vectores y cadenas
hacia atrás
 .386
 MODEL FLAT, STDCALL
 .DATA
 <tu data (información) inicializada>
 .DATA?
<tu data no inicializada>
.CODE
<Etiqueta>
<tu código>
End <etiqueta>

También podría gustarte