Академический Документы
Профессиональный Документы
Культура Документы
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:
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:
Ing. Sistemas
IV. Instrucciones:
ensamblador.
COUNT
Operacin
DB
MOV
RET
[ Operando(s) ]
1
AX,BX
[ ; Comentarios ]
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
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
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
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
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.
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
.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
Directivas Tradicionales
Directivas Simplificadas
.MODEL SMALL
.STACK 64
SegPila ENDS
; --------------------------------------------------
; ------------------------------------------------------
; --------------------------------------------------
.DATA
SegDatos ENDS
V1 db 2
; ------------------------------------------------------
V2 dw 3,4,5
.CODE
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
Ing. Sistemas
Linea 18
Linea 19
Linea 20
Linea 21
Linea 22
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 ]
(palabra)
(palabra doble)
(palabra larga)
(palabra cuadruple)
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
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
Ing. Sistemas
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
TIPO FDWORD
variable12
DF 34AAFFEEH
TIPO QWORD
variable12
DQ 12568
TIPO TBYTE
variable12
DT Ensamblador
Ing. Sistemas