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

ESTRUCTURA DE COMPUTADORES I (Captulo 14: DIRECTIVAS)

1/32

14-DIRECTIVAS

14.1 INTRODUCCIN:
Las directivas o pseudooperaciones se pueden dividir en cuatro grupos
funcionales:
!

Directivas de datos.

Directivas condicionales.

Directivas de listado.

Directivas de macros.

14.2 DIRECTIVAS DE DATOS:


A su vez se dividen en seis categoras_
!

Definicin de smbolos: Sirven para asignar nombres simblicos a


expresiones

EQU = Asigna un smbolo a una expresin fija.

= = Asigna un smbolo a una expresin variable.

Definicin de datos: Sirven para reservar memoria para las variables


del programa. Opcionalmente se puede dar un valor inicial a cada
variable.

DB = Definir byte.

DW = Definir palabra.

DD = Definir doble palabra.

DQ = Definir cudruple palabra.

DT = Definir 10 bytes.

Referencias Externas: Hacen referencia a informacin que se


encuentra en mdulos o ficheros distintos.
!

PUBLIC = Definir smbolo pblico.

EXTRN = Definir smbolo externo

INCLUDE = Incluir fichero fuente.

1 INGENIERA TCNICA EN INFORMTICA DE GESTIN-EUITI VITORIA


Profesor: Fernando Oterino Echvarri

ESTRUCTURA DE COMPUTADORES I (Captulo 14: DIRECTIVAS)

2/32

Control del ensamblador:


!

END = Fin del mdulo fuente.

ORIGIN = Origen de cdigo o datos

EVEN= Poner contador de posiciones en nmero par.

.RADIX = Base de numeracin por defecto.

Definicin de segmentos y procedimientos:


!

SEGMENT = Comienzo de segmento.

ENDS = Fin de segmento o de estructura.

ASSUME = Suponer registro de segmento.

PROC = Comienzo de procedimiento.

ENDP = Fin de procedimiento.

Definicin de bloques:
!

GROUP = Agrupar segmentos.

NAME = Nombre de un mdulo.

LABEL = Asigna un atributo a un nombre.

RECORD = Definir registro.

STRUC = Definir estructura.

14.3 DIRECTIVAS CONDICIONALES: Sirve para que el ensamblador


ejecute ciertos grupos de instrucciones segn una condicin sea cierta o falsa.
Estas directivas son del tipo Ifxxx else endif con la siguiente estructura:
IF [condicin]
.......
.......
ELSE
.......
.......
ENDIF

1 INGENIERA TCNICA EN INFORMTICA DE GESTIN-EUITI VITORIA


Profesor: Fernando Oterino Echvarri

ESTRUCTURA DE COMPUTADORES I (Captulo 14: DIRECTIVAS)

3/32

14.4 DIRECTIVAS DE LISTADO: Indican al ensamblador la informacin


a obtener en el listado de salida y el formato de esta informacin.
!

Formato de listado:
!

PAGE = Formato de la pgina de listado.

TITLE = Ttulo del listado.

SUBTTL = Subttulo de listado.

LISTADO DE MACROS:
!

LALL = Listar macros y expansiones.

SALL = Suprimir el listado de las macros y de las expansiones.

XALL = Listar slo las macros que generan cdigo objeto.

CONTROL DE LISTADO
!

.XCREF = Suprimir referencia cruzadas.

.CREF = Restaurar listado de referencias cruzadas.

.XLIST = Suprimir listado ensamblador.

.LIST = Restaurar listado ensamblador.

COMENTARIOS
!

MENSAJES
!

COMMENT = Comentario.

%OUT = Emitir mensaje durante el ensamblaje.

CONTROL DEL LISTADO DE LOS BLOQUES ASOCIADOS A UNA


CONDICIN FALSA
!

.LFCOND = Listar bloques asociados a una condicin falsa.

.SFCOND = Suprimir el listado de los bloques asociados a una


condicin falsa

.TFCOND = Invertir el modo de listado de los bloques asociados


a una condicin falsa.

1 INGENIERA TCNICA EN INFORMTICA DE GESTIN-EUITI VITORIA


Profesor: Fernando Oterino Echvarri

ESTRUCTURA DE COMPUTADORES I (Captulo 14: DIRECTIVAS)

4/32

14.5 DIRECTIVAS DE MACROS: Una macro es un conjunto de


sentencias ensamblador (directivas y/o instrucciones) que pueden aparecer
varias veces en un programa con algunas modificaciones opcionales cada vez
que se usan. Para evitar el tener que teclear estas repeticiones a la hora de
programar, se definen las macros a las que se puede invocar desde el
programa con diferentes valores para los parmetros. Esto slo ocurre en
tiempo de programacin, porque al ensamblar el fichero, dichas macros se
expanden dentro del cdigo. A este proceso se le llama expansin de la
macro y tiene lugar en todos los puntos del programa donde se utilice la
macro, por ello se recomienda que el tamao de estas macros sea pequeo.
Las macros se definen mediante la directiva MACRO precedida del nombre de
la macro y seguida por los nombres de los operandos que necesita separados
por comas. En lneas sucesivas se colocarn las instrucciones de la macro,
pudindose colocar como operandos de ellas los parmetros de la misma. Por
ltimo, el final de la macro se indicar con la directiva ENDM.
Ejemplo.
Supongamos que tenemos una macro as definida:

Suma MACRO destino, fuente1,fuente2


MOV destino,op1
ADD destino,op1
ENDM

1 INGENIERA TCNICA EN INFORMTICA DE GESTIN-EUITI VITORIA


Profesor: Fernando Oterino Echvarri

ESTRUCTURA DE COMPUTADORES I (Captulo 14: DIRECTIVAS)

5/32

Si dentro de un programa llamamos a dicha macro:

Mov Dato,4444h
Mov AX,1234h
Mov BX,5678h
Suma CX,AX,BX
Suma DX,CX,Dato

Al ensamblar el programa quedar:


Mov Dato,4444h
Mov AX,1234h
Mov BX,5678h
Mov CX,AX ; 2 expansiones de la macro
Add CX,BX
MOV DX,CX
ADD DX,Dato

Puesto que las macros se expanden en todos los lugares en los que son
utilizadas, no es posible utilizar en ellas etiquetas normales puesto que si se
expandiese la etiqueta ms de una vez, aparecera la etiqueta en varias partes
del programa, producindose un error. La forma de solucionar este
inconveniente es utilizando las etiquetas locales. Las cuales tienen vigencia
nicamente dentro de la expansin de la macro, no existiendo fuera de ellas y
permitiendo por tanto, su utilizacin repetida.
Las etiquetas locales se definen mediante la directiva LOCAL, seguidas
de los nombres de las etiquetas separados por comas

1 INGENIERA TCNICA EN INFORMTICA DE GESTIN-EUITI VITORIA


Profesor: Fernando Oterino Echvarri

ESTRUCTURA DE COMPUTADORES I (Captulo 14: DIRECTIVAS)

6/32

Las directivas de macros se dividen en dos categoras:


!

DEFINICIN DE MACROS
!

MACRO = Comienzo de macro.

ENDM = Fin de macro.

LOCAL = Define etiquetas dentro de una macro

EXITM = Terminar expansin de la macro.

PURGE = Borrar las macros de la memoria.

REPT = Repetir bloque de sentencias un nmero de veces.

IRP = Repetir bloque de sentencias con un valor cada vez.

IRPC = Repetir bloque de sentencias con un carcter cada vez.

OPERADORES DE MACROS
!

& = Operador que concatena textos o smbolos

;; = Operador para comentarios que no aparecen en la expansin

! = Operador para interpretar carcter en sentido literal

% = Operador para convertir una expresin en un nmero.

14.6 DIRECTIVAS :
14.6.1 Directiva &:
Formato: texto&texto
Descripcin: Es un operador que se utiliza dentro de la definicin de una macro
para concatenar textos o smbolos.
Observaciones:
!

Si se utiliza un parmetro de la macro dentro de una cadena de


caracteres (entre comillas) debe ir precedido por el carcter &, para
que sea sustituido en la expansin de la macro.

Para formar un smbolo a partir de un texto y un parmetro de la


macro, es necesario interponer un & entre ellos.

Ejemplo:
Ejem1 MACRO X,cond
Et1&X

push BX
Mov BX,&X
J&cond et&x

ENDM

1 INGENIERA TCNICA EN INFORMTICA DE GESTIN-EUITI VITORIA


Profesor: Fernando Oterino Echvarri

ESTRUCTURA DE COMPUTADORES I (Captulo 14: DIRECTIVAS)

7/32

Cuando en el programa coloquemos por ejemplo Ejem1 A,GE, al ensamblar la


expansin quedar:

Et1A push

BX

Mov BX,A
JGE Et1A
14.6.2 Directiva ;;
Formato: ;; texto
Descripcin: Es un operador que se utiliza dentro de la definicin de una macro
para insertar comentarios que no se desea que aparezcan en la expansin
incluso usando la directiva .LALL.
Observaciones: Los comentarios precedidos por un (;) aparecern en la
expansiones.
14.6.3 Directiva !:
Formato: !Carcter
Descripcin: Es un operador que se utiliza dentro de la definicin de una macro
para indicar que el carcter que viene a continuacin debe interpretarse de
forma literal, y no como smbolo.
Observaciones: Las entradas !x y <x> son equivalentes
Ejemplo:
Macro1 macro x
Mov ax,x
Macro2 !x
Endm
Macro2 macro y
Push Y
Endm

1 INGENIERA TCNICA EN INFORMTICA DE GESTIN-EUITI VITORIA


Profesor: Fernando Oterino Echvarri

ESTRUCTURA DE COMPUTADORES I (Captulo 14: DIRECTIVAS)

8/32

14.6.4 Directiva %:
Formato: %Expresin
Descripcin: Es un operador de macro que sirve para convertir una expresin a
un nmero en la base de numeracin activa.
Ejemplo
Macro1 macro x
Y = x+1
Macro2 %Y
Endm
Macro2 macro Y
MOV BX, Y
Endm
14.6.5 Directiva COMMENT:
Formato: COMMENT delimitador texto delimitador
Descripcin: Permite insertar comentarios en el programa sin tener que
especificar ; en cada lnea.
El primer carcter no blanco acta como delimitador inicial del
comentario. El delimitador final es otro carcter igual al inicial.
Un comment definido dentro del cuerpo de una macro no se lista, a
menos que especifiquemos la directiva .LALL
Ejemplo
COMMENT * esto es un comentario que puede ocupar varias lneas
............
............
...........
fin del comentario*

1 INGENIERA TCNICA EN INFORMTICA DE GESTIN-EUITI VITORIA


Profesor: Fernando Oterino Echvarri

ESTRUCTURA DE COMPUTADORES I (Captulo 14: DIRECTIVAS)

9/32

14.6.6 Directiva .CREF/.XCREF:


Formato:

.CREF
.XCREF

Descripcin: .XCREF suprime el listado de las referencias cruzadas hasta que


encuentre un .CREF
.CREF Restaura el listado de referencias cruzadas, esta opcin es
por defecto
Observaciones: Las referencias cruzadas se utilizan como ayuda en la
depuracin de un programa. Consta de un listado de los smbolos y nmeros
de lneas donde es referenciado o definido.
14.6.7 Directiva DB:
Formato:

[nombre de variable] DB expresin

Descripcin: Reserva memoria para una variable de tipo byte (8 bits), inicializando o
no dicho byte y los posteriores, nombre de variable es opcional y es el nombre asignado
al primer byte
Operandos: -Expresin es el valor inicial de la variable, y puede ser:
!

Una constante positiva o negativa o expresin de constantes


!

El rango de constantes con signo es:


!

80h = -128 (mnimo)

7Fh = 127 (mximo)

El rango de constantes con signo es:


!

00h = 0 (mnimo)

FF

El signo ? indica indefinicin del valor

Una cadena de caracteres delimitada por comillas simples o dobles

N1 DUP(n2) indica que la expresin n2 se repite n1 veces, a su vez


n2 puede tener otro u otros DUP.

1 INGENIERA TCNICA EN INFORMTICA DE GESTIN-EUITI VITORIA


Profesor: Fernando Oterino Echvarri

ESTRUCTURA DE COMPUTADORES I (Captulo 14: DIRECTIVAS)

10/32

Ejemplos:
!

ABC

DB

23,35,48

DFR

DB

-125

SRGWR DB

0Dh

DB

3Eh,5Fh,31h

SDE

DB

4 DUP(0),12*3

WFRG

DB

4 DUP(3 DUP(7))

THECS

DB

ERROR,34,-15,0100101b

14.6.8 Directiva DD:


Formato:

[nombre de variable] DD expresin

Descripcin: Reserva memoria para una variable de tipo doble palabra (2 palabras = 4
bytes = 32 bits).
Operandos: -Expresin es el valor inicial de la variable, y puede ser:
!

Una constante positiva o negativa o expresin de constantes


!

El rango de constantes con signo es:


!

80000000h = -2.147.483.648 (mnimo)

7FFFFFFFh = 2.147.483.647 (mximo)

El rango de constantes con signo es:


!

00000000h = 0 (mnimo)

FFFFFFFFh = 4.294.967.295 (mximo)

El signo ? indica indefinicin del valor

Una cadena de caracteres delimitada por comillas simples o dobles

N1 DUP(n2) indica que la expresin n2 se repite n1 veces, a su vez n2 puede


tener otro u otros DUP.
Observaciones: El orden de almacenamiento de una doble palabra en memoria
es el siguiente:
!

Primero las palabras menos significativas.

Segundo la palabra mas significativa.

A su vez cada palabra se almacena con el byte menos significativo


en primer lugar

La doble palabra 45687458 se almacenar como 58, 74, 68, 45.

1 INGENIERA TCNICA EN INFORMTICA DE GESTIN-EUITI VITORIA


Profesor: Fernando Oterino Echvarri

ESTRUCTURA DE COMPUTADORES I (Captulo 14: DIRECTIVAS)

11/32

14.6.9 Directiva DQ:


Formato:

[nombre de variable] DQ expresin

Descripcin: Reserva memoria para una variable de tipo cudruple palabra (4 palabras
= 8 bytes = 64 bits).
Operandos: -Expresin es el valor inicial de la variable, y puede ser:
!

Una constante positiva o negativa o expresin de constantes


!

El rango de constantes con signo es:


!

8000000000000000h = -9.223.372.036.854.775.808 (mnimo)

7FFFFFFFFFFFFFFh = 9.223.372.036.854.775.807 (mximo)

El rango de constantes con signo es:


!

0000000000000000h = 0 (mnimo)

FFFFFFFFFFFFFFFFh

18.446.774.073.709.551.615

(mximo)
!

El signo ? indica indefinicin del valor

Una cadena de caracteres delimitada por comillas simples o dobles

N1 DUP(n2) indica que la expresin n2 se repite n1 veces, a su vez n2 puede


tener otro u otros DUP.
Observaciones: El orden de almacenamiento de una doble palabra en memoria
es el siguiente:
!

Primero la doble palabra menos significativas.

Segundo la doble palabra mas significativa.

A su vez cada doble palabra se almacena con la palabra menos


significativa en primer lugar

La doble palabra AFEBCD4587236954 se almacenar como 54, 69, 23, 87, 45,
CD, EB, AF.

1 INGENIERA TCNICA EN INFORMTICA DE GESTIN-EUITI VITORIA


Profesor: Fernando Oterino Echvarri

ESTRUCTURA DE COMPUTADORES I (Captulo 14: DIRECTIVAS)

12/32

14.6.10 Directiva DT:


Formato:

[nombre de variable] DT expresin.

Descripcin: Reserva diez bytes de memoria para almacenar dgitos decimales


empaquetados (dos dgitos decimales por byte).
Ejemplo:
Wuh DT

0123456789 ;reserva 10 bytes.

Es equivalente a :
Wuh DB

00h,4 DUP(),01h,23h,45h,67h,89h

14.6.11 Directiva DW:


Formato:

[nombre de variable] DW expresin.

Descripcin: Reserva diez bytes de memoria para una variable de tipo palabra
Operandos: -Expresin es el valor inicial de la variable, y puede ser:
!

Una constante positiva o negativa o expresin de constantes


!

El rango de constantes con signo es:


!

8000h = -32.768 (mnimo)

7FFFh = 32.768 (mximo)

El rango de constantes con signo es:


!

0000h = 0 (mnimo)

FFFFh = 65.535 (mximo)

El signo ? indica indefinicin del valor

El desplazamiento offset de una variable.

Una cadena de caracteres delimitada por comillas simples o dobles

N1 DUP(n2) indica que la expresin n2 se repite n1 veces, a su vez n2 puede


tener otro u otros DUP.
Observaciones: El orden de almacenamiento de una palabra en memoria es el
siguiente:
!

Primero el byte menos significativo. (byte 0: bit del 0 al 7)

Segundo el byte mas significativo (byte 1 : bit del 8 al 15)

1 INGENIERA TCNICA EN INFORMTICA DE GESTIN-EUITI VITORIA


Profesor: Fernando Oterino Echvarri

ESTRUCTURA DE COMPUTADORES I (Captulo 14: DIRECTIVAS)

13/32

14.6.12 Directiva END:


Formato:

END [expresin]

Descripcin: Indica el final del programa fuente. El operando expresin indica la


direccin de comienzo del programa fuente. Normalmente se especifica una
etiqueta.
14.6.13 Directiva ENDM:
Formato:

ENDM

Descripcin: Indica el final de una de las directivas siguientes: MACRO, REPT,


IRP, IRPC.
14.6.14 Directiva ENDP:
Formato:

nombre_procedimiento ENDP [expresin]

Descripcin: Indica el final del procedimiento.


14.6.15 Directiva ENDS:
Formato:

nombre_segmento ENDS
Nombre_estructura ENDS

Descripcin: Indica el final de un segmento o de una estructura.


14.6.16 Directiva EQU:
Formato:

nombre EQU expresin

Descripcin: Asigna un nombre simblico al valor de una expresin. La


expresin puede ser:
!

Una constante numrica.

Una referencia de direccin.

Cualquier combinacin de smbolos y operaciones que pueda


evaluarse como valor numrico.

Otro nombre simblico.

1 INGENIERA TCNICA EN INFORMTICA DE GESTIN-EUITI VITORIA


Profesor: Fernando Oterino Echvarri

ESTRUCTURA DE COMPUTADORES I (Captulo 14: DIRECTIVAS)

14/32

Observaciones:
!

Al contrario de la directiva =, el nombre simblico no puede


redefinirse

EQU no puede utilizarse dentro de una estructura, es decir, entre las


directivas STRUC y ENDS.

Ejemplos:
Columnas

equ

80

Filas

equ

25

Pantalla

equ

filas*columnas

Mover

equ

mov

14.6.17 Directiva EVEN:


Formato:

EVEN

Descripcin: Fuerza al contador de posiciones a un valor par, es decir, a una


frontera de palabra. Si el contador de posiciones ya est en una posicin par, la
directiva EVEN no hace nada, en caso contrario Even aade una instruccin
NOP que ocupa un byte.
Con esta instruccin se asegura que el cdigo o los datos que vienen
detrs de esta sentencia estn en una direccin de memoria par.

1 INGENIERA TCNICA EN INFORMTICA DE GESTIN-EUITI VITORIA


Profesor: Fernando Oterino Echvarri

ESTRUCTURA DE COMPUTADORES I (Captulo 14: DIRECTIVAS)

15/32

14.6.18 Directiva EXITM:


Formato:

EXITM

Descripcin: Esta directiva se usa en el caso en que un bloque MACRO, REPT,


IRP o IRPC, y que como consecuencia de una directiva condicional anterior se
desee finalizar la expansin.
Ejemplo:
Por ejemplo deseamos hacer una macro que sume dos cantidades y deje su
valor en AX en el caso de que la suma sea menor que 9

SUMA

MACRO

valor1,valor2

Mov AX,0000h
if valor1+valor2 GT 9
exitm
else
mov AX,valor1
add AX,valor2
endif
endm
Esta macro realiza la funcin que hemos planteado, y ahora ser
llamada desde el cdigo por ejemplo
ejemplo PROC

FAR

suma 2,3
suma 7,8
ejemplo ENDP
En tiempo de ensamblaje, la instruccin (suma 2,3) ser expandida de la
siguiente forma:
Mov AX,0000h
Mov AX,2
Add AX,3
Sin embargo la instruccin (suma 7,8) ser expandida como:
Mov AX,0000h

1 INGENIERA TCNICA EN INFORMTICA DE GESTIN-EUITI VITORIA


Profesor: Fernando Oterino Echvarri

ESTRUCTURA DE COMPUTADORES I (Captulo 14: DIRECTIVAS)

16/32

14.6.19 Directiva IF
Formato:

IF [condicin]
......
ELSE
......
ENDIF

Descripcin: Las directivas que comienzan por IF son directivas condicionales y


sirven para que el ensamblador incluya o no las sentencias que vienen a
continuacin segn se cumpla o no la condicin. Si la condicin es cierta, se
incluyen las sentencias entre el IF y el ELSE, si la condicin no es cierta, se
incluyen las condiciones entre IF y ENDIF.
El bloque ELSE es opcional, si no lo ponemos, se incluir las sentencias
entre IF y ENDIF en caso de cumplirse la condicin planteada.
La directiva IF se puede anidar, es decir, meter uno o varios IF dentro de
otro IF.
14.6.20 Directiva =
Formato:

nombre = expresin

Descripcin: Asigna un nombre simblico a una expresin.


La expresin puede ser:
!

Una constante numrica.

Una referencia de direccin

Cualquier combinacin de smbolos y operaciones que pueda


evaluarse como valor numrico

Otro nombre simblico.

Observaciones: Esta directiva es similar a EQU, excepto que nombre puede


redefinirse, es decir, puede cambiarse la expresin asociada al nombre.
Ejemplos:
!

Valor = 10

Qwdf = Valor + 1

Wgfw = valor /Qwdf

1 INGENIERA TCNICA EN INFORMTICA DE GESTIN-EUITI VITORIA


Profesor: Fernando Oterino Echvarri

ESTRUCTURA DE COMPUTADORES I (Captulo 14: DIRECTIVAS)

17/32

14.6.21 Directiva INCLUDE


Formato:

INCLUDE nombre_de_fichero

Descripcin: Incluye un fichero de sentencias fuente, este fichero es el indicado


en nombre_de_fichero
Ejemplo
Podemos crear por ejemplo un fichero para guardar los registros AX,BX,CX,DX
en la pila y por ejemplo lo llamaremos guarda.asm con el contenido:
PUSH AX
PUSH BX
PUSH CX
PUSH DX

Y ahora al hacer un programa, si queremos aadir esta secuencia lo haremos


de la siguiente forma:
Include guarda.asm
14.6.22 Directiva IRP
Formato:

IRP nombre,<lista de argumentos>

Descripcin: Hace que el bloque de sentencias contenidas entre IRP y ENDM


se repita una vez para cada argumento, sustituyendo nombre por el
correspondiente argumento
Observaciones:
!

La lista de argumentos debe delimitarse entre los smbolos < y >.

Los argumentos se separan por comas.

Si la lista de argumentos es nula (<>), el bloque de sentencias se


ejecuta una vez eliminando nombre.

El bloque IRP-ENDM no es necesario que resida dentro de una


definicin de macro

Ejemplo:
IRP valor,<1,2,3>
ADD AX,valor
.....
Endm

1 INGENIERA TCNICA EN INFORMTICA DE GESTIN-EUITI VITORIA


Profesor: Fernando Oterino Echvarri

ESTRUCTURA DE COMPUTADORES I (Captulo 14: DIRECTIVAS)

18/32

En este ejemplo se repetiran las instrucciones entre IRP y endm una vez para
valor=1, otra vez para valor=2 y otra vez para valor = 3, y el ensamblador
generar
ADD AX,1
ADD AX,2
ADD AX,3

14.6.23 Directiva IRPC:


Formato:

IRPC nombre,<cadena_de_caracteres>
IRPC nombre,cadena_de_caracteres

Descripcin: Hace que el bloque de sentencias contenidas entre IRPC y ENDM


se repita una vez para cada carcter de la cadena, sustituyendo nombre por
el correspondiente carcter.
Ejemplo:
IRPC valor,<2568>
ADD AX,valor
.....
Endm
En este ejemplo se repetiran las instrucciones entre IRPC y endm una vez para
valor=2, otra vez para valor=5 otra vez para valor = 6 y otra vez para valor = 8,
y el ensamblador generar
ADD AX,2
ADD AX,5
ADD AX,6
ADD AX,8

1 INGENIERA TCNICA EN INFORMTICA DE GESTIN-EUITI VITORIA


Profesor: Fernando Oterino Echvarri

ESTRUCTURA DE COMPUTADORES I (Captulo 14: DIRECTIVAS)

19/32

14.6.24 Directiva .LALL/.SALL/.XALL:


Formato:

.LALL
.SALL
.XALL

Descripcin: Estas directivas controlan la aparicin o no en el listado de salida


del ensamblador de las expansiones de las macros.
.LALL - Lista las macros y sus expansiones
.SALL Suprime el listado de macros y sus expansiones
.XALL Lista slo las sentencias que generan cdigo objeto.
14.6.25 Directiva .LFCOND/.SFCOND/.TFCOND:
Formato:

.LFCOND
.SFCOND
.TFCOND

Descripcin: Estas directivas controlan la aparicin o no en el listado de salida


del ensamblador de los bloques condicionales falsos.
.LFCOND - Lista los bloques asociados a una condicin falsa
.SFCOND Suprime el listado de bloques asociados a una condicin falsa
.TFCOND Invierte el modo de listado de bloques asociados a una condicin
falsa.
14.6.26 Directiva .LIST/.XLIST:
Formato:

.LIST
.XLIST

Descripcin: Estas directivas controlan la generacin o no del listado de salida


del ensamblador
.XLIST Suprime el listado de las sentencias fuente y del cdigo objeto hasta
que se encuentre el prximo .LIST si lo hubiera.
.LIST restaura el listado. Es la opcin por defecto.

1 INGENIERA TCNICA EN INFORMTICA DE GESTIN-EUITI VITORIA


Profesor: Fernando Oterino Echvarri

ESTRUCTURA DE COMPUTADORES I (Captulo 14: DIRECTIVAS)

20/32

14.6.27 Directiva LOCAL:


Formato:

LOCAL etiqueta

Descripcin: Indica al ensamblador las etiquetas que debe cambiar cada vez
que expande una macro. Con ello se evitan las definiciones mltiples de estas
etiquetas.
Si se usa debe ser la primera sentencia del cuerpo de la macro, es decir,
debe ir a continuacin de la directiva MACRO.
Observaciones:
!

LOCAL slo puede usarse dentro de la definicin de una macro.

No se permiten comentarios (ni con comment ni con ;) entre las


directivas macro y local

Los smbolos creados por Assembler para las etiquetas declaradas


con LOCAL son de la forma: 0000 a FFFF

Ejemplo:
esperar MACRO numero
LOCAL seguir
Mov CX,numero
seguir:

LOOP seguir

endm

ejemplo PROC

FAR

include datos.asm
INICIO:

Mov cx,25h

esperar cx
Mov cx,32h
esperar cx
JMP INICIO
MOV AX,4C00h
INT 21H
ejemplo ENDP

1 INGENIERA TCNICA EN INFORMTICA DE GESTIN-EUITI VITORIA


Profesor: Fernando Oterino Echvarri

ESTRUCTURA DE COMPUTADORES I (Captulo 14: DIRECTIVAS)

21/32

14.6.28 Directiva MACRO:


Formato:

nombre MACRO lista de parmetros


.......
.......
ENDM

Descripcin: Esta sentencia es la cabecera que indica el comienzo de una


macro, dicha macro finalizar al encontrar la directiva ENDM. Entre ambas
directivas se incluyen las sentencias que componen el cuerpo de la macro.
La invocacin de la macro se hace por su propio nombre seguido por los
parmetros separados por comas
Al realizar el ensamblado del programa, la invocacin de las macros se
sustituye por el cuerpo de la macro, a este proceso se le llama expansin de la
macro
Observaciones:
!

Pueden existir macros sin parmetros.

El nmero de argumentos en la invocacin no tiene porque coincidir


con el nmero de parmetros que hemos usado al definirla. Si hay
ms argumentos que parmetros, se ignoran los argumentos que
sobran. Si hay menos argumentos que parmetros, los parmetros
que faltan se convierten en nulos.

EL nombre de una macro puede ser el de una directiva o el de una


instruccin. En este caso, se utiliza la definicin de la macro,
sustituyendo el significado normal. Si se utiliza la directiva Purge, se
restaura el significado original.

1 INGENIERA TCNICA EN INFORMTICA DE GESTIN-EUITI VITORIA


Profesor: Fernando Oterino Echvarri

ESTRUCTURA DE COMPUTADORES I (Captulo 14: DIRECTIVAS)

22/32

14.6.29 Directiva ORG:


Formato:

ORG expresin

Descripcin: Pone el contador de posiciones en el valor indicado por expresin.


Observaciones:
!

Es necesario especificar ORG 100h en programas que se vayan a


convertir a tipo .EXE

expresin

puede indicarse mediante el carcter $ que indica el

valor actual del contador de posiciones.


!

ORG no puede usarse dentro de una estructura (bloque STRUCENDS)

Ejemplos:
!

ORG 100h

ORG 200h

ORG $+4

14.6.30 Directiva %OUT:


Formato:

%OUT texto

Descripcin: Esta directiva sirve para escribir un mensaje en pantalla durante el


ensamblaje.
Se suele utilizar para indicar que camino se ha elegido en una condicin

1 INGENIERA TCNICA EN INFORMTICA DE GESTIN-EUITI VITORIA


Profesor: Fernando Oterino Echvarri

ESTRUCTURA DE COMPUTADORES I (Captulo 14: DIRECTIVAS)

23/32

14.6.31 Directiva PAGE:


Formato:

PAGE [operando1][,operando2]

Descripcin: Define la longitud y el tamao de la pgina del listado de salida del


ensamblador. Cada pgina del listado producida por el ensamblador contiene
un nmero de captulo y un nmero de pgina, separados por un guin
El operando1 puede ser:
!

Nmero de lneas por pgina

El signo +, que indica nuevo captulo (se incrementa en 1) y pgina


igual a 1.

Observaciones: Si se usa PAGE sin operandos, se inserta un salto de pgina y


se incrementa en uno el nmero de pgina
El nmero de pgina se incrementa cuando se completa una pgina o
cuando se encuentra PAGE sin operandos.
El nmero de captulo se incrementa slo con PAGE +.
Ejemplos:
!

PAGE

PAGE 88,132 (88 lneas de 132 caracteres)

PAGE 78 (78 lneas de 80 caracteres)

PAGE ,100 (66 lneas de 100 caracteres)

PAGE + (Nuevo captulo)

(66 lneas de 80 caracteres)

1 INGENIERA TCNICA EN INFORMTICA DE GESTIN-EUITI VITORIA


Profesor: Fernando Oterino Echvarri

ESTRUCTURA DE COMPUTADORES I (Captulo 14: DIRECTIVAS)

24/32

14.6.32 Directiva PROC:


Formato:

nombre_procedimiento PROC [atributo]

Descripcin: Indica el comienzo del procedimiento nombre_procedimiento


Un procedimiento es un bloque de instrucciones que sirve para realizar
una tarea determinada y que puede invocarse desde varios puntos del
programa. Puede asemejarse a una subrutina.
Operandos: El atributo puede tomar los valores NEAR o FAR
!

Un procedimiento NEAR slo se puede llamar desde el segmento en


el que esta definido o desde un segmento que tiene el mismo valor
definido en ASSUME CS

Al

llamar

un

procedimiento

NEAR,

se

guarda

slo

el

desplazamiento (valor de IP) de la instruccin siguiente en la pila que


se recupera al retornar de un procedimiento con la instruccin RET.
!

Un procedimiento FAR se puede llamar desde cualquier segmento. Al


llamar a un procedimiento FAR se guarda el segmento y el
desplazamiento de la instruccin siguiente en la pila en este orden,
estos valores se recuperan al retornar del procedimiento con la
instruccin RET

1 INGENIERA TCNICA EN INFORMTICA DE GESTIN-EUITI VITORIA


Profesor: Fernando Oterino Echvarri

ESTRUCTURA DE COMPUTADORES I (Captulo 14: DIRECTIVAS)

25/32

Observaciones: El bloque de sentencias de un procedimiento es:


Nombre_procedimiento PROC atributos
......
........
........
........
nombre_procedimiento ENDS
!

Si se desea que un procedimiento de un modulo sea accesible desde


otros mdulos, debe utilizarse la directiva PUBLIC

PUBLIC Nombre_procedimiento
Nombre_procedimiento PROC atributos
......
........
........
........
RET
nombre_procedimiento ENDS
!

El procedimiento principal de un programa debe ser de tipo FAR

1 INGENIERA TCNICA EN INFORMTICA DE GESTIN-EUITI VITORIA


Profesor: Fernando Oterino Echvarri

ESTRUCTURA DE COMPUTADORES I (Captulo 14: DIRECTIVAS)

26/32

14.6.33 Directiva PUBLIC:


Formato:

PUBLIC smbolo

Descripcin: Permite que los smbolos especificados sean accesibles por otros
mdulos que sern montados conjuntamente, es decir, procesados por el
programa LINK.
Operandos: smbolo puede ser:
!

Un nombre de variable

Una etiqueta, incluidos nombres de procedimientos

Una constante de 16 bits

Observaciones:
!

El mdulo que usa un smbolo definido con PUBLIC debe contener


una sentencia directiva EXTRN.

La sentencia PUBLIC puede aparecer en cualquier posicin del


programa fuente, por orden se recomienda ponerlas la principio.

Ejemplo1:Si lo que quiere es hacer un procedimiento accesible desde otro


mdulo

PUBLIC
PROC1

PROC1

PROC1

PROC
FAR
MOV AX,BX
ADD AX,CX
RET
ENDP

El mdulo que quiere invocar al procedimiento PROC1 hay que incluir


sentencia:
EXTRN

PROC1:FAR

1 INGENIERA TCNICA EN INFORMTICA DE GESTIN-EUITI VITORIA


Profesor: Fernando Oterino Echvarri

la

ESTRUCTURA DE COMPUTADORES I (Captulo 14: DIRECTIVAS)

27/32

Ejemplo2: Si lo que quiere es acceder a una variable desde dos mdulos


distintos. En el mdulo que contiene la variable (por ejemplo VAR1), deben
incluirse las sentencias:
PUBLIC
VAR1 DW

VAR1

El mdulo que usa var1 debe contener


EXTRN var1:WORD

Ejemplo 3:Si lo que se desea es bifurcar a la instruccin de etiqueta ET1 desde


otro mdulo y desde el mismo segmento fsico:
El mdulo que contiene la etiqueta es:
Seg_A segment
Public ET1
..........
..........
..........
ET1: ........... ; se trata de una etiqueta NEAR ya que tiene :
...........
...........
............
Seg_A ends
El mdulo desde el que tiene que bifurcar a ET1 es:
EXTRN
SEG_B

ET1:NEAR

SEGMENT
................
................
JMP ET1
...............
...............

SEG_B

ENDS

Si la bifurcacin a una e3tiqueta de un mdulo se hace desde otro mdulo en


diferente segmento fsico, el proceso ser igual al anterior pero definiendo la
etiqueta como FAR.

1 INGENIERA TCNICA EN INFORMTICA DE GESTIN-EUITI VITORIA


Profesor: Fernando Oterino Echvarri

ESTRUCTURA DE COMPUTADORES I (Captulo 14: DIRECTIVAS)

28/32

14.6.34 Directiva PURGE:


Formato:

PUBLIC nombre de macro

Descripcin: Borra las macros especificadas de las tablas del ensamblador


permitiendo que se reutilice el espacio.
No es necesario purgar una macro antes de redefinirla.
14.6.35 Directiva .RADIX
Formato:

.RADIX expresin

Descripcin: Sirve para cambiar la base de numeracin por defecto. Por


defecto, los nmeros sin sufijo se considera que estn en base 10.
Los sufijos son:
!

b binario

d decimal

o/q octal

h hexadecimal.

Expresin est siempre en base 10, independientemente del valor de la


base de numeracin activa.
Observaciones:
!

.RADIX no afecta a DD, DQ o DT, pues siempre suponen decimal, a


menos que se especifique un sufijo del tipo de datos.

Si se especifica .RADIX 16, hay que tener cuidado con los nmeros
en hexadecimal terminados en D, pues el ensamblador los considera
como valores decimales, en este caso habra que poner el sufijo h.

Ejemplo:
.RADIX 16 Establece base 16
.RADIX 10 Establece base 10
.RADIX 2 Establece base 2
............

1 INGENIERA TCNICA EN INFORMTICA DE GESTIN-EUITI VITORIA


Profesor: Fernando Oterino Echvarri

ESTRUCTURA DE COMPUTADORES I (Captulo 14: DIRECTIVAS)

29/32

14.6.36 Directiva REPT


Formato:

REPT Expresin

Descripcin: Hace que el bloque de sentencias entre REPT y ENDM se repitan


el nmero de veces que indica la expresin.
El bloque REPT-ENDM no es necesario que resida dentro de una
definicin de macro
Ejemplo 1:
Reservar cinco palabras inicializadas respectivamente con los cuadrados de los
cinco primeros nmeros naturales.
N=0
REPT 5
N=N+1
DW N*N
ENDM
El ensamblador generar:
DW 1
DW 4
DW 9
DW 16
DW 25

14.6.37 Directiva SEGMENT


Formato:

Nombre SEGMENT [Alineamiento] [Combinacin] [clase]


........
........
nombre ENDS

Descripcin: Indica el comienzo del segmento nombre, el final de dicho


segmento se indica con la directiva ENDS, y el nombre de ambas directivas
debe ser el mismo.
Un segmento es un bloque de sentencias que puede contener:
!

Definicin de variables

Instrucciones

Combinacin de las anteriores

1 INGENIERA TCNICA EN INFORMTICA DE GESTIN-EUITI VITORIA


Profesor: Fernando Oterino Echvarri

ESTRUCTURA DE COMPUTADORES I (Captulo 14: DIRECTIVAS)

30/32

Un mdulo fuente ensamblador puede ser:


!

Parte de un segmento

Un segmento

Partes de varios segmentos

Varios segmentos

Una combinacin de los anteriores.

Existen cuatro tipos de segmentos que son: de datos (DS), de


cdigo(CS), de pila(SS) y extra (ES).

En el alineamiento podemos indicar una de las siguientes opciones:


!

BYTE: ninguno, el segmento puede comenzar en cualquier posicin.

WORD: El segmento empieza en una frontera de palabra, es decir,


su direccin es mltiplo de 2.

PARA: El segmento empieza en una frontera de prrafo, es decir, su


direccin es mltiplo de 16, Es el alineamiento por defecto

PAGE: El alineamiento empieza en una frontera de pgina; es decir,


su direccin es mltiplo de 256.

En la combinacin podemos indicar una de las siguientes opciones:


!

Si no se indica los segmentos se colocarn uno tras otro fsicamente,


pero nivel lgico sern independientes usando cada uno de ellos una
base y un offset.

PUBLIC: El segmento se concatenar a otros del mismo nombre en


la fase de montaje LINK. El nombre de segmento que reconoce el
montador es clase

AT expresin: El segmento se ubicar en la direccin cuyo segmento


es expresin. Esta direccin no se usa para la carga del segmento
en una direccin fija. Lo que si se permite es que se definan variables
dentro del segmento. Normalmente se usa para referenciar zonas de
memoria, como los vectores de interrupcin o la memoria ROM.

1 INGENIERA TCNICA EN INFORMTICA DE GESTIN-EUITI VITORIA


Profesor: Fernando Oterino Echvarri

ESTRUCTURA DE COMPUTADORES I (Captulo 14: DIRECTIVAS)

31/32

STACK: Define este segmento como pila (stack). La pila es una zona
de memoria que se utiliza para almacenar datos de forma temporal y
se maneja con las instrucciones: PUSH, POP, PUSHF, POPF, CALL,
RET, INT e IRET. Al menos debe haber un segmento de pila para
crear un mdulo ejecutable con el montador link.

MEMORY: El segmento se ubicar en una zona de memoria superior


a la de los otros que aparecen durante el montaje del programa. Slo
puede haber un segmento de este tipo, si hubiera varios, slo se
procesara el primero como Memory y el resto como Common

clase es el nombre que se utiliza para agrupar segmentos en fase de


montaje linker y se especifica entre comillas simples.

Pueden existir segmentos anidados, uno dentro de otro. En este caso, el


ensamblador los procesa como si no lo fueran juntando la primera parte del
segmento partido con la segunda.

No se permiten segmentos que se solapen a excepcin del alineamiento


common

14.6.38 Directiva SUBTTL


Formato:

SUBTTL texto

Descripcin: Especifica un subttulo que aparecer en el listado como segunda


lnea de cada pgina, detrs del ttulo.
Observaciones:
-

Se puede especificar cualquier nmero de sentencias SUBTTL por


mdulo.

Si no se utiliza ninguna sentencia SUBTTL, la segunda lnea del


listado aparecer en blanco.

Si despus de usar SUBTTL texto se desea que vuelva a salir en


blanco se usa esta misma directiva sin indicar texto alguno.

1 INGENIERA TCNICA EN INFORMTICA DE GESTIN-EUITI VITORIA


Profesor: Fernando Oterino Echvarri

ESTRUCTURA DE COMPUTADORES I (Captulo 14: DIRECTIVAS)

32/32

14.6.39 Directiva TITLE


Formato:

TITLE texto

Descripcin: Especifica un ttulo que aparecer en el listado como primera lnea


en cada pgina. La longitud mxima del texto son 60 caracteres.
Observaciones:
Slo se puede especificar una sentencia TITTLE por mdulo
Los seis primeros caracteres de texto se utilizan como nombre del mdulo
objeto, a menos que se haya incluido la directiva NAME
Si no se usa ni TITTLE ni NAME el nombre del mdulo objeto es el mismo que
el del mdulo fuente.

1 INGENIERA TCNICA EN INFORMTICA DE GESTIN-EUITI VITORIA


Profesor: Fernando Oterino Echvarri