Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
DB = Definir byte.
DW = Definir palabra.
DT = Definir 10 bytes.
2/32
Definicin de bloques:
!
3/32
Formato de listado:
!
LISTADO DE MACROS:
!
CONTROL DE LISTADO
!
COMENTARIOS
!
MENSAJES
!
COMMENT = Comentario.
4/32
5/32
Mov Dato,4444h
Mov AX,1234h
Mov BX,5678h
Suma CX,AX,BX
Suma DX,CX,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
6/32
DEFINICIN DE MACROS
!
OPERADORES DE MACROS
!
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:
!
Ejemplo:
Ejem1 MACRO X,cond
Et1&X
push BX
Mov BX,&X
J&cond et&x
ENDM
7/32
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
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*
9/32
.CREF
.XCREF
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:
!
00h = 0 (mnimo)
FF
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
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:
!
00000000h = 0 (mnimo)
11/32
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:
!
0000000000000000h = 0 (mnimo)
FFFFFFFFFFFFFFFFh
18.446.774.073.709.551.615
(mximo)
!
La doble palabra AFEBCD4587236954 se almacenar como 54, 69, 23, 87, 45,
CD, EB, AF.
12/32
Es equivalente a :
Wuh DB
00h,4 DUP(),01h,23h,45h,67h,89h
Descripcin: Reserva diez bytes de memoria para una variable de tipo palabra
Operandos: -Expresin es el valor inicial de la variable, y puede ser:
!
0000h = 0 (mnimo)
13/32
END [expresin]
ENDM
nombre_segmento ENDS
Nombre_estructura ENDS
14/32
Observaciones:
!
Ejemplos:
Columnas
equ
80
Filas
equ
25
Pantalla
equ
filas*columnas
Mover
equ
mov
EVEN
15/32
EXITM
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
16/32
14.6.19 Directiva IF
Formato:
IF [condicin]
......
ELSE
......
ENDIF
nombre = expresin
Valor = 10
Qwdf = Valor + 1
17/32
INCLUDE nombre_de_fichero
Ejemplo:
IRP valor,<1,2,3>
ADD AX,valor
.....
Endm
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
IRPC nombre,<cadena_de_caracteres>
IRPC nombre,cadena_de_caracteres
19/32
.LALL
.SALL
.XALL
.LFCOND
.SFCOND
.TFCOND
.LIST
.XLIST
20/32
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:
!
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
21/32
22/32
ORG expresin
expresin
Ejemplos:
!
ORG 100h
ORG 200h
ORG $+4
%OUT texto
23/32
PAGE [operando1][,operando2]
PAGE
24/32
Al
llamar
un
procedimiento
NEAR,
se
guarda
slo
el
25/32
PUBLIC Nombre_procedimiento
Nombre_procedimiento PROC atributos
......
........
........
........
RET
nombre_procedimiento ENDS
!
26/32
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
Observaciones:
!
PUBLIC
PROC1
PROC1
PROC1
PROC
FAR
MOV AX,BX
ADD AX,CX
RET
ENDP
PROC1:FAR
la
27/32
VAR1
ET1:NEAR
SEGMENT
................
................
JMP ET1
...............
...............
SEG_B
ENDS
28/32
.RADIX expresin
b binario
d decimal
o/q octal
h hexadecimal.
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
............
29/32
REPT Expresin
Definicin de variables
Instrucciones
30/32
Parte de un segmento
Un segmento
Varios segmentos
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.
SUBTTL texto
32/32
TITLE texto