Date post: | 28-Jan-2016 |
Category: |
Documents |
Upload: | pedro-lantigua |
View: | 219 times |
Download: | 0 times |
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
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
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:
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
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 ?
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
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,?))
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.
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.)
PBN - 05 - 11© Jaime Alberto Parra Plaza
DECLARACIÓN DE UN PROCEDIMIENTO:
nombre PROC [opciones]
; cuerpo del procedimiento
nombre ENDP
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.
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.
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
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
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.
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.
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:
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
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.
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.
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
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.
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:
PBN - 05 - 25© Jaime Alberto Parra Plaza
< FIN DE LA CLASE 5 >