ENSAMBLADOR DE ARCHIVO TASM MASM NASM GAS. Características de un Ensamblador de Archivo

Documentos relacionados
[etiqueta:] REP MOVSn

DIRECTIVAS DEL ASM86

Sobre cómo dividir un programa ensamblador x86 (modo Real) en módulos compilables por separado.

LABORATORIO DE PROGRAMACIÓN EN LENGUAJE ENSAMBLADOR x86-16bits

Estructura de Computadores: Tema 1. Introducción. Índice. Arquitectura del i8086

Tema 1. Fundamentos del lenguaje ensamblador

Alternativas de programación

Tema 5: La pila, las macros y los procedimientos

5 - Lenguaje Ensamblador

SISTEMAS BASADOS EN MICROPROCESADORES

Tema 5. Formato de instrucciones. Directivas, instrucciones de cadena y programas de varios módulos

Tema 4. La pila, los procedimientos y las macros

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

APUNTES DE LENGUAJE ENSAMBLADOR. Lenguaje ensamblador

UNIVERSIDAD TECNOLÓGICA NACIONAL FACULTAD REGIONAL SAN NICOLÁS INGENIERIA EN ELECTRÓNICA

Introducción a la Computación. Capítulo 10 Repertorio de instrucciones: Características y Funciones

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

Conceptos de Arquitectura de Computadoras Curso 2015

MÓDULO III PROGRAMACIÓN DEL MICROPROCESADOR

Introducción al NASM. Convenciones de colores

CON LOS VALORES ASCII

Intel Departamento de Arquitectura 1. Facultad de Ingeniería Universidad de la República. Arquitectura de Computadoras, 2016

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

LABORATORIO DE PROGRAMACIÓN EN LENGUAJE ENSAMBLADOR x86-16bits

Ciclos de máquina. Otro ejemplo: decremento de un registro par (donde rp = HL, DE, BC, SP) DCX rp

Examen de teoría (5 puntos)

EL EMU8086 Y EL MICROPROCESADOR 8086.


ARQUITECTURA INTERNA DEL µp8086

Archivo ASM. Es el documento que contiene el código fuente del programa.

8.4. El software en los μprocesadores

Tema 3: Lenguaje ensamblador. La primera abstracción de la máquina para el programador

9. Lenguaje ensamblador

SISTEMAS BASADOS EN MICROPROCESADORES

ESTRUCTURA Y ORGANIZACIÓN DE COMPUTADORES

(2) Unidad 2. Modelo de Programación del 80x86 de Intel SISTEMAS BASADOS EN MICROPROCESADORES. Grado en Ingeniería Informática EPS - UAM

Universidad Nacional de Ingeniería Arquitectura de Maquinas I. Unidad I: Arquitectura y Programación de un Microprocesador (8086)

INSTRUCCIONES DE ENSAMBLADOR

Pregunta correcta= 0,3 Pregunta no contestada= 0 Pregunta incorrecta (tipo test)= -0,15

Laboratorio 1 Entorno de desarrollo y subrutinas

LENGUAJE ENSAMBLADOR PRÁCTICA 11 PRÁCTICA 11 CUATRO OPERACIONES FUNDAMENTALES EN NÚMEROS DE 8 BYTES

Arquitectura de Computadores II 8086 Parte II

Arquitectura (Procesador familia 80 x 86 )

P1.- Para facilitar la tarea, suponemos definido en el segmento de datos lo siguiente:

Examen de teoría (5 puntos)

Los números naturales y enteros en el 80X86 y en LAN

Todos los comandos de DEBUG se invocan usando una sola letra y son los siguientes:

ESTRUCTURA DE MICROPROCESADORES

INSTRUCCIONES ARITMÉTICAS.

Cruz García Karen Ilzette González Mendoza María del Rosario Hernández Castañeda Alan Eliseo Sánchez Quiroz Sheila Mariana Varela García Tania

RELACIÓN DE PROBLEMAS DE LÓGICA PROGRAMADA (TEMA 4)

USO DE MEMORIA Y PERIFÉRICOS CON EMU8086. Kervin Sánchez Herrera.

El Diseño de un Lenguaje Máquina

Examen Parcial de Arquitectura de Computadoras Prof: Ing. José ESTRADA MONTES

Tema 4. Lenguaje máquina y lenguaje ensamblador

Intel 8086 modelo básico (primera parte) Registros:

CAPÍTULO 3 PROGRAMACIÓN EN AMBIENTE DE PC

(4) Unidad 4. Recursos de Programación SISTEMAS BASADOS EN MICROPROCESADORES. Grado en Ingeniería Informática EPS - UAM

Objetivo. Introducción. Tema: GENERACION DE CODIGO. Compiladores, Guía 11 1

Fundamentos de Informática 2. Conceptos Básicos. El ordenador. Contenidos. El ordenador. El ordenador. El ordenador. Tema 2.

Tema 4. Lenguaje máquina y lenguaje ensamblador

Ejercicio. Solución. Banderas. Banderas. Banderas 05/10/2011 UNIDAD 5 2 A PARTE PROGRAMANDO EN EL ENSAMBLADOR DEL Z80

Tema: Lenguaje ensamblador embebido

Programas Residentes En Lenguaje Ensamblador

Parámetro de entrada. Un parámetro pasado del procedimiento que hace la llamada al procedimiento invocado.

Un. VIII. Generación de Código Objeto

Introducción al EMU8086

Instrucciones de Control de Flujo y Usos de la Pila

EJEMPLOS EJERCICIOS RESUELTOS MOV CX,320*200 ; ESTA OPERACIÓN LA REALIZA EL ENSAMBLADOR XOR DI,DI CLD REP STOSB

SISTEMAS BASADOS EN MICROPROCESADORES

INDICE. Pág. Introducción 2. Cargadores y Ligadores 3. Funciones Básicas del Cargador 3. Características del Cargador Dependientes de la Maquina 5

Microprocesadores, Tema 3 (2):

ENSAMBLADOR. Un sistema numérico es un conjunto de reglas y símbolos que nos permiten escribir números.

Instrucciones del microprocesador

SISTEMAS BASADOS EN MICROPROCESADOR 2º Grado Ingeniería Informática (EPS UAM) EXAMEN FINAL EXTRAORDINARIO JULIO 2013 ENUNCIADO DEL PROBLEMA

MOV ;movemos a ax el contenido de la cadena "A" eso significa el y data del segmento de datos

Organización de Computadoras. Clase 7

Práctica 4. Lenguaje máquina y lenguaje ensamblador

Arquitectura Interna del 8088

Práctica 2. Registros y posiciones de memoria

Arquitectura intel Preámbulo de OSO para alumnos formados en el procesador MIPS. Asignatura Sistemas Operativos Murcia abril de 2005

Tema 4: Lenguaje máquina - Lenguaje ensamblador

Tipos de datos y Operadores Básicos

Curso de Programación en C. Licenciatura, FCQeI. APUNTADORES.

EJEMPLOS EN ENSAMBLADOR

Ingeniería en Sistemas. Sistemas Operativos. Trabajo Práctico: Repaso de Interrupciones, direccionamiento de memoria y registros del procesador.

Ejercicios Práctica 4 Primer Cuatrimestre de de abril de 2008

Arquitectura del CPU. Organización del Computador 1 Verano 2016

Curso de Programación Avanzada en C

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Ensamblador. Introducción. Dpto. Física y Arquitectura de Computadores. Universidad Miguel Hernandez

LENGUAJE ENSAMBLADOR PRÁCTICA 12 PRÁCTICA 12

Estructura de Computadores. Problemas de Instrucciones y Direccionamientos

Introducción al ensamblador 80x86

Diseño de compiladores. Organización de memoria. Organización de memoria. Organización de memoria. Zona de código 04/05/2014 ORGANIZACIÓN DE MEMORIA

Instrucción De Salto Incondicional

INSTITUTO TECNOLÓGICO DE CHIHUAHUA II ARQUITECTURA DE COMPUTADORAS MAESTRO: ERNESTO LEAL ALUMNOS: LUIS CARLOS BARRERA ORTIZ STHEPANIE FLORES GUILLEN

Tema 6. Segmentación y modos de direccionamiento

Sesión 1. El Computadores II Rodrigo Santamaría

TAREA 1 ARITMETICA PARA BCD Y ASCII.

Transcripción:

ENSAMBLADOR DE ARCHIVO TASM MASM NASM GAS Características de un Ensamblador de Archivo Traduce de Leng Ensamblador a Lenguaje máquina Permite definición de etiquetas Reserva memoria para variables octales del programa y asigna un valor inicial Permite evaluar expresiones aritméticas (+,-, /,negación) Mov al,-3 Mov al, 80*40/5*2 Permite definición de números en otras bases: XxxxH Hexadecimal XxxxO Octal XxxxD Decimal Xxxx Decimal XxxxB Binario Ejemplo para ensamblar y ligar usando TASM 1 TASM NOMBRE /Z ; opción para emitir líneas donde se hallan los errores 2 TLINK NOMBREOBJ ;programa ejemplo para tasm ; Definicion de stack STACKSG segment para stack 'stack' DB 20 DUP (0) STACKSG ENDS ;DEFINICION DE AREAS DE TRABAJO DATASG SEGMENT PARA 'DATA' MEN1 DB 'HOLA MUNDO$' SALTA db 13, 10,'$' MEN2 DB 'ADIOS$' DATASG ENDS CODESG SEGMENT PARA 'CODE' PRINCI PROC FAR ASSUME SS:STACKSG, DS:DATASG,CS:CODESG ;PROTOCOLO PUSH DS SUB AX,AX PUSH AX MOV AX,SEG DATASG MOV DS,AX

;INICIA PROGRAMA mov ah,01 mov dx, offset SALTA mov dx, offset MEN1 mov dx, offset SALTA mov dx, offset MEN2 RET PRINCI ENDP CODESG ENDS END PRINCI Cuerpo de un programa en TASM Se integra de directivas (pseudoinstrucciones o pseudooperadores) e instrucciones La primera no genera código ejecutable, sólo se utilizan para llevar acabo el ensamble, las instrucciones si generan código ejecutable El cuerpo de un programa queda de la siguiente forma: 1 [Comentarios] 2 Definición de segmentos, por lo menos se deben definirse CS y el SS 21 Area de código Definición de Segmentos Para realizar esta acción se utilizan las denominadas directivas de segmento Se pueden utilizar las directivas largas o las simplificadas Directivas largas Directivas de segmento: SEGMENT, ENDS y END SEGMENT : Directiva para definir un segmento, el tamaño máximo de un segmento es de 64kb ENDS: Directiva para finalizar un segmento Formato:

Nombre Directiva alineación [combinación] [clase] Nombre ENDS Alineación: Indica el límite en el que inicia el segmento, por omisión alinea el segmento al límite de un párrafo, de manera que la dirección inicial es divisible entre 16 0 10h, el requerimiento típico es PARA Combinación: Indica si el segmento se combina con otros segmentos cuando son enlazados después de ensamblar, los tipos son STACK, COMMON, PUBLIC y la expresión AT Para la pila es: Nombre SEGMENT PARA STACK Se puede utilizar PUBLIC y COMMON en donde tenga el propósito de combinar de forma separada programas ensamblados cuando los enlaza En otros casos, donde no utilice combinación, se puede omitir o escribir NONE Clase: Es encerrada entre apóstrofes, es utilizada para agrupar segmentos cuando se enlazan Se utilizan code con CS, data para DS, stack para SS END: : Directiva para definir el fin del programa Ejemplo: STACKSG segment para stack 'stack' Definición de la pila STACKSG ENDS DATASG SEGMENT PARA 'DATA' Definición de datos DATASG ENDS CODESG SEGMENT PARA 'CODE' Definición de codigo CODESG ENDS END Directiva de segmento: ASSUME Se utiliza para asignar el nombre de los segmentos definidos a los registros correspondientes, se codifica en el segmento de código utilizando el siguiente formato: ASSUME SS: nombre_segss, DS: nombre_segds, CS:nombre_SEGCS,

Directivas simplificadas Son formas abreviadas para definir segmentos, para usarlas primero se debe definir el modelo de memoria antes de definir algún segmento La directiva simplificada MODEL crea por omisión a los segmentos y los enunciados ASSUME y GROUP necesarios Formato de definición de memoria: MODEL modelo de mem MODELO NUM DE SEG DE NUM DE SEG DE DATOS CODIGO TYNY * * SMALL 1 1 MÉDIUM MAS DE 1 1 COMPACT 1 MAS DE 1 LARGE MAS DE 1 MAS DE 1 Se puede utilizar cualquiera de estos modelo para un programa autónomo (esto es, un programa que no esta enlazado con algún otro) El modelo TYNY esta destinado para uso exclusivo de programas COM, los cuales tienen sus datos, código y pila en el mismo segmento El modelo SMALL exige que el código quepa en un segmento de 64K y los datos en otro de 64K, la directiva MODEL genera de forma automática la directiva ASSUME Los formatos generales para las directivas de segmento son: STACK DATA CODE [tamaño] [nombre] Cada una de estas directivas hace que el ensamblador genere el enunciado SEGMENT necesario y su correspondiente ENDS El tamaño de la pila es de 1024 bytes, el cual puede pasarse por alto Los nombres de los segmentos (que no se tienen que definir) por omisión son STACK, DATA y TEXT (código) Ejemplo: MODEL SMALL STACK 120 DATA [Elementos de datos] CODE [instrucciones] END Otras directivas Dentro de la definición de un segmento se define su contenido, para ello se utilizan otros tipos de directivas las denominadas directivas para definición de datos

Directivas para definición de datos Estas se utilizan para establecer áreas de trabajo y constantes, la definición se puede llevar a cabo por el contenido o el tamaño del área Formato : [Nombre] Directiva expresión Nombre: Es opcional y ayuda a referenciar a un elemento en el programa fuente Directiva: Indican la longitud del elemento definido DB (byte), DW (palabra), DD (palabra doble), DF (palabra larga), DQ (palabra cuádruple) y DT (diez bytes) Expresión: Es un operando que pude contener: constantes, sucesiones o listas constantes separadas por comas, cadenas de caracteres, duplicaciones de constantes, definición sin valor inicial (?) Ejemplos: Dat1 db 20 Almacena en un byte el valor 20 Dat2 db 3,4,5,6 Almacena en un byte cada valor Dat3 db ensamblador$ Asigna un byte para cada carácter Dat 4 db? Elemento no inicializado Dat5 dw 0 Almacena en una palabra el valor 0 Dat6 db D Almacena en un byte el caracter D Lista db E, n, s, a, m, b, l, a, d, o, r, $ Asigna un byte para cada carácter Para duplicar constantes se utiliza el siguiente formato: [Nombre] Directiva DUP expresión Datos DB 10 DUP 0 DW 200 DUP 2040 palabra Duplica el valor 0 en 10 localidades de un byte Duplica el valor 2040 en 200 localidades de una Para definir valores constantes se utiliza la directiva EQU, con el siguiente formato: Nombre EQU constante Datocte EQU 14h Directiva de procedimientos: PROC y ENDP La definición de código se hace en el segmento de código; tanto el programa principal como las subrutinas se definen como procedimientos, para esto se utilizan las directivas PROC y ENDP PROC: Define un procedimiento

ENDP: Finaliza un procedimiento Formato: Nombre PROC operando ret Nombre ENDP Operando: Este puede ser FAR o NEAR Estos informan al sistema que la dirección indicada es el punto de entrada para la ejecución del programa FAR: Código escrito en un segmento de código diferente NEAR: Código escrito en el mismo segmento de código El protocolo Al utilizar directivas largas se prtesenta de la siguiente manera: PUSH DS SUB AX,AX PUSH AX MOV AX,SEG DATASG MOV DS,AX ; Guarda en la pila la dirección del DS actual ; Limpia el registro AX ; Guarda el valor actual de AX ; Almacena la dirección del segmento de datos en AX, esta es determinada por el sistema cuando el código objeto esta enlazado y cargado para su ejecución, ya que el cargador puede ubicar cualquier programa en cualquier parte de la memoria y el ensamblador no la conoce ;Mueve el contenido del registro AX al registro DS, para inicializar el DS, el cargador de DOS inicializa automáticamente el SS y el CS cuando se carga un programa para su ejecución, pero es responsabilidad del programador inicializar el DS y el ES Al utilizar directivas simplificadas el protocolo se presenta de la siguiente manera: Para inicializar la dirección del segmento de datos en el DS se utilizan las instrucciones: MOV AX,@data ; ASIGNA A AX EL NOMBRE DEL SEGMENTO DE DATOS MOV DS,AX ;MUEVE EL CONTENIDO DE AX AL REGISTRO DS