Sei sulla pagina 1di 7

Lenguaje ensamblador

Un programa en lenguaje ensamblador consiste en un conjunto de enunciados. Los dos tipos de


enunciados o lneas de programacin son:
1.- Instruccin, tal como MOV y ADD, que el ensamblador traduce a cdigo objeto
2.- Directiva, que indican al ensamblador que realice una accin especifica, como definir un
elemento de dato.

ENUNCIADO O LINEA DE PROGRAMACIN:


[Etiqueta] <Operacin o directiva> [ operando (s) ] [ ; comentarios ]

NOTA: Los corchetes indican una entrada opcional


ETIQUETA o IDENTIFICADOR.- Es un nombre para designar un dato y la direccin donde se
encuentra dicho dato. Puede consistir de los siguientes caracteres:

Letras del alfabeto: A-Z a -z

Dgitos: (0 9) (no puede ser el primer carcter)

Caracteres especiales: signo de interrogacin ()


Subrayado ( _ )
Signo de pesos ( $ )
Arroba ( @ )
Punto ( . ) (no puede ser el primer carcter)
no debe tener espacios en blanco en medio de la etiqueta. Para definir una etiqueta se usan
los directivos DW, DB. Una etiqueta puede tener los siguientes usos:

a) Como variable.- Ejemplo:


num db 65

; A num se le asocia el valor 65 y la direccin donde se encuentra

Tambin podemos hacer:


num dw 6567H
b ) Como direccin.- En la cual puede continuar el programa:
SUMA: ADD AX, DX
_____________
_____________
JMP SUMA

dicho dato.

OPERACIN O DIRECTIVA.- En este campo deber estar el nombre de la operacin


(Mnemnico) que el micro deber realizar, o el nombre de una orden (directiva) que el
programa ensamblador deber ejecutar al momento de ensamblar nuestro programa. Al
ensamblarse nuestro programa se genera un cdigo ejecutable, que el micro entiende.
La directiva no genera cdigo ejecutable solo el mnemnico.
(Instruccin) Etiq1:
MOV AX, 20H
(Directiva)
Constante Equ 100
Algunas directivas seran:
.Model Indica el modelo de memoria que usara el programa
.Stack Indica el tamao del Stack o pila
.Data
Indica el inicio del segmento de datos
.Code Indica el inicio del segmento de cdigo
End
Indica el fin del programa
OPERANDO.- (Si existe) proporciona informacin para la operacin que acta sobre el. Para
un elemento de datos, el operando identifica su valor inicial. Por ejemplo, en le definicin
siguiente de un elemento de datos llamado COUNTER, la operacin DB significa definir byte
.
ETIQUETA
OPERACIN
OPERANDO
COMENTARIO
Counter
DB
0
; define un byte con valor=0
Para una instruccin un operando indica en donde realizar la operacin. Una instruccin
puede tener uno, dos o tal vez ningun operando. Aqu estn tres ejemplos:

OPERACIN
RET
INC
ADD

OPERANDO
CX
AX, 12

COMENTARIO
; Regresa
; Incrementa el registro CX
; Suma 12 al registro AX

COMENTARIOS.- Empiezan con ( ; ) y mejoran la claridad del programa, donde el propsito


de un conjunto de instrucciones en especial no es claro.
ESTRUCTURA DE UN PROGRAMA.- Un programa escrito en lenguaje ensamblador se ensambla
por medio de un programa ensamblador: Los programas mas comunes para el 8088, 8086 con el
Turboensamblador (TASM) de la compaa Borland y el de la compaa Microsoft (MASM).
Los requerimientos mnimos para un programa escrito en lenguaje ensamblador son:
.Model
SMALL ; indica el modelo de memoria (SMALL)
.STACK
200
; indica el tamao del STACK (bytes)
.DATA
; indica que la siguiente informacin
___
; deber quedar en el segmento de datos
___
___
.CODE
; indica que la siguiente informacin
___
; es el programa ejecutable

___
___
MOV AH,4CH
INT 21H
END

;necesario para terminar el programa


; y regresar al prompt C>
; Indica el fin del programa

TIPOS DE MODELOS DE MEMORIA


Model TYNY
CS = DS
En 1 solo segmento d 64K
Model SMALL
CS = 64Kb DS = 64Kb
Model MEDIUM CS > 64Kb DS < 64Kb
Model COMPAC CS < 64Kb DS > 64Kb
Model LARGE
CS > 64Kb DS > 64Kb(Los arreglos de datos
deben ocupar menos de 64 K)
Model HUGE
CS > 64Kb DS > 64Kb(Los arreglos de datos
pueden ocupar mas de 64 Kb)

INICIALIZACION DE DATOS
Los datos pueden tener diferentes longitudes, asi podemos hablar de BYTES (8 bits), de
palabras WORD (16 bits) de doble palabra (32 bits).
Dependiendo de la longitud del dato se usa un directivo diferente para declararlo.
DB
1byte
DW
2byte
DD
4byte
DF o DP 6byte
DQ
8byte
DT
10bytPodemos usar una etiqueta para definir un arreglo, ejemplo:
Arreglo db
0, 1, 2, 3, 4 ; define 5 bytes con valores(0,1,2,3,4)
Otra forma de inicializar arreglo.
Arreglo db 0
db 1
db 2
db 3
db 4
Directiva DUP para definir una cierta cantidad de datos.
FILA
db 100 dup (0) ; define 100 bytes, todos con valor de( 0 )

MODOS DE DIRECCIONAMIENTO

INMEDIATO.- El dato a cargar en el operando destino es una constante. El usuario


especifica un byte o palabra como operando fuente. Esta constante se ensambla como parte
de la instruccin. Por ejemplo:
MOV AX,18
;Coloca el num. 18 en el reg. AX.
DE REGISTRO.- El dato a cargar en el operando destino se obtiene de un registro .
Ejemplo :

MOV

AX, BX

Es un ejemplo de direccionamiento de registro en donde la unidad de ejecucin (EU) toma el operando


del registro BX, determina como destino el registro AX y ordena a la ALU llevar a cabo la operacin.
DIRECTO.- El dato a cargar en el operando destino esta guardado en una variable
(Etiqueta). En este direccionamiento la direccin efectiva (EA), para una localidad de memoria,
esta contenida en la instruccin. Para obtener la direccin de 20 bits, se suman el
desplazamiento que tiene la etiqueta y el contenido del registro DS. La siguiente instruccin es
un ejemplo de este tipo de direccionamiento.
MOV AX, VAR1
Donde previamente se defini en el segmento de datos a VAR1
VAR1 DB

20H

DE REGISTRO INDIRECTO.- El dato a cargar en el operando destino esta guardado


en una variable(Normalmente un arreglo) y se carga al operando destino indirectamente a
travs de uno de los siguientes registros: BX, BP, SI o DI. Para evitar confundir este modo de
direccionamiento con el de registro, en la instruccin, los registros deben aparecer entre
parntesis rectangulares. Como la EA es una direccin y no el contenido de una localidad de
memoria, antes de utilizar los registros mencionados, estos deben contener direcciones. Una
tcnica para asegurar lo anterior es utilizar el operador OFFSET.
MOV BX, OFFSET ARREGLO
Este modo de direccionamiento se puede usar para colocar el
localidad de memoria a la que apunta BX, por ejemplo en AX.

contenido de la

MOV AX, [ BX ]
Donde [BX] es un desplazamiento relativo a DS ( DS:[ BX ] )
RELATIVO A LA BASE.- Al hacer uso de este modo de direccionamiento, la EA del
operando fuente se obtiene al sumar un desplazamiento a los siguientes registros: BP o
BX. En este caso, los registros deben contener la direccin del desplazamiento. Un ejemplo
del uso de este tipo de direccionamiento lo ofrece la siguiente instruccin:
MOV AX, [ BX+2 ]
INDEXADO DIRECTO.- En este modo, la (EA) es la suma del contenido de un registro
ndice (SI o DI) y un desplazamiento. Un ejemplo comn lo construye una secuencia de
instrucciones, donde primero se carga una direccin en un registro ndice y despus la misma
se combina con una localidad de memoria.
MOV SI, 2
MOV AX, ARREGLO[ SI ]
En este caso, en el registro AX se coloca el contenido de la localidad de memoria cuya
direccin es la de ARREGLO + 2.

INDEXADO DE BASE.- La (EA) es la suma de los contenidos del registro


base (BX), un registro ndice (SI o DI) yun desplazamiento (opcional). La siguiente es una
secuencia de instrucciones que ilustra este tipo de direccionamiento.
MOV BX,OFFSET ETIQUETA
MOV SI,
MOV AX,[ BX + SI +2 ]

CONJUNTO DE INSTRUCCIONES
Las instrucciones estn agrupadas en los siguientes grupos y subgrupos:
1.- TRANSFERENCIA DE DATOS.
a) De propsito general.
b) Entrada/Salida.
c) De operando direccin.
d) Transferencia de banderas.
2.-INSTRUCCIONES ARITMENTICAS.
a) Suma.
b) Resta.
c) Multiplicacin.
d) Divisin.
3.-MANIPULACION DE BIT.
a) Lgicas.
b) Desplazamiento.
c) Giro.
4.-DE CADENA.
5.-DE TRANSFERENCIA DE PROGRAMA.
a) Incondicional.
b) Condicional.
c) Control de iteraciones.
6.-DE INTERRUPCIONES.
7.-CONTROL DEL PROCESADOR.
A) Operaciones con banderas.
b) Sincronizacin extrema.
c) NOP.

MODOS DE PROGRAMACIN
Existen 2 tipos de programas:
a).- Los programas .EXE
b).- Los programas .COM

Algunas de las diferencias bsicas entre un programa que es para ejecutarse como .EXE y un
programa que es para ejecutarse como .COM implica el tamao del programa, la
segmentacin y la inicializacin.
Un programa .COM es mas pequeo que un programa .EXE

Un programa .COM est restringido a un solo segmento de 64Kb. El segmento de cdigo,


el segmento de datos, el segmento de stack y el segmento extra estn todos traslapados en
uno solo. Esto no sucede as en los programas .EXE

En un programa .COM los datos estn en el mismo segmento que el de cdigo, por lo
tanto la primera instruccin es un salto a donde continua el cdigo del programa , evitando
que el CPU lea los datos como si fueran instrucciones. En los programas .EXE no existe este
problema ya que el segmento de cdigo y el de datos estn separados, mas sin embargo las
primeras instrucciones en este tipo de programas son para obtener la direccin en donde el
sistema operativo guardo los datos, y cargrsela al registro DS.
MOV

AX, @ DATA

MOV DS, AX

Potrebbero piacerti anche