ESTRUCTURA DE COMPUTADORES I (Capítulo 14: DIRECTIVAS) 1/32 14-DIRECTIVAS



Documentos relacionados
62/8&,21(6$/(;$0(1'( /$%25$725,2'((6758&785$6'(/26&20387$'25(6 &8562)(%5(52

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

Apuntes de ACCESS. Apuntes de Access. Campos de Búsqueda:

Modulo 1 El lenguaje Java

6-REGISTROS DEL 8086 Y DEL 80286

La ventana de Microsoft Excel

Centro de Capacitación en Informática

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

!!!!!!!! !!!!! Práctica!4.! Programación!básica!en!C.! ! Grado!en!Ingeniería!!en!Electrónica!y!Automática!Industrial! ! Curso!2015H2016!

PRACTICA #1. Aprender a programar una interrupción software empleando C y/o Ensamblador.

Introducción al NASM. Convenciones de colores

Operación de Microsoft Word

Funciones en Excel (II)

TEMA 1: SISTEMAS INFORMÁTICOS. Parte 2: representación de la información

SOLUCIÓN CASO GESTIÓN DE PERSONAL I

Los sistemas de numeración se clasifican en: posicionales y no posicionales.

Operación Microsoft Access 97

INFORMÁTICA. Práctica 5. Programación en C. Grado en Ingeniería en Electrónica y Automática Industrial. Curso v1.0 (05.03.

Sistemas de numeración

by Tim Tran:

Ejemplos de conversión de reales a enteros

CONSULTAS DE RESUMEN SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Roberto Quejido Cañamero

SISTEMAS NUMERICOS. Ing. Rudy Alberto Bravo

Operación de Microsoft Word

Visual Basic 1. Empleo de módulos y Procedimientos. Procedimientos definidos por el usuario

Matemática de redes Representación binaria de datos Bits y bytes

Capítulo 0. Introducción.

... Formas alternativas de escribir un texto. Columnas. anfora CAPÍTULO 4

SISTEMAS DE NUMERACIÓN. Sistema decimal

21/02/2012. Agenda. Unidad Central de Procesamiento (CPU)


SOLUCIÓN CASO GESTIÓN DE COMPRAS

Materia: Informática. Nota de Clases Sistemas de Numeración

8 millares + 2 centenas + 4 decenas + 5 unidades + 9 décimos + 7 céntimos

Conciliación bancaria en CheqPAQ Cargado de estado de cuenta

Instructivo de Microsoft Excel 2003

Curso PHP Módulo 1 R-Luis

SOLUCION EXAMEN junio 2006

CAPÍTULO IV BREVE DESCRIPCIÓN DE LA INFRAESTRUCTURA DE CÓMPUTO VISUAL BASIC 6.0 PARA WINDOWS

Creación de Funciones de Conducción

Para crear una lista como la anterior, primero escribe la información, y después selecciona el texto y aplícale el formato de viñetas.

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

MANUAL DE LA APLICACIÓN DE ENVÍO DE SMS

UNIDADES DE ALMACENAMIENTO DE DATOS

GESTINLIB GESTIÓN PARA LIBRERÍAS, PAPELERÍAS Y KIOSCOS DESCRIPCIÓN DEL MÓDULO DE KIOSCOS

A continuación se describen cuáles son los elementos principales de las tablas, cómo crear una y cómo modificarla.

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

Kaldeera Advanced Forms 2009 Guía del usuario

MATERIAL 2 EXCEL 2007

Anexo B. Comunicaciones entre mc y PC

Unidad de trabajo 2: INFORMÁTICA BÁSICA (primera parte)

MANUAL COPIAS DE SEGURIDAD

SIIGO Pyme. Templates. Cartilla I

TALLER #5 ACCESS CONSULTAS. objeto Consulta en la vista lateral izquierda de la ventana Base de datos. Aparece esta ventana.

EDWIN KÄMMERER ORCASITA INGENIERO ELECTRÓNICO

Imprimir códigos de barras

DESARROLLO DE HABILIDADES DEL PENSAMIENTO LÓGICO

Lección 1. Representación de números

GENERACION DE CASHFLOW

Tema 2. Diseño del repertorio de instrucciones

SISTEMAS DE NUMERACIÓN. Sistema de numeración decimal: = =8245,97

Práctica de laboratorio Uso de la Calculadora de Windows con direcciones de red

Manual de Procedimiento

Sobre la lectura y escritura de datos en FORTRAN.

Estructuras de Datos y Algoritmos Tecnólogo en Informática

EDICIÓN Y FORMATO (II)

Trey-SAT Pag. 1. Manual de usuario

Conceptos básicos: 1,2 puntos

Práctica 3: Funciones

Manual Ingreso Notas y Acta Electrónica

Laboratorio de capitulo 5

ZCARTAS: Iniciación a la suma y resta de números enteros Introducción Actividad 1: Escenario con cartas numeradas desde -2 hasta 2...

Consultas con combinaciones

Capítulo 9. Archivos de sintaxis

Introducción a PHP. * No es necesario declarar previamente las variables.

Base de datos en Excel

CCNA Discovery Networking para el hogar y pequeñas empresas

2.1.- EJEMPLO DE UN PROGRAMA FORTRAN

TEMA 2 WINDOWS XP Lección 4 BLOC DE NOTAS

Programa Presupuestos de Sevillana de Informática.

OBTENER DATOS EXTERNOS

Apellidos Nombre DNI

MANUAL DE USUARIO Y EJEMPLO DE UTILIZACIÓN HERRAMIENTA DLP-DELPHI LEARNING PACKAGE

Tutorial Básico de vbscript

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

Hacer clic sobre la figura, para extraer todos los registros o presionar la tecla F2.

Uso del programa CALC

Formularios. Formularios Diapositiva 1

Figura 1.1. Figura 1.2

Capítulo 1 Documentos HTML5

EJERCICIOS DEL TEMA 1

INTRODUCCION A LA PROGRAMACION DE PLC

GENERACIÓN DE ANTICIPOS DE CRÉDITO

SISTEMAS DE NUMERACIÓN

1. DML. Las subconsultas

Cómo creo las bandejas del Registro de Entrada /Salida y de Gestión de Expedientes?

USO DEL COMANDO. Fdisk. Autor :. Alejandro Curquejo. Recopilación :. Agustí Guiu i Ribera. Versión :.. 1.0

Entorno de Ejecución del Procesador Intel Pentium

TEMA 2: Representación de la Información en las computadoras

Transcripción:

ESTRUCTURA DE COMPUTADORES I (Capítulo 14: DIRECTIVAS) 1/32 14-DIRECTIVAS 14.1 INTRODUCCIÓN: 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 categorías_! Definición de símbolos: Sirven para asignar nombres simbólicos a expresiones! EQU = Asigna un símbolo a una expresión fija.! = = Asigna un símbolo a una expresión variable.! Definición 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 cuádruple palabra.! DT = Definir 10 bytes.! Referencias Externas: Hacen referencia a información que se encuentra en módulos o ficheros distintos.! PUBLIC = Definir símbolo público.! EXTRN = Definir símbolo externo! INCLUDE = Incluir fichero fuente.

ESTRUCTURA DE COMPUTADORES I (Capítulo 14: DIRECTIVAS) 2/32! Control del ensamblador:! END = Fin del módulo fuente.! ORIGIN = Origen de código o datos! EVEN= Poner contador de posiciones en número par.!.radix = Base de numeración por defecto.! Definición 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.! Definición de bloques:! GROUP = Agrupar segmentos.! NAME = Nombre de un módulo.! 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 según una condición sea cierta o falsa. Estas directivas son del tipo Ifxxx else endif con la siguiente estructura: IF [condición]...... ELSE...... ENDIF

ESTRUCTURA DE COMPUTADORES I (Capítulo 14: DIRECTIVAS) 3/32 14.4 DIRECTIVAS DE LISTADO: Indican al ensamblador la información a obtener en el listado de salida y el formato de esta información.! Formato de listado:! PAGE = Formato de la página de listado.! TITLE = Título del listado.! SUBTTL = Subtítulo de listado.! LISTADO DE MACROS:! LALL = Listar macros y expansiones.! SALL = Suprimir el listado de las macros y de las expansiones.! XALL = Listar sólo las macros que generan código objeto.! CONTROL DE LISTADO!.XCREF = Suprimir referencia cruzadas.!.cref = Restaurar listado de referencias cruzadas.!.xlist = Suprimir listado ensamblador.!.list = Restaurar listado ensamblador.! COMENTARIOS! COMMENT = Comentario.! MENSAJES! %OUT = Emitir mensaje durante el ensamblaje.! CONTROL DEL LISTADO DE LOS BLOQUES ASOCIADOS A UNA CONDICIÓN FALSA!.LFCOND = Listar bloques asociados a una condición falsa.!.sfcond = Suprimir el listado de los bloques asociados a una condición falsa!.tfcond = Invertir el modo de listado de los bloques asociados a una condición falsa.

ESTRUCTURA DE COMPUTADORES I (Capítulo 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 parámetros. Esto sólo ocurre en tiempo de programación, porque al ensamblar el fichero, dichas macros se expanden dentro del código. A este proceso se le llama expansión de la macro y tiene lugar en todos los puntos del programa donde se utilice la macro, por ello se recomienda que el tamaño de estas macros sea pequeño. 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 líneas sucesivas se colocarán las instrucciones de la macro, pudiéndose colocar como operandos de ellas los parámetros 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

ESTRUCTURA DE COMPUTADORES I (Capítulo 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 más de una vez, aparecería la etiqueta en varias partes del programa, produciéndose un error. La forma de solucionar este inconveniente es utilizando las etiquetas locales. Las cuales tienen vigencia únicamente dentro de la expansión de la macro, no existiendo fuera de ellas y permitiendo por tanto, su utilización repetida. Las etiquetas locales se definen mediante la directiva LOCAL, seguidas de los nombres de las etiquetas separados por comas

ESTRUCTURA DE COMPUTADORES I (Capítulo 14: DIRECTIVAS) 6/32 Las directivas de macros se dividen en dos categorías:! DEFINICIÓN DE MACROS! MACRO = Comienzo de macro.! ENDM = Fin de macro.! LOCAL = Define etiquetas dentro de una macro! EXITM = Terminar expansión de la macro.! PURGE = Borrar las macros de la memoria.! REPT = Repetir bloque de sentencias un número de veces.! IRP = Repetir bloque de sentencias con un valor cada vez.! IRPC = Repetir bloque de sentencias con un carácter cada vez.! OPERADORES DE MACROS! & = Operador que concatena textos o símbolos! ;; = Operador para comentarios que no aparecen en la expansión!! = Operador para interpretar carácter en sentido literal! % = Operador para convertir una expresión en un número. 14.6 DIRECTIVAS : 14.6.1 Directiva &: Formato: texto&texto Descripción: Es un operador que se utiliza dentro de la definición de una macro para concatenar textos o símbolos. Observaciones:! Si se utiliza un parámetro de la macro dentro de una cadena de caracteres (entre comillas) debe ir precedido por el carácter &, para que sea sustituido en la expansión de la macro.! Para formar un símbolo a partir de un texto y un parámetro 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

ESTRUCTURA DE COMPUTADORES I (Capítulo 14: DIRECTIVAS) 7/32 Cuando en el programa coloquemos por ejemplo Ejem1 A,GE, al ensamblar la expansión quedará: Et1A push BX Mov BX, A JGE Et1A 14.6.2 Directiva ;; Formato: ;; texto Descripción: Es un operador que se utiliza dentro de la definición de una macro para insertar comentarios que no se desea que aparezcan en la expansión incluso usando la directiva.lall. Observaciones: Los comentarios precedidos por un (;) aparecerán en la expansiones. 14.6.3 Directiva!: Formato:!Carácter Descripción: Es un operador que se utiliza dentro de la definición de una macro para indicar que el carácter que viene a continuación debe interpretarse de forma literal, y no como símbolo. Observaciones: Las entradas!x y <x> son equivalentes Ejemplo: Macro1 macro x Mov ax,x Macro2!x Endm Macro2 macro y Push Y Endm

ESTRUCTURA DE COMPUTADORES I (Capítulo 14: DIRECTIVAS) 8/32 14.6.4 Directiva %: Formato: %Expresión Descripción: Es un operador de macro que sirve para convertir una expresión a un número en la base de numeración 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 Descripción: Permite insertar comentarios en el programa sin tener que especificar ; en cada línea. El primer carácter no blanco actúa como delimitador inicial del comentario. El delimitador final es otro carácter 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 líneas......... fin del comentario*

ESTRUCTURA DE COMPUTADORES I (Capítulo 14: DIRECTIVAS) 9/32 14.6.6 Directiva.CREF/.XCREF: Formato:.CREF.XCREF Descripción:.XCREF suprime el listado de las referencias cruzadas hasta que encuentre un.cref.cref Restaura el listado de referencias cruzadas, esta opción es por defecto Observaciones: Las referencias cruzadas se utilizan como ayuda en la depuración de un programa. Consta de un listado de los símbolos y números de líneas donde es referenciado o definido. 14.6.7 Directiva DB: Formato: [nombre de variable] DB expresión Descripción: 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: - Expresión es el valor inicial de la variable, y puede ser:! Una constante positiva o negativa o expresión de constantes! El rango de constantes con signo es:! 80h = -128 (mínimo)! 7Fh = 127 (máximo)! El rango de constantes con signo es:! 00h = 0 (mínimo)! FF! El signo? indica indefinición del valor! Una cadena de caracteres delimitada por comillas simples o dobles! N1 DUP(n2) indica que la expresión n2 se repite n1 veces, a su vez n2 puede tener otro u otros DUP.

ESTRUCTURA DE COMPUTADORES I (Capítulo 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 expresión Descripción: Reserva memoria para una variable de tipo doble palabra (2 palabras = 4 bytes = 32 bits). Operandos: - Expresión es el valor inicial de la variable, y puede ser:! Una constante positiva o negativa o expresión de constantes! El rango de constantes con signo es:! 80000000h = -2.147.483.648 (mínimo)! 7FFFFFFFh = 2.147.483.647 (máximo)! El rango de constantes con signo es:! 00000000h = 0 (mínimo)! FFFFFFFFh = 4.294.967.295 (máximo)! El signo? indica indefinición del valor! Una cadena de caracteres delimitada por comillas simples o dobles N1 DUP(n2) indica que la expresión 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.

ESTRUCTURA DE COMPUTADORES I (Capítulo 14: DIRECTIVAS) 11/32 14.6.9 Directiva DQ: Formato: [nombre de variable] DQ expresión Descripción: Reserva memoria para una variable de tipo cuádruple palabra (4 palabras = 8 bytes = 64 bits). Operandos: - Expresión es el valor inicial de la variable, y puede ser:! Una constante positiva o negativa o expresión de constantes! El rango de constantes con signo es:! 8000000000000000h = -9.223.372.036.854.775.808 (mínimo)! 7FFFFFFFFFFFFFFh = 9.223.372.036.854.775.807 (máximo)! El rango de constantes con signo es:! 0000000000000000h = 0 (mínimo)! FFFFFFFFFFFFFFFFh = 18.446.774.073.709.551.615 (máximo)! El signo? indica indefinición del valor! Una cadena de caracteres delimitada por comillas simples o dobles N1 DUP(n2) indica que la expresión 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.

ESTRUCTURA DE COMPUTADORES I (Capítulo 14: DIRECTIVAS) 12/32 14.6.10 Directiva DT: Formato: [nombre de variable] DT expresión. Descripción: Reserva diez bytes de memoria para almacenar dígitos decimales empaquetados (dos dígitos 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 expresión. Descripción: Reserva diez bytes de memoria para una variable de tipo palabra Operandos: - Expresión es el valor inicial de la variable, y puede ser:! Una constante positiva o negativa o expresión de constantes! El rango de constantes con signo es:! 8000h = -32.768 (mínimo)! 7FFFh = 32.768 (máximo)! El rango de constantes con signo es:! 0000h = 0 (mínimo)! FFFFh = 65.535 (máximo)! El signo? indica indefinición del valor! El desplazamiento offset de una variable.! Una cadena de caracteres delimitada por comillas simples o dobles N1 DUP(n2) indica que la expresión 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)

ESTRUCTURA DE COMPUTADORES I (Capítulo 14: DIRECTIVAS) 13/32 14.6.12 Directiva END: Formato: END [expresión] Descripción: Indica el final del programa fuente. El operando expresión indica la dirección de comienzo del programa fuente. Normalmente se especifica una etiqueta. 14.6.13 Directiva ENDM: Formato: ENDM Descripción: Indica el final de una de las directivas siguientes: MACRO, REPT, IRP, IRPC. 14.6.14 Directiva ENDP: Formato: nombre_procedimiento ENDP [expresión] Descripción: Indica el final del procedimiento. 14.6.15 Directiva ENDS: Formato: nombre_segmento ENDS Nombre_estructura ENDS Descripción: Indica el final de un segmento o de una estructura. 14.6.16 Directiva EQU: Formato: nombre EQU expresión Descripción: Asigna un nombre simbólico al valor de una expresión. La expresión puede ser:! Una constante numérica.! Una referencia de dirección.! Cualquier combinación de símbolos y operaciones que pueda evaluarse como valor numérico.! Otro nombre simbólico.

ESTRUCTURA DE COMPUTADORES I (Capítulo 14: DIRECTIVAS) 14/32 Observaciones:! Al contrario de la directiva =, el nombre simbólico 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 Descripción: 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 posición par, la directiva EVEN no hace nada, en caso contrario Even añade una instrucción NOP que ocupa un byte. Con esta instrucción se asegura que el código o los datos que vienen detrás de esta sentencia están en una dirección de memoria par.

ESTRUCTURA DE COMPUTADORES I (Capítulo 14: DIRECTIVAS) 15/32 14.6.18 Directiva EXITM: Formato: EXITM Descripción: 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 expansión. 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 función que hemos planteado, y ahora será llamada desde el código por ejemplo ejemplo PROC FAR suma 2,3 suma 7,8 ejemplo ENDP En tiempo de ensamblaje, la instrucción (suma 2,3) será expandida de la siguiente forma: Mov AX,0000h Mov AX,2 Add AX,3 Sin embargo la instrucción (suma 7,8) será expandida como: Mov AX,0000h

ESTRUCTURA DE COMPUTADORES I (Capítulo 14: DIRECTIVAS) 16/32 14.6.19 Directiva IF Formato: IF [condición]... ELSE... ENDIF Descripción: Las directivas que comienzan por IF son directivas condicionales y sirven para que el ensamblador incluya o no las sentencias que vienen a continuación según se cumpla o no la condición. Si la condición es cierta, se incluyen las sentencias entre el IF y el ELSE, si la condición 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 condición planteada. La directiva IF se puede anidar, es decir, meter uno o varios IF dentro de otro IF. 14.6.20 Directiva = Formato: nombre = expresión Descripción: Asigna un nombre simbólico a una expresión. La expresión puede ser:! Una constante numérica.! Una referencia de dirección! Cualquier combinación de símbolos y operaciones que pueda evaluarse como valor numérico! Otro nombre simbólico. Observaciones: Esta directiva es similar a EQU, excepto que nombre puede redefinirse, es decir, puede cambiarse la expresión asociada al nombre. Ejemplos:! Valor = 10! Qwdf = Valor + 1! Wgfw = valor /Qwdf

ESTRUCTURA DE COMPUTADORES I (Capítulo 14: DIRECTIVAS) 17/32 14.6.21 Directiva INCLUDE Formato: INCLUDE nombre_de_fichero Descripción: 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 añadir esta secuencia lo haremos de la siguiente forma: Include guarda.asm 14.6.22 Directiva IRP Formato: IRP nombre,<lista de argumentos> Descripción: 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 símbolos < 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 definición de macro Ejemplo: IRP valor,<1,2,3> ADD AX,valor... Endm

ESTRUCTURA DE COMPUTADORES I (Capítulo 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 Descripción: Hace que el bloque de sentencias contenidas entre IRPC y ENDM se repita una vez para cada carácter de la cadena, sustituyendo nombre por el correspondiente carácter. 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

ESTRUCTURA DE COMPUTADORES I (Capítulo 14: DIRECTIVAS) 19/32 14.6.24 Directiva.LALL/.SALL/.XALL: Formato:.LALL.SALL.XALL Descripción: Estas directivas controlan la aparición 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 sólo las sentencias que generan código objeto. 14.6.25 Directiva.LFCOND/.SFCOND/.TFCOND: Formato:.LFCOND.SFCOND.TFCOND Descripción: Estas directivas controlan la aparición o no en el listado de salida del ensamblador de los bloques condicionales falsos..lfcond - Lista los bloques asociados a una condición falsa.sfcond Suprime el listado de bloques asociados a una condición falsa.tfcond Invierte el modo de listado de bloques asociados a una condición falsa. 14.6.26 Directiva.LIST/.XLIST: Formato:.LIST.XLIST Descripción: Estas directivas controlan la generación o no del listado de salida del ensamblador.xlist Suprime el listado de las sentencias fuente y del código objeto hasta que se encuentre el próximo.list si lo hubiera..list restaura el listado. Es la opción por defecto.

ESTRUCTURA DE COMPUTADORES I (Capítulo 14: DIRECTIVAS) 20/32 14.6.27 Directiva LOCAL: Formato: LOCAL etiqueta Descripción: Indica al ensamblador las etiquetas que debe cambiar cada vez que expande una macro. Con ello se evitan las definiciones múltiples de estas etiquetas. Si se usa debe ser la primera sentencia del cuerpo de la macro, es decir, debe ir a continuación de la directiva MACRO. Observaciones:! LOCAL sólo puede usarse dentro de la definición de una macro.! No se permiten comentarios (ni con comment ni con ;) entre las directivas macro y local! Los símbolos 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

ESTRUCTURA DE COMPUTADORES I (Capítulo 14: DIRECTIVAS) 21/32 14.6.28 Directiva MACRO: Formato: nombre MACRO lista de parámetros...... ENDM Descripción: 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 invocación de la macro se hace por su propio nombre seguido por los parámetros separados por comas Al realizar el ensamblado del programa, la invocación de las macros se sustituye por el cuerpo de la macro, a este proceso se le llama expansión de la macro Observaciones:! Pueden existir macros sin parámetros.! El número de argumentos en la invocación no tiene porque coincidir con el número de parámetros que hemos usado al definirla. Si hay más argumentos que parámetros, se ignoran los argumentos que sobran. Si hay menos argumentos que parámetros, los parámetros que faltan se convierten en nulos.! EL nombre de una macro puede ser el de una directiva o el de una instrucción. En este caso, se utiliza la definición de la macro, sustituyendo el significado normal. Si se utiliza la directiva Purge, se restaura el significado original.

ESTRUCTURA DE COMPUTADORES I (Capítulo 14: DIRECTIVAS) 22/32 14.6.29 Directiva ORG: Formato: ORG expresión Descripción: Pone el contador de posiciones en el valor indicado por expresión. Observaciones:! Es necesario especificar ORG 100h en programas que se vayan a convertir a tipo.exe! expresión puede indicarse mediante el carácter $ que indica el valor actual del contador de posiciones.! ORG no puede usarse dentro de una estructura (bloque STRUC- ENDS) Ejemplos:! ORG 100h! ORG 200h! ORG $+4 14.6.30 Directiva %OUT: Formato: %OUT texto Descripción: Esta directiva sirve para escribir un mensaje en pantalla durante el ensamblaje. Se suele utilizar para indicar que camino se ha elegido en una condición

ESTRUCTURA DE COMPUTADORES I (Capítulo 14: DIRECTIVAS) 23/32 14.6.31 Directiva PAGE: Formato: PAGE [operando1][,operando2] Descripción: Define la longitud y el tamaño de la página del listado de salida del ensamblador. Cada página del listado producida por el ensamblador contiene un número de capítulo y un número de página, separados por un guión El operando1 puede ser:! Número de líneas por página! El signo +, que indica nuevo capítulo (se incrementa en 1) y página igual a 1. Observaciones: Si se usa PAGE sin operandos, se inserta un salto de página y se incrementa en uno el número de página El número de página se incrementa cuando se completa una página o cuando se encuentra PAGE sin operandos. El número de capítulo se incrementa sólo con PAGE +. Ejemplos:! PAGE (66 líneas de 80 caracteres)! PAGE 88,132 (88 líneas de 132 caracteres)! PAGE 78 (78 líneas de 80 caracteres)! PAGE,100 (66 líneas de 100 caracteres)! PAGE + (Nuevo capítulo)

ESTRUCTURA DE COMPUTADORES I (Capítulo 14: DIRECTIVAS) 24/32 14.6.32 Directiva PROC: Formato: nombre_procedimiento PROC [atributo] Descripción: 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 sólo 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 a un procedimiento NEAR, se guarda sólo el desplazamiento (valor de IP) de la instrucción siguiente en la pila que se recupera al retornar de un procedimiento con la instrucción 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 instrucción siguiente en la pila en este orden, estos valores se recuperan al retornar del procedimiento con la instrucción RET

ESTRUCTURA DE COMPUTADORES I (Capítulo 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 módulos, 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

ESTRUCTURA DE COMPUTADORES I (Capítulo 14: DIRECTIVAS) 26/32 14.6.33 Directiva PUBLIC: Formato: PUBLIC símbolo Descripción: Permite que los símbolos especificados sean accesibles por otros módulos que serán montados conjuntamente, es decir, procesados por el programa LINK. Operandos: símbolo puede ser:! Un nombre de variable! Una etiqueta, incluidos nombres de procedimientos! Una constante de 16 bits Observaciones:! El módulo que usa un símbolo definido con PUBLIC debe contener una sentencia directiva EXTRN.! La sentencia PUBLIC puede aparecer en cualquier posición del programa fuente, por orden se recomienda ponerlas la principio. Ejemplo1:Si lo que quiere es hacer un procedimiento accesible desde otro módulo PUBLIC PROC1 PROC1 PROC FAR MOV AX,BX ADD AX,CX RET PROC1 ENDP El módulo que quiere invocar al procedimiento PROC1 hay que incluir la sentencia: EXTRN PROC1:FAR

ESTRUCTURA DE COMPUTADORES I (Capítulo 14: DIRECTIVAS) 27/32 Ejemplo2: Si lo que quiere es acceder a una variable desde dos módulos distintos. En el módulo que contiene la variable (por ejemplo VAR1), deben incluirse las sentencias: PUBLIC VAR1 VAR1 DW 0 El módulo que usa var1 debe contener EXTRN var1:word Ejemplo 3:Si lo que se desea es bifurcar a la instrucción de etiqueta ET1 desde otro módulo y desde el mismo segmento físico: El módulo que contiene la etiqueta es: Seg_A segment Public ET1......... ET1:... ; se trata de una etiqueta NEAR ya que tiene :......... Seg_A ends El módulo desde el que tiene que bifurcar a ET1 es: EXTRN ET1:NEAR SEG_B SEGMENT...... JMP ET1...... SEG_B ENDS Si la bifurcación a una e3tiqueta de un módulo se hace desde otro módulo en diferente segmento físico, el proceso será igual al anterior pero definiendo la etiqueta como FAR.

ESTRUCTURA DE COMPUTADORES I (Capítulo 14: DIRECTIVAS) 28/32 14.6.34 Directiva PURGE: Formato: PUBLIC nombre de macro Descripción: 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 expresión Descripción: Sirve para cambiar la base de numeración por defecto. Por defecto, los números sin sufijo se considera que están en base 10. Los sufijos son:! b binario! d decimal! o/q octal! h hexadecimal. Expresión está siempre en base 10, independientemente del valor de la base de numeración 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 números en hexadecimal terminados en D, pues el ensamblador los considera como valores decimales, en este caso habría que poner el sufijo h. Ejemplo:.RADIX 16 Establece base 16.RADIX 10 Establece base 10.RADIX 2 Establece base 2...

ESTRUCTURA DE COMPUTADORES I (Capítulo 14: DIRECTIVAS) 29/32 14.6.36 Directiva REPT Formato: REPT Expresión Descripción: Hace que el bloque de sentencias entre REPT y ENDM se repitan el número de veces que indica la expresión. El bloque REPT-ENDM no es necesario que resida dentro de una definición de macro Ejemplo 1: Reservar cinco palabras inicializadas respectivamente con los cuadrados de los cinco primeros números 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] [Combinación] [ clase ]...... nombre ENDS Descripción: 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:! Definición de variables! Instrucciones! Combinación de las anteriores

ESTRUCTURA DE COMPUTADORES I (Capítulo 14: DIRECTIVAS) 30/32 Un módulo fuente ensamblador puede ser:! Parte de un segmento! Un segmento! Partes de varios segmentos! Varios segmentos! Una combinación de los anteriores. Existen cuatro tipos de segmentos que son: de datos (DS), de código(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 posición.! WORD: El segmento empieza en una frontera de palabra, es decir, su dirección es múltiplo de 2.! PARA: El segmento empieza en una frontera de párrafo, es decir, su dirección es múltiplo de 16, Es el alineamiento por defecto! PAGE: El alineamiento empieza en una frontera de página; es decir, su dirección es múltiplo de 256. En la combinación podemos indicar una de las siguientes opciones:! Si no se indica los segmentos se colocarán uno tras otro físicamente, pero nivel lógico serán 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 expresión: El segmento se ubicará en la dirección cuyo segmento es expresión. Esta dirección no se usa para la carga del segmento en una dirección 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 interrupción o la memoria ROM.

ESTRUCTURA DE COMPUTADORES I (Capítulo 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 módulo 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. Sólo puede haber un segmento de este tipo, si hubiera varios, sólo se procesaría 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 excepción del alineamiento common 14.6.38 Directiva SUBTTL Formato: SUBTTL texto Descripción: Especifica un subtítulo que aparecerá en el listado como segunda línea de cada página, detrás del título. Observaciones: - Se puede especificar cualquier número de sentencias SUBTTL por módulo. - Si no se utiliza ninguna sentencia SUBTTL, la segunda línea del listado aparecerá en blanco. - Si después de usar SUBTTL texto se desea que vuelva a salir en blanco se usa esta misma directiva sin indicar texto alguno.

ESTRUCTURA DE COMPUTADORES I (Capítulo 14: DIRECTIVAS) 32/32 14.6.39 Directiva TITLE Formato: TITLE texto Descripción: Especifica un título que aparecerá en el listado como primera línea en cada página. La longitud máxima del texto son 60 caracteres. Observaciones: Sólo se puede especificar una sentencia TITTLE por módulo Los seis primeros caracteres de texto se utilizan como nombre del módulo objeto, a menos que se haya incluido la directiva NAME Si no se usa ni TITTLE ni NAME el nombre del módulo objeto es el mismo que el del módulo fuente.