Вы находитесь на странице: 1из 9

Fuentes Libros e Internet

Requerimientos en Lenguaje Ensamblador

Un programa en ensamblador es un conjunto de enunciados.

I. Comentarios en Ensamblador: Se realizan al final de cada lnea comenzando por el ;


Ejemplo:
; esto es un ejemplo
ADD AX,BX ; guardo en AX la suma de los valores de los dos registros AX y BX.

II. Palabras reservadas: Como todo lenguaje el ensamblador posee sus palabras reservadas,
las cuales son de uso exclusivo de l. Nunca pueden ser utilizadas en la programacin. Las
categoras de las palabras reservadas son:

Instrucciones: MOV , ADD , Etc. Operaciones a realizar


Directivas: SEGMENT, PROC, Etc. utilizadas para proporcionar comandos en ASM
Operadores: FAR, SIZE , DUP , SEG , Etc. Se utilizan en expresiones
Smbolos predefinidos: @Data , @Model , Etc. regresan informacin al programa

III. Identificadores: Son los nombres que se escogen para darle a elementos dentro del
programa.
En ensamblador se manejan dos tipos de identificadores:
Nombre: Utilizado para referirse a la direccin de elemento de dato. (Elemento o Directiva)
Etiqueta: Utilizado para referirse a la direccin de una instruccin. (Instruccin)
Caracteres utilizados para los identificadores:

Letras de a-z o A-Z para el no hay diferencias entre maysculas y minsculas.


Nmeros del 0 al 9 pero no pueden empezar por este dgito.
Caracteres especiales como: ?, _ , $ , @ y . Este . no puede ser el 1 carcter

El tamao mximo es de 31 caracteres.


c.MATI E.I.S. Miguel Fabian Robles A.
Material de Apoyo
www.robgon.net

Ing. Sistemas

Fuentes Libros e Internet

IV. Instrucciones:
ensamblador.

Es un conjunto de enunciados que conforman un programa en

Existen dos tipos de enunciados:


a) Instrucciones las cuales se pasan a cdigo objeto.
MOV , ADD , SUB , etc
b) Directivas las cuales realizan una funcin especifica como inicializar un elemento de dato.
.DATA .CODE etc

Formato general de un enunciado: Los que estn en [ ] son opcionales.


[ Identificador ]
Ejemplos:

COUNT

Operacin
DB
MOV
RET

[ Operando(s) ]
1
AX,BX

[ ; Comentarios ]

; Elemento nombre count


; Sume AX con BX
; Regresar

V. Directivas: Solo actan durante el ensamblado de un programa y no generan cdigo


ejecutable de mquina.

PAGE: Designa el nmero mximo de lneas para listar en una pgina y el nmero mximo de
caracteres en una lnea. Sus valores por defecto son de 50,80. El nmero mximo de lneas
por pgina es de 255 y de caracteres por lnea es de 132.
Sintaxis: PAGE [ Longitud ] , [ Ancho ]
Nota: PAGE solo dentro del ensamblador hace que el programa salte a la siguiente pgina a
partir de encontrar esta directiva y no realizando las instrucciones que seguan despus de l.
TITLE: Es el ttulo para el programa.
Sintaxis: TITLE [ Nombre del programa ]
SEGMENT: Es la directiva en la cual se definen los diferentes segmentos de ensamblador.
Todo segmento finaliza con la directiva ENDS. C/U segmentos es de un mximo de 64K
Sintaxis:
[Nombre] SEGMENT [ Alineacin ] [ Combinar ] [Clase ]
Por lo general los segmentos que mas se manejan son los de datos, pila y cdigo.
Nombre: Indica el nombre al segmento, puede ser cualquier nombre en particular, por lo
general se manejan los utilizados por ensamblador como lo son:
c.MATI E.I.S. Miguel Fabian Robles A.
Material de Apoyo
www.robgon.net

Ing. Sistemas

Fuentes Libros e Internet

STACKSG

DATASG

CODESG

Alineacin: Indica el limite donde inicia el segmento por lo general se deja PARA, debido a
que l reconoce el limite de prrafo donde iniciara el segmento, pero puede ser:
BYTE:
Siguiente direccin
WORD: Siguiente direccin par (divisible entre 2)
DWORD: Siguiente direccin de palabra doble (divisible entre 4)
PARA:
Siguiente prrafo (Divisible entre 10H sea 16)
PAGE:
Siguiente direccin de pgina (Divisible entre 100H sea 256)
Combinar: Indica si el segmento se combina con otros segmentos, indicando la manera en
que el enlazador maneja el segmento. Los valores que puede tomar son:
STACK (Utilizado para enlazar con el segmento de pila)
PUBLIC
COMMON
Clase: Ayuda al enlazador a asociar segmentos con diferentes nombres, identificar segmentos
y controlar su orden. Se utilizan para agrupar segmentos cuando se enlazan, se encierran
entre apstrofes.
Code para el segmento de cdigo.
Data para el segmento de datos.
Stack para el segmento de pila.
Ejemplo:
Inisegmento SEGMENT PARA
....
....
Inisegmento ENDS

PROC: Es la que define los procedimientos a seguir, por lo general esta dentro del segmento
de cdigo. Todo procedimiento debe tener un nombre y cumplir con dichas normas. Todo
procedimiento finaliza con la directiva ENDP. Para un programa .exe el PROC principal que es
el punto de entrada debe ser FAR.
Ejemplo:
procUno PROC FAR (FAR indica al DOS la primera instruccin a ejecutar.)
...
...
procUno ENDP
Mas adelante veremos llamadas a procedimientos cercanos (Near) o lejanos (Far) con CALL
c.MATI E.I.S. Miguel Fabian Robles A.
Material de Apoyo
www.robgon.net

Ing. Sistemas

Fuentes Libros e Internet

ASSUME: Es la directiva que define cada uno de los segmentos con los nombres colocados a
cada uno de los segmentos para su funcionamiento dentro del programa. Realiza la asociacin
de nombres con los segmentos.
Ejemplo:
ASSUME SS:SegPila , CS: SegCodigo , DS: SegDatos , ES: SegExtra , FS:NOTHING.
Se puede omitir
END: Directiva que finaliza todo el programa realizado en ensamblador.
Ejemplo: END BEGIN finaliza programa y vuelve el control al procedimiento llamado BEGIN.
EQU: No define elementos de datos, solo redefine. Es utilizada para inicializar una constante
que ensamblador utilizar para sustituir en otras instrucciones.
Ejemplo Total
PAGE 60,120
TITLE Programa de Ensamblador
PILA SEGMENT PARA STACK 'stack'
..........
PILA ENDS
DATOS SEGMENT PARA 'data'
VAR1 DW ?
VAR2 DW 1010B
VAR3 DW 205
DATOS ENDS
CODIGO SEGMENT PARA 'code'
BEGIN PROC FAR
ASSUME SS:PILA,SD:DATOS,SC:CODIGO
MOV AX,DATOS
MOV DS,AX

Ojo inicializamos con la dir. del SD


ya que la dir. SC y SS las carga DOS
de manera automtica.

MOV AX,0C345H
MOV BX,34ECH
ADD AX,BX
MOV VAR1,AX
MOV AX,VAR5
ADD AX,VAR2
MOV VAR6,AX
MOV BX,VAR3
SUB VAR4,AX
INC BX
DEC AX
PUSH AX
PUSH BX
c.MATI E.I.S. Miguel Fabian Robles A.
Material de Apoyo
www.robgon.net

Ing. Sistemas

Fuentes Libros e Internet

MOV AX,9999H
POP AX
POP BX
MOV AX,4C00H
INT 21
BEGIN ENDP
CODIGO ENDS
END
Para la casa Analizar los ejemplos de las pginas 56 y 58.

DIRECTIVAS SIMPLIFICADAS DE SEGMENTOS

El lenguaje ensamblador permite la utilizacin de unas directivas especiales que hacen de manera
resumida la inicializacin de los segmentos a utilizar. De manera inicial se debe inicializar el modelo de
memoria antes de definir algn segmento, por ejemplo:
.MODEL [ modelo de memoria ]
Recuerde que los segmentos son de 64K
Modelo de memoria
Tiny
Small
Medium
Compac
Large
Huge

# de segmentos de cdigo
*
1
Ms de 1
1
Ms de 1
Ms de 1

# segmentos de datos
*
1
1
Ms de 1
Ms de 1
Ms de 1

Tiny es para uso exclusivo de programas .COM


La diferencia de Large a Huge es en los arreglos del segundo se pueden superar los 64K
La directiva .MODEL define de manera AUTOMATICA la directiva ASSUME
Los nombre para los segmentos simplificados son:
Segmento de Datos DS
Segmento de Pila
SS
Segmento de Cdigo CS

.Data
.Stack
.Code

Observe muy detalladamente el cuadro de comparacin entre el uso de directivas tradicional y usando
directivas simplificadas.

Directivas Tradicionales

Directivas Simplificadas

Page 60,132
c.MATI E.I.S. Miguel Fabian Robles A.
Material de Apoyo
www.robgon.net

Ing. Sistemas

Fuentes Libros e Internet

Directivas Tradicionales

Directivas Simplificadas

TITLE Programa de Assembler


; ------------------------------------------------------

.MODEL SMALL

SegPila SEGMENT PARA STACK stack

.STACK 64

SegPila ENDS

; --------------------------------------------------

; ------------------------------------------------------

; --------------------------------------------------

SegDatos SEGMENT PARA data

.DATA

SegDatos ENDS

V1 db 2

; ------------------------------------------------------

V2 dw 3,4,5

SegCodigo SEGMENT PARA code

.CODE

BEGIN PROC FAR

inicio PROC NEAR

ASSUME SS:SegPila,DS:SegDatos,CS:Segcodigo ; -------------------------------------------------MOV AX,SegDatos

MOV AX,@data

MOV DS,AX

MOV DS,AX

MOV AX,123AH
MOV BX,0C345H
ADD AX,BX
MOV AX,4C00H

MOV AX,4C00H

INT 21H

INT 21H

BEGIN ENDP

inicio ENDP

Segcodigo ENDS

; --------------------------------------------------

END BEGIN

END

Explicacin del cuadro de comparacin linea por linea


Linea 1
Linea 2
Linea 3
Linea 4
Linea 5
Linea 6
Linea 7
Linea 8
Linea 9
Linea 10
Linea 11
Linea 12
Linea 13
Linea 14
Linea 15
Linea 16
Linea 17

Definicin del nmero de lineas * pagina y caracteres * linea


Titulo del programa
Comentarios y Inicio del modelo de memoria a manejar .SMALL
Inicio del segmento de pila tradicional y con la directiva simplificada Stack
Cierre del segmento de pila tradicional y Comentarios
Comentarios
Inicio del segmentos de datos tradicional y con la directiva .Data
Cierre del segmento de datos tradicional y Comentarios
Comentarios
Inicio del segmentos de cdigo tradicional y con la directiva .Code
Inicio del proceso principal del programa
Relacin de los segmentos con sus registros de segmentos tradicional
Cargar la dir. Seg. Datos en el AX con Segdatos y en el otro con @Data
Copia la dir al DS
Inicializa el AX con el valor 123AH
Inicializa el BX con el valor 0C345H
Suma el AX, BX
c.MATI E.I.S. Miguel Fabian Robles A.
Material de Apoyo
www.robgon.net

Ing. Sistemas

Fuentes Libros e Internet

Linea 18
Linea 19
Linea 20
Linea 21
Linea 22

Mueve el 4C al AH para hacer una llamado a una rutina del DOS


Invoca la interrupcin de finalizar programa con el valor del AH
Finaliza el procedimiento principal
Finaliza el Segmento de cdigo y comentarios
Finaliza el programa
DEFINICION DE DATOS EN ENSAMBLADOR

Como cualquier otro tipo de lenguaje en ensamblador tambin se inicializan variables con una
determinada longitud, existen diferentes tipos de longitudes.
Para inicializar un dato la sintaxis general es:
[ nombre del dato ]

D[ n ]

[ expresin o valor de inicio ]

Los nombres deben cumplir con las reglas de definicin de nombres!


Los tipos de datos son los siguientes:
DB
DW
DD
DF
DQ
DT

Define un dato tipo Byte


Define un dato tipo 2 Bytes
Define un dato tipo 4 Bytes
Define un dato tipo 6 Bytes
Define un dato tipo 8 Bytes
Define un dato tipo 10 Bytes

(palabra)
(palabra doble)
(palabra larga)
(palabra cuadruple)

La expresin o valor puede ser:


? cuando no se desea inicializar con un valor vaco
# con un valor que sea de un mximo de su longitud permitido constante.
#, #, ... con una serie de valores limitados por su longitud mxima permitida y el
nmero de lneas manejadas.

Definir Bytes DB
Su valor mximo es de 8 bits o 2 dgitos hexadecimales.
Su valor mximo es FF(16) = 255(10) = 11111111(2) en total pero se parte en dos + y 7F(16) = 127 (10)
80(16) es adelante se manejan como nmeros negativos.
Definir una palabra Word DW
Su valor mximo es de 16 bits o 4 dgitos hexadecimales.
Su valor mximo es FFFF(16) = 65535(10) = 11111111 11111111(2)
en total pero se parte en dos + y c.MATI E.I.S. Miguel Fabian Robles A.
Material de Apoyo
www.robgon.net

Ing. Sistemas

Fuentes Libros e Internet

7FFF(16) = 32767
Definir una palabra doble DWORD DD
Su valor mximo es de 32 bits o 8 dgitos hexadecimales.
Su valor mximo es FFFF FFFF(16) =4294967295(10) = 11111111 11111111 11111111 11111111
en total pero se parte en dos + y 7FFF FFFF(16) = 2147483647 (10)
Definiruna palabra larga FWORD DF
Su valor mximo es de 48 bits o 14 dgitos hexadecimales.
Definir palabra cuadruple QWORD DQ
Su valor mximo es de 64 bits o 16 dgitos hexadecimales.
Definir diez bytes TBYTE DT
Su valor mximo es de 80 bits o 40 dgitos hexadecimales.

CONSTANTES NUMRICAS
Decimal: Son los dgitos del 0 9 y que pueden terminar (opcional) con la letra D. Internamente el
maneja cdigo binario pero los muestra en cdigo hexadecimal.
Ejemplo:

125 o 125D

Binaria: Son los dgitos 0 y 1 seguidos del especificador B. Internamente el pc maneja este cdigo
binario.
Ejemplo:
Hexadecimal: Son los dgitos del 0 9 y A F, seguidos del especificador H. Internamente el maneja
cdigo binario pero los muestra en este cdigo hexadecimal. Debido a que el ensamblador siempre
espera que una referencia comience con una letra las constantes numricas de este tipo que inicien
con una letra se les debe anteponer el 0.
Ejemplo:

2FAH

0FF34H

Algunos ejemplos:
TIPO BYTE
variable1
variable2
variable3

DB ?
DB 23
DB 18H

Variable de 1 byte vaca


Variable de 1 byte con valor 23 decimal
Variable de 1 byte con valor 18 Hexadecimal

c.MATI E.I.S. Miguel Fabian Robles A.


Material de Apoyo
www.robgon.net

Ing. Sistemas

Fuentes Libros e Internet

variable4
variable5
variable6
variable7
variable8

DB 11110101B
Variable de 1 byte con valor binario
DB 8 DUP (2)
Variable de 1 byte con 8 bytes con valor de 2
DB hola
Variable de 1 byte con cadena 'hola como estas'
DB 456773
Variable de 1 byte con cadena de nmeros
DB 01, nero, 02, Febrero, 03 Marzo... Variable de 1 byte con tabla de nmeros y
cadenas

TIPO WORD
variable9
DW DDAAFFEEH
variable10
DW 101010101011B
TIPO DWORD
variable12
DD 7, 4, 2, 1

Variable de 2 bytes con valor hexadecimal


Variable de 2 bytes con valor binario

Variable de 4 bytes para cada nmero


4 bytes para el 7, 4 bytes para el 1, etc

TIPO FDWORD
variable12
DF 34AAFFEEH
TIPO QWORD
variable12
DQ 12568
TIPO TBYTE
variable12
DT Ensamblador

c.MATI E.I.S. Miguel Fabian Robles A.


Material de Apoyo
www.robgon.net

Ing. Sistemas

Вам также может понравиться