Tema 5. Formato de instrucciones. Directivas, instrucciones de cadena y programas de varios módulos Laboratorio de Estructura y Organización de Computadores Grados en Ingeniería Informática e Ingeniería de Computadores Curso Curso 2012-2013 2010-2011 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Índice Formato de instrucciones. Ejemplos. Instrucciones para operar con cadenas Directivas o pseudoinstrucciones Programas medios en ensamblador Ensamblado de varios módulos Departamento de Automática Área de Arquitectura y Tecnología de Computadores Laboratorio de Estr. y Org. de Computadores Grados en I. Informática / I. de Computadores Trans.: 2 / 33 1 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Formato de instrucciones i80x86/8088 (I) Cuenta con múltiples formatos cuyo código máquina va desde un byte hasta seis bytes Formato de las instrucciones registro-registro y registro-memoria: Byte 1 Código Byte 2 DW Mod Reg Byte 3 Byte 4 R/M Desplazamiento o dato inmediato Especifica un operando como registro Código de operación Especifica el otro operando como registro o memoria Determina el tamaño de los operandos 0 para media palabra, 1 para palabra Determina el operando fuente y destino 0 operando reg origen, 1 operando reg destino Departamento de Automática Área de Arquitectura y Tecnología de Computadores Estructura de Computadores Trans.: I. T. I. de Gestión / Sistemas 3 / 33 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Formato de instrucciones i80x86/8088 (II) El primer byte contiene: – Código de operación – El bit de dirección de registro (D): Si D = 1 tengo que REG = operando destino Si D = 0 tengo que REG = operando fuente – El bit de tamaño del dato (W): especifica si la operación será realizada sobre datos de media palabra o de una palabra: Si W = 0 los datos son de 8 bits (ó 16 bits) Si W = 1 los datos son de 16 bits (ó 32 bits) Departamento de Automática Área de Arquitectura y Tecnología de Computadores Estructura de Computadores Trans.: I. T. I. de Gestión / Sistemas 4 / 33 2 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Formato de instrucciones i80x86/8088 (III) El segundo byte contiene los operandos (uno de ellos es un registro): REG se usa para identificar un registro MOD indica el modo de direccionamiento REG W=0 W=1 000 001 010 011 100 101 110 111 AL CL DL BL AH CH DH BH AX CX DX BX SP BP SI DI MOD Función: 00 01 10 11 Modo memoria sin desplazamiento Modo memoria con desplazamiento de media palabra Modo memoria con desplazamiento de una palabra Modo registro Departamento de Automática Área de Arquitectura y Tecnología de Computadores Estructura de Computadores Trans.: I. T. I. de Gestión / Sistemas 5 / 33 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Formato de instrucciones i80x86/8088 (y IV) El segundo byte contiene los operandos (continuación): R/M se usa para identificar un registro o una posición de memoria y depende del valor del campo MOD D8 es un desplazamiento de tamaño media palabra (8 ó 16 bits) y D16 es un desplazamiento de tamaño palabra (16 bits ó 32 bits) MOD = 11 CALCULO DE LA DIRECCION EFECTIVA R/M W=0 W=1 R/M MOD = 00 000 AL AX 000 [BX]+[SI] 001 CL CX 001 [BX]+[DI] 010 DL DX 010 [BP]+[SI] 011 BL BX 011 [BP]+[DI] 100 AH SP 100 [SI] 101 CH BP 101 [DI] 110 DH SI 110 direccion directa 111 BH DI 111 [BX] Departamento de Automática Área de Arquitectura y Tecnología de Computadores MOD = 01 MOD = 10 [BX]+[SI]+D8 [BX]+[SI]+D16 [BX]+[DI]+D8 [BX]+[DI]+D16 [BP]+[SI]+D8 [BP]+[SI]+D16 [BP]+[DI]+D8 [BP]+[DI]+D16 [SI]+D8 [SI]+D16 [DI]+D8 [DI]+D16 [BP]+D8 [BP]+D16 [BX]+D8 [BX]+D16 Estructura de Computadores Trans.: I. T. I. de Gestión / Sistemas 6 / 33 3 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Instrucciones de manejo de cadenas (I) Nombre: Formato: MOVS / MOVSB / MOVSW (MOV BYTE / WORD STRING) MOVS destino, fuente MOVSB / MOSW Descripción: Transfiere el byte o la palabra apuntada por DS:SI al byte o palabra apuntada por ES:DI. Después de la transferencia, SI y DI se incrementan o decrementan, según el valor del indicador DF (DF=0 incremento; DF=1 decremento), el número de bytes transferidos. Para la repetición puede ir precedida por REP. Operandos: destino, fuente se emplean como referencia, pues por defecto MOVS emplea ES:DI como destino y DS:SI como fuente. Ejemplos: – movsb – movs tabla1, tabla2 Departamento de Automática Área de Arquitectura y Tecnología de Computadores Laboratorio de Estr. y Org. de Computadores Grados en I. Informática / I. de Computadores Trans.: 7 / 33 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Instrucciones de manejo de cadenas (II) Nombre: LODS / LODSB / LODSW (Load BYTE / WORD to AL / AX) Formato: LODS fuente LODSB/LODSW Descripción: carga de un byte o de una palabra de una cadena. Transfiere un byte o una palabra de una cadena apuntada por DS:SI al acumulador AL o AX. Después incrementa o disminuye SI, según el estado del indicador DF, en 1 (byte) o en 2 (palabra). Operandos: fuente se emplean como referencia, pues por defecto LODS emplea DS:SI como fuente. Ejemplos: – lods cadena – lodsb Departamento de Automática Área de Arquitectura y Tecnología de Computadores Laboratorio de Estr. y Org. de Computadores Grados en I. Informática / I. de Computadores Trans.: 8 / 33 4 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Instrucciones de manejo de cadenas (III) Nombre: STOS / STOSB / STOSW (Store BYTE / WORD from AL / AX) Formato: STOS destino STOSB/STOSW Descripción: almacenamiento de un byte o de una palabra en una cadena. Transfiere un byte (AL) o una palabra (AX) a una cadena apuntada por ES:DI. Después de la ejecución se incrementa o disminuye DI, según el estado del indicador DF, en 1 (byte) o en 2 (palabra). Para la repetición puede ir precedida por REP. Operandos: destino se emplean como referencia, pues por defecto STOS emplea ES:DI como destino. Ejemplos: – stos cadena – stosw Departamento de Automática Área de Arquitectura y Tecnología de Computadores Laboratorio de Estr. y Org. de Computadores Grados en I. Informática / I. de Computadores Trans.: 9 / 33 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Instrucciones de manejo de cadenas (IV) Nombre: Formato: CMPS / CMPSB / CMPSW (Compare BYTE / WORD) CMPS destino, fuente CMPSB/CMPSW Descripción: Comparación de bytes o palabras de cadenas. Actúan como CMP pero con cadenas apuntadas por DS:SI para la fuente y ES:DI para el destino (atención fuente-destino). Después de la comparación, SI y DI son incrementados (DF=0) o decrementados (DF=1). Puede ir precedida por REP. Operandos: destino, fuente se emplean como referencia, pues por defecto CMPS emplea ES:DI como destino y DS:SI como fuente. Ejemplos: – cmps cadena1, cadena2 – cmpsb – cmpsw Departamento de Automática Área de Arquitectura y Tecnología de Computadores Laboratorio de Estr. y Org. de Computadores Grados en I. Informática / I. de Computadores Trans.: 10 / 33 5 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Instrucciones de manejo de cadenas (V) Nombre: Formato: SCAS / SCASB / SCASW (Scan BYTE / WORD) SCAS destino SCASB/SCASW Descripción: análisis de un byte o de una palabra de una cadena. Ejecuta la substracción AL-destino para un byte, o AX-destino para una palabra. No almacena el resultado, pero posiciona los flags. Esto permite comparar los bytes o palabras sucesivas de una cadena. Puede ir precedida de REP para la repetición. ES:DI apunta a la cadena destino. Operandos: destino se emplean como referencia, pues por defecto SCAS emplea ES:DI como destino. Ejemplos: – scas cadena – sacsb Departamento de Automática Área de Arquitectura y Tecnología de Computadores Laboratorio de Estr. y Org. de Computadores Grados en I. Informática / I. de Computadores Trans.: 11 / 33 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Instrucciones de manejo de cadenas (y VI) Nombre: REP / REPZ / REPE / REPNZ / REPNE (Repeat) Formato: REP / REPZ / REPE / REPNZ / REPNE instrucción de cadena Descripción: Prefijo que impone la repetición de una instrucción de cadena mientras que el contenido del contador CX, disminuido en cada pasada, no llegue a cero o el flag de cero cambie de estado. Esta repetición puede ser incondicional (REP) o condicional (REPZ / REPE hasta ZF=1 o REPNZ / REPNE hasta ZF=0). Operandos: no tiene Restricciones: solo aplicable a instrucciones de cadena REP se usa con MOVS y STOS; REPE, REPZ, REPNE y REPNZ se usan con CMPS y SCAS Ejemplo: – rep movsb ; rep como prefijo Departamento de Automática Área de Arquitectura y Tecnología de Computadores Laboratorio de Estr. y Org. de Computadores Grados en I. Informática / I. de Computadores Trans.: 12 / 33 6 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Las directivas (I) También llamadas pseudo-instrucciones o pseudo-operaciones No son como las sentencias “ejecutables” de los lenguajes de alto nivel, sino que sirven para reservar espacio de almacenamiento, asignar nombres a constantes, formar estructuras de datos, etc. No son órdenes destinadas al microprocesador, sino al programa ensamblador. Se pueden dividir en cuatro grupos funcionales: – Directivas de datos – Directivas condicionales – Directivas de listado – Directivas de macros Departamento de Automática Área de Arquitectura y Tecnología de Computadores Laboratorio de Estr. y Org. de Computadores Grados en I. Informática / I. de Computadores Trans.: 13 / 33 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Las directivas (II) Directivas de datos (I) Definir símbolos (I) Nombre: EQU (EQUIVALENT) Formato: nombre EQU expresión Descripción: asigna un nombre simbólico al valor de una expresión. El “nombre” no puede redefinirse a lo largo del programa. Ejemplo: – columnas EQU 80 Departamento de Automática Área de Arquitectura y Tecnología de Computadores Laboratorio de Estr. y Org. de Computadores Grados en I. Informática / I. de Computadores Trans.: 14 / 33 7 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Las directivas (III) Directivas de datos (II) Definir símbolos (y II) Nombre: = Formato: nombre = expresión Descripción: asigna un nombre simbólico al valor de una expresión. El “nombre” puede redefinirse a lo largo del módulo fuente. Útil en macros. Ejemplos: – valor = 10 – valor = valor + 1 Departamento de Automática Área de Arquitectura y Tecnología de Computadores Laboratorio de Estr. y Org. de Computadores Grados en I. Informática / I. de Computadores Trans.: 15 / 33 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Las directivas (IV) Directivas de datos (III) Definir datos (I) Nombre: DB (DEFINE BYTE) Formato: [nombre_variable] DB expresión Descripción: reserva memoria para una variable de tipo byte (8 bits) y los posteriores. “nombre_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 ellas (-128 ≤ expresión ≤127 con signo). – Un signo “?” que indica indefinición de valor. – Una cadena de caracteres delimitada por comillas simples o dobles. – n1 DUP (n2) que indica repetición n1 veces de la expresión n2. Ejemplos: – valores DB 30, -15, 20 - Datos DB 10 DUP(0) – DB 12*3 - cadena DB “Hola mundo” Departamento de Automática Área de Arquitectura y Tecnología de Computadores Laboratorio de Estr. y Org. de Computadores Grados en I. Informática / I. de Computadores Trans.: 16 / 33 8 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Las directivas (V) Directivas de datos (IV) Definir datos (II) Nombre: DD (DEFINE DOUBLE) Formato: [nombre_variable] DD expresión Descripción: reserva memoria para una variable de tipo doble palabra (32 bits) y los posteriores. “nombre_variable” es opcional y es el nombre asignado a la primera doble palabra. Operandos: “expresión” es el valor inicial de la variable y puede ser: – Una constante positiva o negativa o expresión de ellas. – Un signo “?” que indica indefinición de valor. – Una dirección completa de memoria (segmento y desplazamiento). – n1 DUP (n2) que indica repetición n1 veces de la expresión n2. Ejemplos: – valores DD 300, -150, 2000 – DD 120*3 – Direc DD tabla ; donde tabla equivale a su dirección – ;completa (segmento:desplazamiento) Departamento de Automática Área de Arquitectura y Tecnología de Computadores Laboratorio de Estr. y Org. de Computadores Grados en I. Informática / I. de Computadores Trans.: 17 / 33 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Las directivas (VI) Directivas de datos (V) Definir datos (III) Nombre: DQ (DEFINE QUADWORD) Formato: [nombre_variable] DQ expresión Descripción: reserva memoria para una variable de tipo cuádruple palabra (64 bits) y los posteriores. “nombre_variable” es opcional y es el nombre asignado a la primera cuádruple palabra. Operandos: “expresión” es el valor inicial de la variable y puede ser: – Una constante positiva o negativa o expresión de ellas . – Un signo “?” que indica indefinición de valor. – n1 DUP (n2) que indica repetición n1 veces de la expresión n2. Ejemplos: – valores DQ 300, -150, 2000 – DQ 120*3 – datos DQ 4 DUP (0) ; Equivale a DQ 0, 0, 0 , 0 Departamento de Automática Área de Arquitectura y Tecnología de Computadores Laboratorio de Estr. y Org. de Computadores Grados en I. Informática / I. de Computadores Trans.: 18 / 33 9 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Las directivas (VII) Directivas de datos (VI) Definir datos (IV) Nombre: DT (DEFINE TENBYTE) Formato: [nombre_variable] DT expresión Descripción: reserva diez bytes de memoria para almacenar dígitos decimales empaquetados (dos dígitos por byte). El primer byte se reserva para el signo y los otros 9 para almacenar 18 dígitos decimales. El signo se almacena como 00h (si positivo) o 80h (si negativo). “nombre_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 ellas . – Un signo “?” que indica indefinición de valor. – n1 DUP (n2) que indica repetición n1 veces de la expresión n2. Ejemplos: – valores – negat DT 0123456789 DT -0123456789 Departamento de Automática Área de Arquitectura y Tecnología de Computadores Laboratorio de Estr. y Org. de Computadores Grados en I. Informática / I. de Computadores Trans.: 19 / 33 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Las directivas (VIII) Directivas de datos (VII) Definir datos (y V) Nombre: DW (DEFINE WORD) Formato: [nombre_variable] DW expresión Descripción: reserva memoria para una variable de tipo palabra (16 bits) inicializando o no esa palabra y las posteriores. “nombre_variable” es opcional y es el nombre asignado a la primera palabra. Operandos: “expresión” es el valor inicial de la variable y puede ser: – Una constante positiva o negativa o expresión de ellas. – Un signo “?” que indica indefinición de valor. – El desplazamiento de una variable – n1 DUP (n2) que indica repetición n1 veces de la expresión n2. Ejemplos: – valores DW 300, -150, 2000 – DW 120*3 Departamento de Automática Área de Arquitectura y Tecnología de Computadores Laboratorio de Estr. y Org. de Computadores Grados en I. Informática / I. de Computadores Trans.: 20 / 33 10 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Las directivas (IX) Directivas de datos (VIII). Referencias externas (I) Nombre: PUBLIC Formato: PUBLIC símbolo Descripción: permite que los símbolos especificados sean accesibles por otros módulos durante un enlazado conjunto (LINK). El módulo que quiere invocar al símbolo debe contener la sentencia EXTRN. Ejemplo: – PUBLIC dato – dato DB 23h Departamento de Automática Área de Arquitectura y Tecnología de Computadores Laboratorio de Estr. y Org. de Computadores Grados en I. Informática / I. de Computadores Trans.: 21 / 33 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Las directivas (X) Directivas de datos (IX). Referencias externas (y II) Nombre: EXTRN Formato: EXTRN símbolo: tipo Descripción: identifica a los símbolos que fueron definidos (y declarados PUBLIC) en otro módulo. Ejemplo: – EXTRN dato:byte Departamento de Automática Área de Arquitectura y Tecnología de Computadores Laboratorio de Estr. y Org. de Computadores Grados en I. Informática / I. de Computadores Trans.: 22 / 33 11 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Las directivas (XI) Directivas de datos (X). Definir segmentos (I) Nombre: SEGMENT Formato: nombre SEGMENT [alineamiento] [combinación ] Descripción: indica el comienzo del segmento “nombre”. El final del segmento se indica mediante la directiva ENDS. El nombre de ambas directivas debe ser el mismo. Alineamiento (opcional): – BYTE – WORD – PARA – PAGE Ejemplo: – datos SEGMENT – datos ENDS Departamento de Automática Área de Arquitectura y Tecnología de Computadores Combinación (opcional): – PUBLIC – COMMON – AT – STACK – MEMORY Laboratorio de Estr. y Org. de Computadores Grados en I. Informática / I. de Computadores Trans.: 23 / 33 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Las directivas (XII) Directivas de datos (XI). Definir segmentos (II) Nombre: ENDS (END SEGMENT) Formato: nombre_segmento ENDS Descripción: indica el final del segmento “nombre_segmento” o bien indica el final de la estructura “nombre_estructura”. Operandos: nombre_segmento es obligatorio Departamento de Automática Área de Arquitectura y Tecnología de Computadores Laboratorio de Estr. y Org. de Computadores Grados en I. Informática / I. de Computadores Trans.: 24 / 33 12 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Las directivas (XIII) Directivas de datos (XII). Definir segmentos (y III) Nombre: ASSUME Formato: ASSUME registro_segmento:nombre_segmento Descripción: indica al ensamblador el registro de segmento que va a utilizar para direccionar cada segmento dentro del módulo. Operandos: “registro_segmento”: DS, CS, SS o ES “nombre_segmento”: generalmente el nombre asignado mediante la directiva SEGMENT. Ejemplo: – ASSUME CS:codigo – ASSUME ES:@DATA Departamento de Automática Área de Arquitectura y Tecnología de Computadores Laboratorio de Estr. y Org. de Computadores Grados en I. Informática / I. de Computadores Trans.: 25 / 33 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Las directivas (XIV) Directivas de datos (XIII) Definir procedimientos(I) Nombre: PROC (PROCEDURE) Formato: nombre_procedimiento PROC [atributo] Descripción: indica el comienzo del procedimiento “nombre_procedimiento”. Los procedimientos deben finalizar con la directiva ENDP Operandos: atributo = NEAR o FAR (si no se pone nada se supone NEAR) Ejemplo: – rutina PROC – rutina ENDP Departamento de Automática Área de Arquitectura y Tecnología de Computadores Laboratorio de Estr. y Org. de Computadores Grados en I. Informática / I. de Computadores Trans.: 26 / 33 13 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Las directivas (XV) Directivas de datos (XIV) Definir procedimientos(II) Nombre: ENDP (END PROCEDURE) Formato: nombre_procedimiento ENDP Descripción: indica el final de un procedimiento Operandos: nombre_procedimiento es obligatorio Departamento de Automática Área de Arquitectura y Tecnología de Computadores Laboratorio de Estr. y Org. de Computadores Grados en I. Informática / I. de Computadores Trans.: 27 / 33 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Las directivas (XVI) Directivas de datos (XV). Definir macros (I) Nombre: MACRO Formato: nombre_macro MACRO lista de parámetros Descripción: especifica el nombre y los parámetros de la macro. Los parámetros se separan por comas. El final de la macro se especifica mediante la directiva ENDM. Ejemplo: – sumar MACRO operando1, operando2, resultado – cuerpo de la macro – ENDM Departamento de Automática Área de Arquitectura y Tecnología de Computadores Laboratorio de Estr. y Org. de Computadores Grados en I. Informática / I. de Computadores Trans.: 28 / 33 14 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Las directivas (XVII) Directivas de datos (XVI). Definir macros (II) Nombre: ENDM (END MACRO) Formato: ENDM Descripción: indica el final de una macro Departamento de Automática Área de Arquitectura y Tecnología de Computadores Laboratorio de Estr. y Org. de Computadores Grados en I. Informática / I. de Computadores Trans.: 29 / 33 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Las directivas (XVIII) Directivas de datos (XVII). Definir macros (y III) Nombre: LOCAL Formato: LOCAL etiqueta Descripción: indica al ensamblador las etiquetas que debe cambiar cada vez que se expande la macro. Con ello se evita las definiciones múltiples de estas etiquetas. LOCAL sólo puede usarse dentro de la definición de una macro. Ejemplo: retardo MACRO numero LOCAL seguir mov cx, numero seguir: loop seguir ENDM Departamento de Automática Área de Arquitectura y Tecnología de Computadores Laboratorio de Estr. y Org. de Computadores Grados en I. Informática / I. de Computadores Trans.: 30 / 33 15 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Las directivas (XIX) Directivas de datos (XVIII). Definir bloques Nombre: STRUC (STRUCTURE) Formato: nombre_estructura STRUC Descripción: define una plantilla de campos a nivel de bytes. Es una forma de definir nuevos tipos de datos. La definición de una estructura comienza con la directiva STRUC y acaba con ENDS. En la definición de la estructura no se reserva memoria. La forma de acceder a cada campo de la estrutura es: nombre_estructura.campo. Operandos: las directivas estándar de definición de datos son: DB, DW, DD, DQ y DT. Ejemplo: parametros p1 p2 parametros STRUC dw ? db ? ENDS Departamento de Automática Área de Arquitectura y Tecnología de Computadores Laboratorio de Estr. y Org. de Computadores Grados en I. Informática / I. de Computadores Trans.: 31 / 33 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Las directivas (XX) Directivas de datos (XIX) Control MASM (I) Nombre: 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. En el caso de varios módulos fuentes que se enlazan juntos para formar un solo programa ejecutable, sólo el módulo principal puede especificar expresión. Ejemplo: END inicio Departamento de Automática Área de Arquitectura y Tecnología de Computadores Laboratorio de Estr. y Org. de Computadores Grados en I. Informática / I. de Computadores Trans.: 32 / 33 16 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Las directivas (XXI) Directivas de datos (y XX). Control MASM (y II) Nombre: .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. Expresión está siempre en base 10. Ejemplo: .RADIX 16 ; base 16 (hexadecimal) por defecto Departamento de Automática Área de Arquitectura y Tecnología de Computadores Laboratorio de Estr. y Org. de Computadores Grados en I. Informática / I. de Computadores Trans.: 33 / 33 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Las directivas (XXII) Directivas condicionales Sirven para que el ensamblador incluya o ignore porciones de programa fuente según una condición en tiempo de ensamblaje. IFxxx [condición] ... ELSE ... ENDIF Puede incluirse o no la sentencia ELSE Ejemplo: – PRUEBA = 0 – IF PRUEBA EQ 0 – ... ; Instrucciones que sólo se utilizan en pruebas – ... – ENDIF Departamento de Automática Área de Arquitectura y Tecnología de Computadores Laboratorio de Estr. y Org. de Computadores Grados en I. Informática / I. de Computadores Trans.: 34 / 33 17 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Las directivas (y XXIII) Directivas de listado Indican al ensamblador la información a obtener en el listado de salida y el formato de esa información. Se clasifican a su vez en: – De formato del listado: PAGE, TITLE, SUBTTL – De listado de macros: .LALL: lista macros y expansiones .SALL: suprime listado de macros y expansiones – Comentarios: COMMENT – Mensajes: %OUT: emite un mensaje por pantalla durante el ensamblado Departamento de Automática Área de Arquitectura y Tecnología de Computadores Laboratorio de Estr. y Org. de Computadores Grados en I. Informática / I. de Computadores Trans.: 35 / 33 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Ensamblado de varios módulos (I) Para enlazar programas formados por varios módulos fuente, se usan las directivas EXTRN y PUBLIC para las etiquetas compartidas Una vez creados los módulos objetos la sintaxis del link será: LINK [opciones] módulos_objeto, [ejecutable]; Todo.exe Departamento de Automática Área de Arquitectura y Tecnología de Computadores Laboratorio de Estr. y Org. de Computadores Grados en I. Informática / I. de Computadores Trans.: 36 / 33 18 Tema 5: Formato de instrucciones. Directivas, inst.de cadena y prog. de varios mód. Ensamblado de varios módulos (y II) Extrn leer: far Programa 2 Programa 1 (continuación) Extrn variable: byte int 21h Public texto2 mov variable, al Public variable call leer Public Leer ret Dosseg lea dx, texto2, Dosseg Leer endp .model small mov ah, 9 .model small End .stack 100h int 21h .stack 100h .data Mov dl, variable .data Programa 1 Extrn texto2: byte texto db ‘Pulsa tecla$’ Mov ah, 2 Int 21h variable db ? .code mov ah,4Ch Programa 2 (continuación) texto2db ‘Has pulsado$’ .code Leer proc far Para ensamblar el programa inicio: mov ax, @data int 21h End inicio mov ds, ax mov ax, @data Masm prg1; mov ds, ax Masm prg2 lea dx, texto mov ah, 1 Link prg1 prg2, todo mov ah, 9 int 21h Departamento de Automática Área de Arquitectura y Tecnología de Computadores Laboratorio de Estr. y Org. de Computadores Grados en I. Informática / I. de Computadores Trans.: 37 / 33 19