25
PBN - 05 - 1 © Jaime Alberto Parra Plaza CLASE 5 LOS SEGMENTOS

PBN - 05 - 1 © Jaime Alberto Parra Plaza CLASE 5 LOS SEGMENTOS

Embed Size (px)

Citation preview

Page 1: PBN - 05 - 1 © Jaime Alberto Parra Plaza CLASE 5 LOS SEGMENTOS

PBN - 05 - 1© Jaime Alberto Parra Plaza

CLASE 5

LOS SEGMENTOS

Page 2: PBN - 05 - 1 © Jaime Alberto Parra Plaza CLASE 5 LOS SEGMENTOS

PBN - 05 - 2© Jaime Alberto Parra Plaza

PARTES DE UN PROGRAMA EN ENSAMBLADOR:

TítuloConstantes

DatosPila

Programa Principal

Funciones

Final

{Opcional}{Opcional}

Código

Page 3: PBN - 05 - 1 © Jaime Alberto Parra Plaza CLASE 5 LOS SEGMENTOS

PBN - 05 - 3© Jaime Alberto Parra Plaza

Título: Es opcional y sólo sirve como referencia para el programador, su sintaxis es:

TITLE texto-del-título

Constantes: Corresponden al #define de C.

constante EQU valor

Page 4: PBN - 05 - 1 © Jaime Alberto Parra Plaza CLASE 5 LOS SEGMENTOS

PBN - 05 - 4© Jaime Alberto Parra Plaza

nombre SEGMENT [opciones]

; cuerpo del segmento

nombre ENDS

Las opciones permiten al programador indicarle al ensamblador cómo tratar los diferentes segmentos declarados.

DECLARACIÓN DE SEGMENTOS:

Page 5: PBN - 05 - 1 © Jaime Alberto Parra Plaza CLASE 5 LOS SEGMENTOS

PBN - 05 - 5© Jaime Alberto Parra Plaza

Segmento de Datos:

Las variables se declaran indicando el espacio de memoria que ocupan (1 byte, 1 word, 1 double, n bytes, n words):

variable tamaño-base valor-inicial

Page 6: PBN - 05 - 1 © Jaime Alberto Parra Plaza CLASE 5 LOS SEGMENTOS

PBN - 05 - 6© Jaime Alberto Parra Plaza

Tamaño-base:

DB = Declarar byte

DW = Declarar word

DD = Declarar double

Valor-Inicial:

Constante que se asignará a la variable al empezar el programa. Si no se requiere un valor inicial se coloca el símbolo de interrogación ?

Page 7: PBN - 05 - 1 © Jaime Alberto Parra Plaza CLASE 5 LOS SEGMENTOS

PBN - 05 - 7© Jaime Alberto Parra Plaza

Se puede reservar un bloque de memoria para una variable usando el campo valor-inicial.

Hay dos formas:

• Explícita

• Implícita

Page 8: PBN - 05 - 1 © Jaime Alberto Parra Plaza CLASE 5 LOS SEGMENTOS

PBN - 05 - 8© Jaime Alberto Parra Plaza

Explícita:

Se da una lista de valores separados por comas:

enteros DB 4, 5, -3, 2, 9

Implícita:

Se usa la directiva DUP (duplicar):

arreglo DB 50 DUP (0)

matriz DB 30 DUP (18 DUP (5))

notas DB 40 DUP (3 DUP (0,?))

Page 9: PBN - 05 - 1 © Jaime Alberto Parra Plaza CLASE 5 LOS SEGMENTOS

PBN - 05 - 9© Jaime Alberto Parra Plaza

Pila:

Se usa el formato:

STACK SEGMENT PARA STACK

DW n DUP (?)

STACK ENDS

La n se remplaza por una constante, usualmente 100H es adecuado.

Page 10: PBN - 05 - 1 © Jaime Alberto Parra Plaza CLASE 5 LOS SEGMENTOS

PBN - 05 - 10© Jaime Alberto Parra Plaza

Código:

Un programa se compone de un conjunto de funciones (llamadas procedimientos en ensamblador) de las cuales sólo una puede asumir el papel de función principal (llamada main en C.)

Page 11: PBN - 05 - 1 © Jaime Alberto Parra Plaza CLASE 5 LOS SEGMENTOS

PBN - 05 - 11© Jaime Alberto Parra Plaza

DECLARACIÓN DE UN PROCEDIMIENTO:

nombre PROC [opciones]

; cuerpo del procedimiento

nombre ENDP

Page 12: PBN - 05 - 1 © Jaime Alberto Parra Plaza CLASE 5 LOS SEGMENTOS

PBN - 05 - 12© Jaime Alberto Parra Plaza

Las líneas de un archivo fuente pueden contener los siguientes campos:

[etiqueta:] opcode [operandos] [; comentarios]

Los corchetes indican los campos que son opcionales.

El único campo obligatorio es el de opcode (código de operación) que contiene los mnemónicos antes mencionados.

Page 13: PBN - 05 - 1 © Jaime Alberto Parra Plaza CLASE 5 LOS SEGMENTOS

PBN - 05 - 13© Jaime Alberto Parra Plaza

etiqueta:

Es una palabra que equivale a la dirección que ocupará esa línea de instrucción al ubicarse en memoria.

El número de bytes que ocupa una línea depende de la instrucción que contenga y puede estar entre 1 y 6 bytes. El ensamblador calcula estos valores y crea una tabla para asignar las direcciones apropiadas a cada etiqueta.

Page 14: PBN - 05 - 1 © Jaime Alberto Parra Plaza CLASE 5 LOS SEGMENTOS

PBN - 05 - 14© Jaime Alberto Parra Plaza

opcode:

Es un mnemónico que representa la instrucción que se ejecutará. Ejemplos:

Suma ADD

Multiplicación MUL

Resta SUB

Incremento INC

Llamar rutina CALL

Comparación CMP

Salto de instrucción JMP

Page 15: PBN - 05 - 1 © Jaime Alberto Parra Plaza CLASE 5 LOS SEGMENTOS

PBN - 05 - 15© Jaime Alberto Parra Plaza

Operandos:

Algunas instrucciones requieren dos operandos, otras uno y otras más ningún operando.

Ejemplos:

OperaciónRepresentación

• AX AX + BX ADD AX, BX

• Incrementar CX INC CX

• Buscar en tabla XLAT

Page 16: PBN - 05 - 1 © Jaime Alberto Parra Plaza CLASE 5 LOS SEGMENTOS

PBN - 05 - 16© Jaime Alberto Parra Plaza

CANTIDAD DE OPERANDOS:

2 operandos: se admiten dos operandos origen o se admiten un operando origen y un operando destino.

1 operando: sólo se requiere un operando o se asume uno de los operandos en un sitio en particular.

0 operandos: no requiere operandos o se asumen los operandos en sitios particulares.

Page 17: PBN - 05 - 1 © Jaime Alberto Parra Plaza CLASE 5 LOS SEGMENTOS

PBN - 05 - 17© Jaime Alberto Parra Plaza

Comentarios:

Éstos son importantes como texto indicativo o explicativo de una instrucción o de una secuencia de instrucciones poco clara.

Dado que el ensamblador es por naturaleza críptico, una buena dosis de comentarios es siempre adecuada.

Page 18: PBN - 05 - 1 © Jaime Alberto Parra Plaza CLASE 5 LOS SEGMENTOS

PBN - 05 - 18© Jaime Alberto Parra Plaza

Se indica con el formato:

END nombre

nombre se remplaza por el nombre del procedimiento que se tomará como principal.

FIN DEL ARCHIVO:

Page 19: PBN - 05 - 1 © Jaime Alberto Parra Plaza CLASE 5 LOS SEGMENTOS

PBN - 05 - 19© Jaime Alberto Parra Plaza

ASIGNACIÓN DE SEGMENTOS:

• Para que el sistema puede diferenciar si un segmento es de código, datos o pila se debe hacer a dos niveles:– Implícito para el ensamblador– Explícito para el microprocesador

Page 20: PBN - 05 - 1 © Jaime Alberto Parra Plaza CLASE 5 LOS SEGMENTOS

PBN - 05 - 20© Jaime Alberto Parra Plaza

DIFERENCIACIÓN DE SEGMENTOS:

• CÓDIGO: Dentro del segmento vienen procedimientos.

• DATOS: Dentro del segmento vienen declaraciones que reservan espacio en memoria.

• PILA: El segmento tiene la opción STACK en su declaración.

Page 21: PBN - 05 - 1 © Jaime Alberto Parra Plaza CLASE 5 LOS SEGMENTOS

PBN - 05 - 21© Jaime Alberto Parra Plaza

DIRECTIVA ASSUME:Permite explicitarle al ensamblador cuáles

segmentos están siendo usados para qué tareas.

Su sintaxis es:

ASSUME Reg : Seg [ , … ]

donde Reg es un registro de segmento y Seg es un nombre de segmento.

Page 22: PBN - 05 - 1 © Jaime Alberto Parra Plaza CLASE 5 LOS SEGMENTOS

PBN - 05 - 22© Jaime Alberto Parra Plaza

PARA EL uP - DATOS:

• Al comienzo del procedimiento principal deben inicializarse los registros así:

MOV AX, NombreSegmento

MOV Reg, AX

Siendo Reg = DS ó ES

Page 23: PBN - 05 - 1 © Jaime Alberto Parra Plaza CLASE 5 LOS SEGMENTOS

PBN - 05 - 23© Jaime Alberto Parra Plaza

PARA EL uP - CÓDIGO:

Al final del archivo, después de la directiva END, se coloca el nombre del procedimiento principal. Con esta información es posible para el ensamblador determinar el valor que debe asignarse al registro IP antes de empezar la ejecución del programa.

Page 24: PBN - 05 - 1 © Jaime Alberto Parra Plaza CLASE 5 LOS SEGMENTOS

PBN - 05 - 24© Jaime Alberto Parra Plaza

• ¿Cuáles son las opciones que pueden especificarse al declarar un segmento y qué utilidad tiene cada una de ellas?

PREGUNTA 5:

Page 25: PBN - 05 - 1 © Jaime Alberto Parra Plaza CLASE 5 LOS SEGMENTOS

PBN - 05 - 25© Jaime Alberto Parra Plaza

< FIN DE LA CLASE 5 >