Macroensamblad or MC BEATRIZ BELTRÁN MARTÍNEZ VERANO 2014.

19
Macroensambla dor MC BEATRIZ BELTRÁN MARTÍNEZ VERANO 2014

Transcript of Macroensamblad or MC BEATRIZ BELTRÁN MARTÍNEZ VERANO 2014.

Page 1: Macroensamblad or MC BEATRIZ BELTRÁN MARTÍNEZ VERANO 2014.

Macroensamblador

MC BEATRIZ BELTRÁN MARTÍNEZ

VERANO 2014

Page 2: Macroensamblad or MC BEATRIZ BELTRÁN MARTÍNEZ VERANO 2014.

Tipos de Ensambladores

Definición: Un ensamblador es un programa que traduce mnemónicos de un procesador a si correspondiente lenguaje de máquina.

Por la forma en que trabajan existen dos tipos de ensambladores:◦ Ensambladores de línea. Son aquellos que reciben

una sola línea de un programa y la ensambla independientemente del resto del programa. Ejemplo: el comando a del debug.

◦ Ensambladores de archivo. Son aquellos que ensamblan todo un programa almacenado en un archivo.

MC Beatriz Beltrán Martínez ENSAMBLADOR VERANO 2014 2

Page 3: Macroensamblad or MC BEATRIZ BELTRÁN MARTÍNEZ VERANO 2014.

Por el tipo de información que manejan los ensambladores se dividen también en:◦ Ensambladores propios. (Residentes) Ensamblan

programas escritos en lenguaje del procesador con el que trabaja la máquina. Ejemplo MASM

◦ Ensambladores cruzados. (Crossassembler) Ensamblan programas escritos en lenguaje de un procesador diferente al de la computadora de trabajo, pero no puede ejecutarse.

◦ Macroensambladores. Ensambladores propios o cruzados que permiten definición y expansión de MACROS.

MC Beatriz Beltrán Martínez ENSAMBLADOR VERANO 2014 3

Tipos de Ensambladores

Page 4: Macroensamblad or MC BEATRIZ BELTRÁN MARTÍNEZ VERANO 2014.

Macroensamblador Facilidades de los ensambladores de archivo.

1. Nos permite definir etiquetas (nombre que nos marca una dirección importante)

2. Nos permite reservar memoria con una etiqueta asignada.

3. Nos permite ensamblar programas almacenados en archivos.

4. Nos permite definir constantes.5. Nos permite dar números en diferentes bases.6. Nos permite evaluar expresiones aritméticas.

Ejemplo: mov ax, 30+2

MC Beatriz Beltrán Martínez ENSAMBLADOR VERANO 2014 4

Page 5: Macroensamblad or MC BEATRIZ BELTRÁN MARTÍNEZ VERANO 2014.

Macroensamblador MASM

◦ Recibe archivos ASCII editados en cualquier editor que contenga programas en lenguaje ensamblador.

◦ Tales archivos deben tener extensión ASM y con una forma específica.

◦ Algoritmo Codificación en ensamblador Editar (archivo.asm) ensamblar (masm archivo.asm) código de máquina (archivo.obj) ligar archivo ejecutable (archivo.exe) ejecutar.

MC Beatriz Beltrán Martínez ENSAMBLADOR VERANO 2014 5

Page 6: Macroensamblad or MC BEATRIZ BELTRÁN MARTÍNEZ VERANO 2014.

Macroensamblador

◦El archivo objeto no se puede ejecutar porque no tiene la dirección de memoria donde se ejecutará y será ligado.

◦Definición. Una pseudoinstrucción es una instrucción para el programa ensamblador, esto es, que solo se ejecuta en el momento de ensamblar, además no generar código.

MC Beatriz Beltrán Martínez ENSAMBLADOR VERANO 2014 6

Page 7: Macroensamblad or MC BEATRIZ BELTRÁN MARTÍNEZ VERANO 2014.

Macroensamblador Pseudoinstrucciones para definir segmentos:

◦ SEGMENT: Define el inicio de un nuevo segmento. Su formato es:

nombre SEGMENT alineación combinación clase

◦ ENDS: Define el final de un segmento. Su formato es:

nombre ENDS

MC Beatriz Beltrán Martínez ENSAMBLADOR VERANO 2014 7

Page 8: Macroensamblad or MC BEATRIZ BELTRÁN MARTÍNEZ VERANO 2014.

Macroensamblador Los parámetros del SEGMENT son información para el ligador: ◦ Alineación: Define la dirección a partir de donde

puede colocarse el segmento:◦ PARA: La dirección inicial del segmento es un

múltiplo de 16 (10h).◦ PAGE: La dirección inicial del segmento es donde

empieza una página (múltiplo de 100h). ◦ WORD: La dirección inicial del segmento es una

dirección par. ◦ BYTE: EL segmento inicia donde sea.

MC Beatriz Beltrán Martínez ENSAMBLADOR VERANO 2014 8

Page 9: Macroensamblad or MC BEATRIZ BELTRÁN MARTÍNEZ VERANO 2014.

Macroensamblador◦ Combinación: Define la forma en que el segmento

puede combinarse con otros segmentos para que se tenga el mismo nombre y clase. ◦ OMITIRLA: Segmento privado, es decir, no puede

combinarse. ◦ STACK: Segmento para usarse con el stack. ◦ PUBLIC: Este segmento puede unirse con todos

los segmentos del mismo y la misma clase para formar una sola.

◦ COMMON: Todos los segmentos del mismo nombre y clase se colocan a partir de la misma dirección.

MC Beatriz Beltrán Martínez ENSAMBLADOR VERANO 2014 9

Page 10: Macroensamblad or MC BEATRIZ BELTRÁN MARTÍNEZ VERANO 2014.

Macroensamblador◦ Cuando se tienen dos segmentos con el mismo

nombre y clase y son públicos, al ligar se unen en un solo segmento no importando que estén en archivos distintos.

◦ Cuando se usa la psudoinstrucción COMMON van a utilizar el mismo espacio de memoria, si son de diferente tamaño en memoria, se toma el tamaño del mayor bloque.

◦ Clase: Indica el tipo de datos que contiene el segmento, siempre se ponen entre comillas y pueden definirse propios.

MC Beatriz Beltrán Martínez ENSAMBLADOR VERANO 2014 10

Page 11: Macroensamblad or MC BEATRIZ BELTRÁN MARTÍNEZ VERANO 2014.

Macroensamblador◦ ‘DATA’: Datos. ◦ ‘CODE’: Código. ◦ ‘STACK’: Pila.

Pseudoinstrucciones para reservar memoria y definir constantes: ◦ DB: Sirve para reservar un byte en la memoria con

un valor determinado. Su formato es:[nombre] DB val1 [, val2, ..., valn] ◦ DW: Reserva un dato de dos bytes (una palabra)

con un valor inicial. Su formato es:[nombre] DW val1 [, val2, ..., valn]

MC Beatriz Beltrán Martínez ENSAMBLADOR VERANO 2014 11

Page 12: Macroensamblad or MC BEATRIZ BELTRÁN MARTÍNEZ VERANO 2014.

◦ DD: Reserva un dato de cuatro bytes (doble palabra) con un valor inicial. Su formato es:

[nombre] DD val1 [, val2, ..., valn] ◦ DQ: Reserva un dato de ocho bytes (cuádruple

palabra) con un valor inicial. Su formato es:[nombre] DQ val1 [, val2, ..., valn]

◦ DT: Reserva un dato de diez bytes con un valor inicial. Su formato es:[nombre] DT val1 [, val2, ..., valn] vali representa una expresión formada por números en cualquiera de las siguientes bases:

MC Beatriz Beltrán Martínez ENSAMBLADOR VERANO 2014 12

Macroensamblador

Page 13: Macroensamblad or MC BEATRIZ BELTRÁN MARTÍNEZ VERANO 2014.

MC Beatriz Beltrán Martínez ENSAMBLADOR VERANO 2014 13

XXXXb Binaria XXXXo Octal XXXXd Decimal XXXX Decimal XXXXh Hexadecimal

Macroensamblador

Page 14: Macroensamblad or MC BEATRIZ BELTRÁN MARTÍNEZ VERANO 2014.

Macroensamblador También pueden ser etiquetas o expresiones aritméticas que involucren etiquetas o bien cadenas de caracteres, entre apóstrofes.

◦ EQU: Permite definir constantes. Su formato es:etiq EQU val ◦ ORG: Define un desplazamiento inicial para

ensamblar las siguientes líneas. Su formato es:ORG val

MC Beatriz Beltrán Martínez ENSAMBLADOR VERANO 2014 14

Page 15: Macroensamblad or MC BEATRIZ BELTRÁN MARTÍNEZ VERANO 2014.

Macroensamblador Pseudoinstrucciones para definir procedimientos:

◦ PROC: Define el inicio de una subrutina.nombre PROC tipo ◦ ENDP: Define el final de una subrutina. nombre ENDP ◦ El tipo de la subrutina puede ser:

◦ NEAR: Cercano. ◦ FAR: Lejano.◦ OMITIRLO: Se define por omisión de tipo NEAR.

MC Beatriz Beltrán Martínez ENSAMBLADOR VERANO 2014 15

Page 16: Macroensamblad or MC BEATRIZ BELTRÁN MARTÍNEZ VERANO 2014.

Macroensamblador Un ensamblador de archivo, revisa errores de sintaxis, es decir, revisa que el programa esté bien escrito, más no que funcione.

Para poner comentarios dentro del programa se inician con un ‘;’ y todo lo que este a la derecha será un comentario sobre el mismo renglón.

La estructura del archivo quedaría:

MC Beatriz Beltrán Martínez ENSAMBLADOR VERANO 2014 16

Page 17: Macroensamblad or MC BEATRIZ BELTRÁN MARTÍNEZ VERANO 2014.

MacroensambladorDatos SEGMENT PARA ‘DATA’ ; Definición de variables y constantes

Datos ENDS

Pila SEGMENT PARA STACK ‘STACK’DW 100 DUP (0) ; Indica que se tiene que; repetir la instrucción n-veces con el ; valor que aparece en los paréntesis

Pila ENDS

MC Beatriz Beltrán Martínez ENSAMBLADOR VERANO 2014 17

Page 18: Macroensamblad or MC BEATRIZ BELTRÁN MARTÍNEZ VERANO 2014.

MacroensambladorCodigo SEGMENT PARA ‘CODE’ASSUME DS:Datos, CS:Codigo, SS:Pila, ES:NOTHING ; Sirve para indicarle al macroensamblador cuales ; segmentos son usados por los registros

subrutina1 PROC ; Código de la rutina uno

subrutina1 ENDP …

subrutina-n PROC ; Código de la rutina-n

subrutina-n ENDP

MC Beatriz Beltrán Martínez ENSAMBLADOR VERANO 2014 18

Page 19: Macroensamblad or MC BEATRIZ BELTRÁN MARTÍNEZ VERANO 2014.

Macroensamblador ; Programa principal Main PROC FAR PUSH DS ; Sirve para cuando se termine el programa regreseXOR AX, AX ; al debug o al sistema operativo según sea el caso.PUSH AX MOV AX, Datos ; Actualiza los registros de segmentos de datos y extraMOV DS, AXMOV ES, AX

; Código del programa principal. Main ENDPCodigo ENDS END Main

; Le indica al macroensamblador que el ensamble terminó

MC Beatriz Beltrán Martínez ENSAMBLADOR VERANO 2014 19