34282083-analisis-diseno-y-programacion-de-sistemas.pdf
TRANSCRIPT
Autor: M.C. Norma Ramírez HernándezM.S.I Graciela Lara López
M.A.S.I. Salomón Eduardo Ibarra ChávezRevisor Técnico: Ing. Valentín Martínez López
Principio de funcionamiento del Software de Sistemas
ANÁLISIS,DISEÑO Y PROGRAMACIÓN
DE SISTEMAS
ANÁLISIS,DISEÑO Y PROGRAMACIÓN
DE SISTEMASPrincipio de funcionamiento del Software de Sistemas
Autor: M.C. Norma Ramírez HernándezM.S.I Graciela Lara López
M.A.S.I. Salomón Eduardo Ibarra ChávezRevisor Técnico: Ing. Valentín Martínez López
Principio de funcionamiento del Software de Sistemas
ANÁLISIS,DISEÑO Y PROGRAMACIÓN
DE SISTEMAS
ANÁLISIS,DISEÑO Y PROGRAMACIÓN
DE SISTEMASPrincipio de funcionamiento del Software de Sistemas
9 789707 648036
ISBN 970764803-1
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS
3
CONTENIDO
1 INTRODUCCIÓN 7
1. ESTRUCTURA DE LA COMPUTADORA 11
1.1. HISTORIA 11 1.1.1. 3000 AC – ÁBACO ‐ CHINA 11 1.1.2. SIGLO XVII – REGLA DE CÁLCULO – NAPIER, GUNTHER, PASCAL, LEIBNIZ 11 1.1.3. SIGLO XIX – MAQUINA DIFERENCIAL –BABBAGE, BYRON, JACQUARD (TARJETAS PERFORADAS) 12 1.1.4. 1944 –MARK I ‐ AIKEN 13 1.1.5. 1944 –ENIAC – ECKERT, MAUCHLY 14 1.1.6. 1946 –EDVAC – JOHN VON NEUMANN 14 1.2. GENERACIONES 16 1.2.1. GENERACIÓN 0 (1942 ‐ 1945) 16 1.2.2. PRIMERA GENERACIÓN (1951 ‐ 1958) 16 1.2.3. SEGUNDA GENERACIÓN (1959‐1954) 17 1.2.4. TERCERA GENERACIÓN (1964‐1971) 17 1.2.5. CUARTA GENERACIÓN (1972‐1984) 18 1.3. ARQUITECTURA DE LA COMPUTADORA 20 1.3.1. ARQUITECTURA DE JOHN VON NEUMANN 25 1.3.2. ARQUITECTURA DE HARVARD 34 1.4. ESTRUCTURA LÓGICA DEL PROCESADOR 37 1.4.1. LENGUAJE MÁQUINA 39 1.4.2. SISTEMAS DE NUMERACIÓN 41 1.5. CONJUNTO DE REGISTROS Y MODELO DE PROGRAMACIÓN 45 1.5.1. CONCEPTOS DE MODELO DE PROGRAMACIÓN 45 1.5.2. DIRECCIONAMIENTOS SIMPLES. (INHERENTE, INMEDIATO, DIRECTO Y EXTENDIDO) 51 1.5.3. DIRECCIONAMIENTO RELATIVO DE 8 BITS 53 1.5.4. DIRECCIONAMIENTO RELATIVO DE 16 BITS. 55 1.5.5. DIRECCIONAMIENTO INDEXADO. 56 1.5.6. OTROS DIRECCIONAMIENTOS. 58 1.5.6.1. RELATIVO DE 9 58 1.5.6.2. MÚLTIPLES 59 1.5.6.3. MÁSCARA 59 1.6. EJERCICIOS DE FIN DE CAPITULO 61
nrh
______________________________________________________________________________ Introducción/ Historia
4
2. ENSAMBLADORES 67
2.1. RELACIÓN ARQUITECTURA DE MÁQUINAS Y ENSAMBLADOR 67 2.1.1. CARACTERÍSTICAS DEPENDIENTES DE LA MAQUINA. 74 2.1.2. CARACTERÍSTICAS INDEPENDIENTES DE LA MAQUINA. 75 2.2. MODALIDADES DE ENSAMBLADO 81 2.3. TÉCNICAS DE ENSAMBLADO 87 2.3.1. ENSAMBLADOR DE UN PASO. 88 2.3.2. ENSAMBLADOR DE DOS O MÁS PASOS. 89 2.3.2.1. PRIMER PASO (TABSIM: TABLA DE SÍMBOLOS) 89 2.3.2.2. SEGUNDO PASO (S19) 91 2.4. GESTIÓN DE MEMORIA EN EL ENSAMBLADOR 93 2.5. DISEÑO Y PROGRAMACIÓN DEL ENSAMBLADOR DE DOS PASOS 101 2.5.1. ALGORITMO DE PROGRAMACIÓN 103 2.5.2. ALGORITMOS Y PSEUDOCÓDIGOS EJEMPLOS 108 2.5.3. FORMATO DE ARCHIVO OBJETO. 120 2.6. EJEMPLOS 121 2.7. FUNCIONAMIENTO DEL ENSAMBLADOR 127 2.8. EJERCICIOS DE FIN DE CAPITULO 129
3. CARGADOR ‐ LIGADOR 137
3.1. CLASES DE CARGADOR 137 3.1.1. LIGADO DINÁMICO 142 3.1.2. EJEMPLO DE CARGADOR CYBER 144 3.1.3. EJEMPLO DE EDITOR DE LIGADO 370 145 3.1.4. EJEMPLO DE EDITOR DE LIGADO VAX 145 3.2. RELACIÓN CARGADOR ‐ SISTEMA OPERATIVO 147 3.2.1. SISTEMAS OPERATIVOS 150 3.3. FUNCIONES DEL EDITOR DE ENLACE 151 3.4. PROBLEMA DE LIGAS DE OBJETOS Y MÉTODOS DE SOLUCIÓN 154 3.5. DISEÑO Y PROGRAMACIÓN DE UN CARGADOR 159 3.5.1. CARGADOR ABSOLUTO (EJEMPLO) 159 3.5.2. CARGADOR RE LOCALIZABLE (EJEMPLO) 160 3.6. EJERCICIOS DE FIN DE CAPITULO 164
4 MACROPROCESADORES 171
4.1. IMPORTANCIA TEÓRICA DE MACRO‐EXPRESIONES Y USOS DE UN MACRO‐PROCESADOR 176 4.1.1. CONCEPTOS CLAVE 179
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS
5
4.2. MACROPROCESADORES CON ARGUMENTOS Y MACROPROCESADORES RECURSIVOS 181 4.3. INCORPORACIÓN DEL PROCESADOR DE MACROS AL ENSAMBLADOR 182 4.3.1. EJEMPLOS 183 4.4. EJERCICIOS DE FIN DE CAPITULO 185
5. ANEXOS 189
5.1. CODIGO ASCII 189 5.2. SECCIONES DEL MANUAL DE REFERENCIA DEL HC12 190 5.2.1. MODELO DE PROGRAMACION 190 5.2.2. MODOS DE DIRECCIONAMIENTO DEL HC12 191 5.2.3. TABLA DE OPERACIONES INDEXADAS 192 5.2.4. HOJA DE DATOS DE INSTRUCCIÓN 193 5.2.5. INSTRUCCIÓN ABREVIADA 193 5.3. TABLA INDICE 194 5.4. TABLA DE ILUSTRACIONES 196
6. REFERENCIAS 197
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS
7
1 Introducción
EL OBJETIVO GENERAL DE ESTE TEXTO ES COMPRENDER, EN UN NIVEL OPERATIVO, LOS
PRINCIPIOS DE FUNCIONAMIENTO DE LAS COMPUTADORAS BASADAS EN EL MODELO DE VON
NEWMANN Y ARQUITECTURAS DE HARVARD. ENTENDER Y MANEJAR LAS DIVERSAS
MODALIDADES Y MECANISMOS DE ENSAMBLADO, CARGA, MACROPROCESAMIENTO Y EJECUCIÓN
DE PROGRAMAS, LOS OBJETIVOS ESPECÍFICOS SON EXPRESADOS EN CADA MÓDULO DEL
CONTENIDO
Antes de entrar de lleno al contenido propio de la materia hay que aclarar que dicha
materia pertenece a la academia “SOFTWARE DE SISTEMAS”, pero ¿que significan estos
conceptos?, empecemos….
La informática es la ciencia que se
encarga de la automatización del manejo de
la información. La informática, por su rapidez
de crecimiento y expansión, ha venido
transformando rápidamente las sociedades
actuales. La computadora, a diferencia de
otras herramientas que en general apoyan el
esfuerzo físico de los humanos, fue inventada
para facilitar el trabajo intelectual.
El lenguaje de programación es el
medio de comunicación entre el hombre y la
máquina. Sistema de símbolos y reglas que
permite la construcción de programas con los
que la computadora puede operar así como
resolver problemas de manera eficaz. Estos
contienen un conjunto de instrucciones que
nos permiten realizar operaciones de entrada
/ salida, calculo, manipulación de textos,
lógica / comparación y almacenamiento /
recuperación. La programación tiene como
objetivo el tratamiento de la información
correctamente, con lo que se espera que un
programa de el resultado correcto y no uno
erróneo. Así que cada aplicación debe
funcionar según lo esperado en términos de
programación, esta pretende que sus
programas sean útiles y eficientes
Un sistema es un conjunto de
componentes que interaccionan entre si para
lograr un objetivo común. Las personas se
comunican con el lenguaje, que es un sistema
muy desarrollado formado por palabras y
símbolos que tienen significado que tienen
significado para el que habla y para quienes lo
escuchan, lo mismo es para las computadoras
las cuales tienen sistemas y se comunican por
medio de computadoras.
nrh
______________________________________________________________________________ Introducción/ Historia
8
La programación es el proceso de
convertir las especificaciones a grandes
rasgos de los sistemas en instrucciones de
máquina que produzcan los resultados
deseados.
Por lo tanto la Programación de
Sistemas se refiere a la creación de
programas cuya finalidad es servir a otros
programas (software): ejemplos:
Ensambladores, Cargadores y Ligadores,
Compiladores, Intérpretes.
El Software de Sistemas es el software que controla y coordina la operación del equipo
que existe en un sistema computacional. El tipo más importante de Software de Sistema es el
Sistema Operativo. Este supervisa y controla todas las actividades de entrada/salida y
procesamiento de un sistema de computación. Además todo el hardware y software se controla
por medio de un sistema operativo.
Llamamos Software de sistemas al conjunto de programas que se encargan de controlar el
funcionamiento de los programas que se ejecutan y de la gestión interna de los recursos físicos de
la computadora. Como es natural, el sistema operativo forma parte del software de sistema.
El Software es un conjunto de programas, documentos, procedimientos, y rutinas
asociados con la operación de un sistema de cómputo. Distinguiéndose de los componentes físicos
llamados hardware. El hardware por si solo no puede hacer nada, pues es necesario que exista el
software.
El software de manera general, podemos clasificarlo en:
Software de sistema: en
algunas ocasiones también
denominado software de base,
consiste en un software que
sirve para controlar e
interactuar con el sistema,
proporcionando control sobre
el hardware y dando soporte
a otros programas.
Software de aplicación: El
software de hoja de cálculo,
de diseño asistido por
computadoras (CAD), de
procesamiento de texto, de
manejo de Bases de Datos,
pertenece a esta categoría.
Software de uso general: este
ofrece la estructura para un
gran número de aplicaciones
empresariales, científicas y
personale; es decir, con
software y documentación
orientada a los usuarios
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS
9
El trabajo de un programador de sistemas es seleccionar, modificar y mantener el complejo
software del sistema operativo. Por lo tanto, los programadores de sistemas desempeñan una
función de apoyo al mantener el ambiente del software del sistema operativo en el que trabajan
los programadores de aplicaciones y los operadores de las computadoras. También participan en
las decisiones relativas a reducciones o ampliaciones de hardware y/o software. Programación de
Sistemas Conceptos y Aplicaciones Se entiende por programación de sistemas el conjunto de
programas necesario para que una computadora de una imagen coherente y monolítica ante sus
usuarios. Es un área especializada dentro de las ciencias de la computación. Así, mediante la
programación de sistemas, no solo se manejan las computadoras por medio del lenguaje maquina
(0 y 1) sino por otros sistemas operativos, sin lo cual sería muy difícil la interacción con la maquina.
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS
1. ESTRUCTURA DE LA COMPUTADORA
OBJETIVO: ENTENDER CON DETALLE LOS PROCESOS LOGICOS QUE SUCEDEN EN UNA
COMPUTADORA PARA QUE PUEDA EJECUTAR UN PROGRAMA EN LENGUAJE MAQUINA DE UNA
PLATAFORMA QUE YA ESTA DEFINIDA.
1.1. Historia Podemos definir a la computadora como un dispositivo electrónico capaz de recibir un
conjunto de instrucciones y ejecutarlas realizando cálculos sobre los datos numéricos, o
compilando y correlacionando otros tipos de información para obtener otro conjunto de datos o
información como respuesta. La informática, por su rapidez de crecimiento y expansión, ha venido
transformando rápidamente las sociedades actuales.
1.1.1. 3000 AC – ÁBACO CHINA Desarrollada por los chinos y utilizado por civilizaciones
griegas y romanas. Este dispositivo es muy sencillo, consta de un
marco rectangular de madera ensartado de varillas en las que se
desplazaban bolas agujereadas de izquierda a derecha. Al
desplazar las cuentas (bolas) sobre las varillas, sus posiciones
representan valores almacenados, y es mediante estas posiciones
que se representa y almacena datos. A este dispositivo no se le
puede llamar computadora pues carece de un elemento
fundamental: programa.
Ilustración 1 Abaco
1.1.2. Siglo XVII – REGLA DE CÁLCULO – NAPIER, GUNTHER, PASCAL, LEIBNIZ El creciente interés en Europa por la
astronomía y la navegación, impulsó a
simplificar los cálculos, en ese entonces se
encontraba en uso "la regla del cálculo",
calculadora basada en las invenciones de y
Napier, Gunther Bissaker.
En 1614, el escocés Napier había
anunciado el descubrimiento de los
logaritmos permitiendo que los resultados de
complicadas multiplicaciones se redujeran a
un proceso simple de suma; Edmund Gunther
se encarga de enmarcar los logaritmos de
Napier en líneas, por su parte Bissaker coloca
las líneas de ambos sobre un pedazo de
madera, creando de esta manera la regla del
cálculo.
11
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS
45
1.5. Conjunto de registros y modelo de programación
1.5.1. Conceptos de modelo de programación
La arquitectura de un
microprocesador o de cualquier procesador
de computadora, se define por su conjunto de
instrucciones y por el modo en como éstas
acceden a los datos en memoria para su
procesamiento.
Las instrucciones que obedece un
microprocesador están codificadas como
dígitos binarios en su sistema de memoria.
Cada instrucción puede dividirse en uno o
más campos de bit´s. Todas las instrucciones
tienen un campo de código de operación
(COP), que define el propósito de la
instrucción. Además, la instrucción completa
puede tener campos para operandos o
direcciones de memoria que especifican en
donde están almacenados los datos. Lo
anterior delimita el concepto de "formato de
instrucción".
Las instrucciones por su complejidad
pueden ser sencillas o compuestas. Los
microprocesadores que ejecutan
instrucciones sencillas son los llamados RISC
(Reduced Instruction Set Computer), como
por ejemplo el PIC16C84 de MicroChip o el
propio Sparc de SUN y el PPC604 de
Motorola. Por otra parte tenemos a los
microprocesadores con instrucciones
compuestas, los CISC ( Complex Instruction
Set Computer ), como el 6809 de Motorola,
SIC/XE y la serie 80X86 de Intel. Existen
algunos procesadores híbridos muy eficientes
como los famosos K6, K6‐II y K6‐III de AMD.
En este punto se ve de acuerdo al manual de
referencia del dispositivo a tratar. Para
nuestro curso el microprocesador a ver será
el HC12.
El modelo de programación
representa la estructura de manipulación de
datos que soporta el conjunto de
instrucciones, usualmente compuesta por:
• Unidad aritmética y lógica
• Los registros de trabajo
• El registro de condiciones
• La memoria de datos
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS
67
2. ENSAMBLADORES
Objetivo: ENTENDER Y MANEJAR LOS DIFERENTES ESQUEMAS DE ENSAMBLADO. DISEÑAR UN
ENSAMBLADOR DE 2 PASOS.
2.1. Relación Arquitectura de máquinas y ensamblador La evolución de los sistemas comienza con un ENSAMBLADOR, se sigue con los
CARGADORES que es el modulo 3 para nuestro caso de estudio, MACROPROCESADORES que es el
modulo 4, COMPILADORES y SISTEMAS OPERATIVOS.
Al inicio de los tiempos, el
programador tenía que interpretar el
fundamento de la instrucción, se escribían
una serie de unos y ceros (lenguaje maquina)
y se grababan en la memoria del dispositivo,
entonces el dispositivo interpretaba como
esto como una instrucción. Los
programadores encontraban esta tarea (leer
o escribir en la memoria) muy lenta, así que
se introdujo el concepto de MNEMONICO,
que sustituye al conjunto de UNOS y CEROS,
y al conjunto de estos mnemónicos LENGUAJE
ENSAMBLADOR. La entrada de dicho
programa se le llama PROGRAMA FUENTE y a
la salida PROGRAMA OBJETO (que es la
traducción de dichas instrucciones a lenguaje
maquina.
Por lo tanto, los ensambladores son
programas que procesan los enunciados del
programa origen en lenguaje ensamblador y
los traducen en archivos en lenguaje máquina
que son ejecutados por un microprocesador o
un micro controlador, estos permiten que los
programas origen se escriban y se editen en
una computadora para generar un código
ejecutable en otra computadora. El archivo en
lenguaje objeto ejecutable resultante se carga
(CARGADOR) y se ejecuta en el sistema
destino.
Lenguaje ensamblador es el lenguaje
simbólico que se utiliza para codificar los
programas origen que se procesan por el
ensamblador es llamado lenguaje
ensamblador. Este lenguaje es una colección
de símbolos mnemónicos que representan:
operaciones (mnemónicos de instrucciones
para la máquina o de directrices para el
ensamblador), nombres simbólicos,
operadores y símbolos especiales. El lenguaje
ensamblador proporciona códigos de
operación de los mnemónicos para todas las
instrucciones de la máquina contenidas en la
lista de instrucciones.
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS
69
.Ejemplos
Mnemónico C.o. Explicación Ejemplos de uso
NOP A7 No operación, incrementa el contador de
programa pero no hace nada Solo un uso: nop
Cpy Depende de su uso Compara el contenido del registro Y con
un valor especificado CPY 04
ABA 1806 Suma el contenido del acumulador a con
el b, el resultado queda en a Solo un uso: aba
Rola 45 Rota todos los bits del acumulador A
hacia la derecha Solo un uso: rola
LDAA Depende de su uso Carga al acumulador un valor
especificado
Ldaa #01, ldaa $01,
etc
Un ensamblador es un programa que traduce las instrucciones a lenguaje maquina, estos
deben ser escritos conforme a las especificaciones del ensamblador. Un programa consiste en
declaraciones (llamadas línea código) línea por línea. Su sintaxis es la siguiente: nombre del
campo, operacion del campo, operando del campo, sintaxis del campo, ejemplo:
ETIQUETA MNEMONICO Operando (S) COMENTARIO (antepone “;”) LDAA #5 ;carga al registro A un 5 Num1: JMP $10 ;salto incondicional a la dirección 10
Campo de Etiquetas: esta puede aparecer
por si sola en una línea. El ensamblador
interpreta esto como "establece el valor
de la etiqueta igual al valor actual del
contador de programa (PC)". El campo de
etiquetas aparece como el primer campo
dentro de un enunciado origen. El campo
de etiquetas puede adoptar cualquiera de
las siguientes formas:
o Un asterisco ( * ) como el primer
carácter en el campo de etiquetas
indica que el resto del enunciado
origen es un comentario. Los
comentarios son ignorados por el
ensamblador e impresos en el
listado origen solamente como
información de programación.
o Un espacio de carácter en blanco
(TAB o espacio) como primer
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS
75
direccionamientos, no todos son
aplicables a los micros.
MNEMONICO: las
instrucciones aunque en concepto
podrían ser las mismas, se enuncian
de diferente manera, es decir:
Función MN HC12 MN HC08
Cargo al acumulador A LDAA LDA
Compara al acumulador A CMPA CMP
….. y así podríamos seguir enumerando encontrando las características que hacen exclusivo al
micro.
2.1.2. Características Independientes de la maquina.
Las características independientes de la máquina son aquellas relacionadas más bien con
el tipo de implementación del programa y sus estructuras de datos que con la máquina objeto.
DIRECTIVAS: También existen las llamadas DIRECTIVAS o PSEUDOINSTRUCCIONES, las
cuales especifican acciones auxiliares que se llevan a cabo por el ensamblador.
PERIFERICOS: todo dispositivo que será controlado por el micro
ARCHIVOS AUXILIARES: *.LST, *.OBJ, *.S19, *.TABSIM, etc, dependiendo del algoritmo con
que se trabaje
…. De igual manera podríamos seguir numerando características globales para los micros
DIRECTIVAS: Las directivas de ensamblador controlan acciones auxiliares que se realizan
durante el proceso de ensamblado, tales como reservar posiciones de memoria, inicializar
posiciones de memoria a un determinado valor, definir etiquetas, indicar el inicio y el final del
nrh
______________________________________________________________________________ ENSAMBLADORES/ Relación Arquitectura de máquinas y ensamblador
76
programa, o definir macros. Las directivas no son traducibles a código máquina. Nota: las
directivas NO tienen código maquina.
ORG Especificar el punto en el cual se comienza a ensamblar una sección de código. Esta directiva debe utilizarse siempre antes de comenzar a declarar código o zonas de memoria.
END Especifica el fin de un archivo en código fuente ensamblador. Esta directiva deber ser incluida obligatoriamente al final de cada archivo. Cualquier expresión declarada después de esta directiva será ignorada.
START Especificación del comienzo de una sección de código ensamblado a dirección $0. Equ Sustituye un identificador por una cadena de texto previamente especificada en
cualquier parte del programa por el valor declarado. Esto permite una gran versatilidad a la hora de declarar constantes y posiciones de memoria de especial interés para el programador.
contloc LINEA DE PROGRAMA COP E1 EQU $800 ORG $4000
4000 JMP E1 06 0800 END
DC.B
Las directivas DB y DW permiten declarar o reservar zonas de memoria, tanto para valores numéricos como para cadenas de texto. Estas directivas poseen una amplia sintaxis que permite una gran flexibilidad a la hora de definir áreas de memoria. Los elementos definidos mediante las directivas DB y DW deben ir separados por comas. Para reservar espacio en la memoria sin especificar un valor concreto, se puede emplear el signo de interrogación. La especificación de cadenas de texto debe hacerse mediante la expresión literal de la cadena entre comillas.
DC.W
contloc LINEA DE PROGRAMA COP ORG $4000
4000 DC.B 00 4001 DC.W 00 00 4003 DC.B 15 0F 4004 DC.B 20,21,22 14 15 16 4007 DC.B ‘H 48 4008 DC.W ‘H 0048 400A DC.B ‘H, ‘O, ‘L, ‘A 48 4F 4C 41
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS
101
2.5. Diseño y programación del ensamblador de dos pasos Los lenguajes son sistemas de
comunicación. Un lenguaje de programación
consiste en todos los símbolos, caracteres y
reglas de uso que permiten a las personas
"comunicarse" con las computadoras.
Existen por lo menos varios cientos de
lenguajes y dialectos de programación
diferentes. Algunos se crean para una
aplicación especial, mientras que otros son
herramientas de uso general más flexibles
que son apropiadas para muchos tipos de
aplicaciones. En todo caso los lenguajes de
programación deben tener instrucciones que
pertenecen a las categorías ya familiares de
entrada/salida, cálculo/manipulación de
textos, lógica / comparación y
almacenamiento / recuperación.
Los lenguajes de programación se
dividen en 4 principales paradigmas:
imperativo, funcional, orientado a objetos y
lógico.
Para la creación de un programa es
necesario seguir cinco pasos:
1. Diseño del algoritmo: se plantea el
problema a resolver y se propone la
mejor solución, creando diagramas
esquemáticos utilizados para el
mejor planteamiento de la solución.
2. Codificación del mismo: consiste en
escribir el programa en algún
lenguaje de programación; en este
caso específico en ensamblador,
tomando como base la solución
propuesta en el paso anterior.
3. Traducción a lenguaje máquina, es
la creación del programa objeto, esto
es, el programa escrito como una
secuencia de ceros y unos que pueda
ser interpretado por el procesador.
4. La prueba del programa: verificar
que el programa funcione sin
errores, o sea, que haga lo que tiene
que hacer.
5. Depuración La última etapa es la
eliminación de las fallas detectadas
en el programa durante la fase de
prueba . La corrección de una falla
normalmente requiere la repetición
de los pasos comenzando desde el
primero o el segundo.
Un algoritmo es una serie de pasos
lógicos para realizar una acción, programa o
tarea ya que es el primer paso para realizar
un programa. Los algoritmos se pueden
expresar por fórmulas, diagramas de flujo, y
pseudocódigos. Los algoritmos tienen
ciertas características que son:
nrh
______________________________________________________________________________ ENSAMBLADORES/ Diseño y programación del ensamblador de dos pasos
106
Ilustración 23 Diagrama de flujo de un Ensamblador de 2 pasos PASO 1
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS
107
Ilustración 24 Diagrama de flujo de un Ensamblador de 2 pasos PASO 2
nrh
______________________________________________________________________________ ENSAMBLADORES/ Diseño y programación del ensamblador de dos pasos
120
2.5.3. Formato de Archivo objeto. Un archivo de salida de Motorola es un archivo tipo ASCII, Motorola maneja 3 tipos:
S19 para direccionamiento de 16 bits
S2 para direccionamiento de 24 bits
S3 para direccionamiento de 32 bits
Estos archivos son una opcional tabla de información, con datos específicos para ser
cargados en memoria:
Modulo de registro este es opcional, contiene el nombre del modulo.
Registro de símbolos en caso de ser necesario un símbolo re‐calculable.
Registro de encabezado S0
Registro de dato
o S1 (2 bytes) dato
o S2 (3 bytes) dato
o S3 (4 bytes) dato
Registro de término
o S7 archivo de 32 bits de dirección
o S8 archivo de 24 bits de dirección
o S9 archivo de 16 bits de dirección
Recordemos que este es solo un formato para el cargador del simulador, para facilitar la
vida del programador, lo único exacto y sin varianza deberá ser el COP resultante. Para nuestro
caso del HC12 de Motorola el formato de salida será un S19 con las siguientes características:
TIPO
DE DATO
NUMER
O DE
DATO
S A LO
LARG
O DE LA
FILA,
REPR
ESEN
TADO
POR 1 BY
TE
DIREC
CION DEL
DATO
(2 BYTES)
DATO
(
el ta
maño es
variable)
checksum
S0 S1 . S1 S9
ORDEN DE CALCULO COMO SIGUE 1 4 2 3 5
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS
123
2. Mediante el algoritmo de 2 pasos, obtenga el formato de salida S19, del siguiente
programa en lenguaje ensamblador:
1.asm
ORG $4000
JMP INI
INI JMP ‐4,Y
JMP 4,‐Y
JMP 40,Y
ORG $4012
JMP ‐40,Y
JMP A,Y
END
PASO 1, SE RESEVA LOCALIDADES DE MEMORIA
Y SE GENERA LA TABSIM EN SU CASO
PASO 2: SE OBTIENE EL COP Y SE GENERA EL
FORMATO DE SALIDA S19
Eje1.asm
contloc Cop ORG $4000
4000 06 hh ll JMP INI
4003 05 xb INI JMP ‐4,Y
4005 05 xb JMP 4,‐Y
4007 05 xb ff JMP 40,Y
400ª ORG $4012
4012 05 xb ff JMP ‐40,Y
4015 05 xb JMP A,Y
4017 END
Eje1.asm
contloc cop ORG $4000
4000 06 4003 JMP INI
4003 05 5C INI JMP ‐4,Y
4005 05 6C JMP 4,‐Y
4007 05 E8 28 JMP 40,Y
400A ORG $4012
4012 05 E9 D8 JMP ‐40,Y
4015 05 EC JMP A,Y
4017 END
4000 El código “hhll” se sustituye por el por el valor de la variable que se encuentra declarada
en la tabla de simbolos
4003 El código “xb” se sustituye de acuerdo al modulo anterior (1.6.5 Modo de
direccionamiento indexado) por la formula: rr0nnnnn, donde:
1=31 (ascii, hexadecimal) ver anexos
Retorno de carro=13H
TABSIM
INI=$4003
nrh
______________________________________________________________________________ ENSAMBLADORES/ EJEMPLOS
124
r r 0 n n n n n
y ‐4
0 1 1 1 1 0 0
5 C
4005 El código “xb” se sustituye de acuerdo al modulo anterior (1.6.5 Modo de
direccionamiento indexado) por la formula: rr1pnnnn, donde p=posición del signo pre=0,
mientras que el signo del registro (para cuestiones de cálculo se toma para el
desplazamiento:
r r 1 p n n n n
y ‐4
0 1 0 1 1 0 0
6 C
4007 De igual manera que las anteriores: xb se sustituye por 111rr0zs, donde z es el tamaño del
operador, siendo 0 cuando su tamaño es de 1 byte, y s representa el signo del operador,
siendo s=0 cuando este es positivo, por lo tanto el operador 40 es la variable ff
1 1 1 r r 0 z S
y 1 BYTE POSITIVO
0 1 0 0
E 8
4012 Es el mismo formato anterior, solo que aquí el operador es negativo asi que nos resultara
s=1, por lo tanto el COP resultante para ‐40,y seria E9 D8.
400D Ahora el 1er operador es el registro interno “A”, por lo tanto les como sigue:
1 1 1 r r 1 a a
y A
0 1 0 0
E C
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS
125
FORMATO DE SALIDA S19 “1.s19”
S0 04 0000 31 CA
S1 0D 4000 0640003 055C 056C 05E828 83
S1 05 4012 05E9D8 05EC
S9 03 4017 A5
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS
137
3. CARGADOR LIGADOR
Objetivo: ENTENDER EL FUNCIONAMIENTO DE LOS ESQUEMAS MAS IMPORTANTES DE LA CARGA
Y LIGA DE MODULOS OBJETO.
3.1. Clases de cargador En informática, un cargador es la parte de
un sistema operativo que es responsable de
cargar programas en memoria. El cargador es
usualmente una parte del núcleo del sistema
operativo y es cargado al iniciar el sistema y
permanece en memoria hasta que el sistema
es reiniciado o apagado. Algunos sistemas
operativos que tienen un núcleo paginable
pueden tener el cargador en una parte
paginable de la memoria, entonces a veces el
cargador intercambia de memoria.
Los sistemas operativos que soportan
la carga de programas tienen cargadores.
Algunos sistemas operativos empotrados de
computadoras altamente especializadas
corren un único programa y no existen
capacidades de carga de programas, por lo
tanto no usan cargadores. Ejemplos de estos
sistemas embebidos se encuentran en
equipos de audio para automóviles. En los
sistemas Unix, el cargador es el manejador
para la llamada del sistema execve(). Algunas
computadoras necesitan cargadores
relocalizables, los cuales ajustan direcciones
de memoria (punteros) en un ejecutable para
compensar las variaciones en la cual la
memoria disponible de la aplicación empieza.
Las computadoras que necesitan de los
cargadores relocalizables son aquellos en los
cuales los punteros son direcciones absolutas
en vez de compensaciones de direcciones
base del programa. Un ejemplo muy conocido
está en los mainframes IMB Sistema 360 y sus
descendientes, incluyendo la serie de los
sistemas Z9. Los ligadores dinámicos son otro
tipo de cargador que carga y liga librerías
dinámicas (como dll's).
Muchos cargadores permiten al usuario
especificar opciones que modificar el
procesamiento estándar descrito. Algunas
veces existe un archivo independiente de
entrada al cargador que contiene esas
proposiciones de control o esas mismas
proposiciones también pueden estar
intercaladas en el flujo primario de entrada
entre los programas objeto. En ciertos
sistemas el programador puede incluso
introducir proposiciones de control del
cargador en el programa fuente, y el
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS
159
3.5. Diseño y programación de un Cargador Algoritmo de cargador
1. colocar un programa objeto en la memoria
2. Iniciar su ejecución.
3. Si tenemos un cargador que no necesita realizar las funciones de ligado y
relocalización de programas, su operación es simple pues todas las funciones se
realizan en un solo paso.
4. Se revisa el registro de encabezamiento para comprobar si se ha presentado el
programa correcto para la carga (entrando en la memoria disponible).
5. A medida que lee cada registro de texto, el código objeto que contiene pasa a
dirección de la memoria indicada.
6. Cuando se encuentra el registro de fin, el cargador salta a la dirección especificada
para iniciar la ejecución del programa cargado.
3.5.1. Cargador absoluto (ejemplo) Hay dos aspectos del programa
cargador que requieren una mayor
explicación: la variable dir_byte y el campo
dir_ini. El proceso de carga absoluta del
siguiente cargador es: La variable dir_byte
que se declara como apuntador a un carácter
o sea es la dirección de un carácter. Es
razonable suponer que se almacena un
carácter usando un byte de memoria y que,
por consiguiente, la variable dir_byte
contiene la dirección de un byte de memoria.
Inicialmente, esta variable se asigna igual a la
constante DIR_CARGA.En cada iteración del
lazo while, a la posición de memoria
identificada por dir_byte se le asigna el
siguiente byte del archivo ejecutable; después
se incrementa en uno el valor de dir_byte. De
esta manera, el contenido del archivo
ejecutable se copia a posiciones consecutivas
de la memoria a partir de DIR_CARGA.
/***definir la estructura del registro encabezado***/
struct enc_ejec
{unsigned int dir_ini;
/* las otras partes del encabezado del archivo ejecutable */
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS
171
4 MACROPROCESADORES
Objetivo: Entender el funcionamiento de las diversas modalidades del macro procesamiento.
Con el fin de evitar al programador la
tediosa repetición de partes idénticas de un
programa, los ensambladores y compiladores
cuentan con macro procesadores que
permiten definir una abreviatura para
representar una parte de un programa y
utilizar esa abreviatura cuantas veces sea
necesario. Para utilizar una macro, primero
hay que declararla. En la declaración se
establece el nombre que se le dará a la macro
y el conjunto de instrucciones que
representará.
El programador escribirá el nombre
de la macro en cada uno de los lugares donde
se requiera la aplicación de las instrucciones
por ella representadas. La declaración se
realiza una sola vez, pero la utilización o
invocación a la macro (macrollamada) puede
hacerse cuantas veces sea necesario. La
utilización de macros posibilita la reducción
del tamaño del código fuente, aunque el
código objeto tiende a ser mayor que cuando
se utilizan funciones.
El Macro‐ensamblador es un
ensamblador modular, descendiente de los
ensambladores básicos. Hacen todo lo que
puede hacer un ensamblador, y además
proporcionan una serie de Directivas para
definir y ejecutar macro instrucciones (o
simplemente, Macros). Cuando ejecutamos a
una "macro", ésta se expande al cuerpo que
hayamos definido.
Es tan común el empleo de
macroinstrucciones se les considera como
una extensión de los lenguajes. De manera
similar se considera al procesador de
macroinstrucciones o macroprocesador como
una extensión del ensamblador o compilador
utilizado. El macroprocesador se encarga, en
una primera pasada, de registrar todas las
declaraciones de macros y de rastrear el
programa fuente para detectar todas las
macrollamadas. En cada lugar donde
encuentre una macro llamada, el macro
procesador hará la sustitución por las
instrucciones correspondientes. A este
proceso de sustitución se le denomina
expansión de la macro. El macroprocesador
elabora tablas para el manejo de las macros:
Tabla de nombres de macros: consiste en
los nombres de las macros y un índice que
le permite localizar la definición de la
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS
175
Reserva de localidades de memoria con una Macro
Reserva de localidades de memoria con una Rutina
… como se puede apreciar, el tamaño del COP resultante es mayor el de la Macro que el de la Rutina, a su vez la Macro tiene menor tiempo de ejecución.
M1 MACRO
1ER PA
SO
M1 MACRO LDAA [1,X] LDAA [1,X] LDAA [2,X] LDAA [2,X] LDAA [3,X] LDAA [3,X] LDAA [4,X] LDAA [4,X] ENDM ENDM ORG $4000 ORG $4000 M1 4000 M1 ET1 JMP ET1 4010 06 hh ll ET1 JMP ET1 M1 4013 M1 END 4023 END
ORG $4000
ORG $4000 JSR M1 4000 16 hhll JSR M1 ET1 JMP ET1 4003 06 hhll ET1 JMP ET1 JSR M1 4006 16 hhll JSR M1 JMP FIN 4009 06 hhll JMP FIN M1 LDAA [1,X] 400C 05 xb eeff M1 LDAA [1,X] LDAA [2,X] 4010 05 xb eeff LDAA [2,X] LDAA [3,X] 4014 05 xb eeff LDAA [3,X] LDAA [4,X] 4018 05 xb eeff LDAA [4,X] RTS 401C 3D RTS FIN END 401D FIN END
nrh
______________________________________________________________________________ MACROPROCESADORES/ Importancia teórica de macro‐expresiones y usos de un macro‐
procesador
176
4.1. Importancia teórica de macroexpresiones y usos de un macroprocesador
Un macroinstrucción (abreviado
frecuentemente como macro), no es más que
una conveniencia notaciones para el
programador. Una macro representa un
grupo de proposiciones utilizadas
comúnmente en el lenguaje de programación
fuente, para el caso, ensamblador. El
procesador de macros reemplaza cada
macroinstrucción con el grupo
correspondiente de proposiciones del
lenguaje fuente, lo que se denomina
expansión de macros. Por todo lo anterior, las
macroinstrucciones permiten al programador
escribir una versión abreviada de un
programa, dejando que el procesador de
macros maneje los detalles internos. Las
funciones básicas de un procesador de
macros son:
Sustitución de líneas de código por una
referencia simbólica.
Calcular las direcciones efectivas de las
referencias.
Expansión de las referencias en un
archivo intermedio.
El procesador de macros, como puede
verse, no intenta ningún análisis ni traducción
a código objeto del programa fuente, más
bien parece que el procesador hace que
aumente el tamaño de éste. Esto es un
elemento clave para el programador, pues el
uso indiscriminado de macros puede hacer
que el tamaño del código objeto sea enorme
y poco práctico, al contrario de las llamadas a
subrutinas.
Claro que también se paga un precio
alto por el empleo de las llamadas, pues se
pierde tiempo importante en la gestión de la
pila, donde usualmente se pasan los
parámetros. El macroprocesador requiere
tres estructuras de datos para su exitosa
operación.
La tabla de nombres de macros
(TABNOM).
La tabla de código de macros (TABDEF).
La tabla de argumentos (TABARG).
Ahí se guarda toda la información
pertinente a las macros, mientras el
ensamblador analiza la expansión y hace la
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS
183
4.3.1. Ejemplos
1. MEDIANTE EL ALGORITMO DE 2 PASOS, OBENGA EL FORMATO DE SALIDA DEL SIGUIENTE PROGRAMA EN LENGUAJE ENSAMBLADOR, TOME EN CUENTA QUE EL RETORNO DE CARRO ES 13H.
M1 MACRO
1ER PA
SO
M1 MACRO TABSIM LDAA [1,X] LDAA [1,X] ET1 = 4010 LDAA [2,X] LDAA [2,X] LDAA [3,X] LDAA [3,X] TABNOM LDAA [4,X] LDAA [4,X] M1 ENDM ENDM ORG $4000 ORG $4000 TABDEF M1 4000 M1 A6E30001 ET1 JMP ET1 4010 06 hh ll ET1 JMP ET1 A6E30002 M1 4013 M1 A6E30003 END 4023 END A6E30004 …. Recuerda el concepto de expansión? La MACRO, se expansiona y se ve reflejada en el formato de salida S19. PD. He omitido el nombre del archivo, por cuestiones prácticas pero, definitivamente es un dato requerido.
S0 S1 13 4000 A6E30001 A6E30002 A6E30003 A6E30004 7E S1 13 4010 06 40 10 A6E30001 A6E30002 A6E30003 A6 FF S1 06 4020 E30004 B2 S9 03 4023 D9
nrh
______________________________________________________________________________ MACROPROCESADORES/ Incorporación del procesador de macros al ensamblador
184
2. MEDIANTE EL ALGORITMO DE 2 PASOS, OBENGA EL FORMATO DE SALIDA DEL SIGUIENTE PROGRAMA EN LENGUAJE ENSAMBLADOR, TOME EN CUENTA QUE EL RETORNO DE CARRO ES 13H. ESTE EJERCICIO DENOTA EL USO DE LA DIRECTIVA “LOCAL”
M1 MACRO
1ER PA
SO
M1 MACRO TABSIM E1 LOCAL E1 LOCAL E1 = 4000,400A, JMP E1 JMP E1 E2 = 4008 JMP E2 JMP E2 TABNOM LDAA #1 LDAA #1 M1 ENDM ENDM ORG $4000 ORG $4000 TABDEF M1 4000 M1 06 hh ll E2 LDAA #2 4008 86 ii E2 LDAA #2 06 hh ll M1 400A M1 86 ii END 4012 END …. Recuerda el concepto de expansión? La MACRO, se expansiona y se ve reflejada en el formato de salida S19. PD. He omitido el nombre del archivo, por cuestiones prácticas pero, definitivamente es un dato requerido.
S0 S1 13 4000 06 4000 06 4008 86 01 86 02 06 400A 06 4008 6B S1 05 4010 86 01 23 S9 03 4012 AA NOTA:
La 1er parte (06 4000 06 4008 86 01) pertenece a la 1er llamada a la macro (la que se encuentra en la localidad 4000, la 2da llamada a la macro es aquel código mostrado en letra cursiva (06 400A 06 4008 86 01).
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS
189
5. ANEXOS
5.1. CODIGO ASCII El código ASCII (acrónimo inglés de American Standard Code for Information Interchange — Código Estadounidense Estándar para el Intercambio de Información), pronunciado generalmente [áski], es un código de caracteres basado en el alfabeto latino tal como se usa en inglés moderno y en otras lenguas occidentales. Fue creado en 1963 por el Comité Estadounidense de Estándares (ASA, conocido desde 1969 como el Instituto Estadounidense de Estándares Nacionales, o ANSI) como una refundición o evolución de los conjuntos de códigos utilizados entonces en telegrafía. Más tarde, en 1967, se incluyeron las minúsculas, y se redefinieron algunos códigos de control para formar el código conocido como US‐ASCII.
El código ASCII define una relación entre caracteres específicos y secuencias de bits; además de reservar unos cuantos códigos de control para el procesador de textos, y no define ningún mecanismo para describir la estructura o la apariencia del texto en un documento; estos asuntos están especificados por otros lenguajes como los lenguajes de etiquetas.
ASCII
Hex
Símbolo
0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15
0 1 2 3 4 5 6 7 8 9 A B C D E F
NUL SOH STX ETX EOT ENQ ACK BEL BS
TAB LF VT FF CR SO SI
ASCII
Hex
Símbolo
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM
SUB ESC FS GS RS US
ASCII
Hex
Símbolo
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
(espacio)! " # $ % & ' ( ) * + , - . /
ASCII
Hex
Símbolo
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F
0 1 2 3 4 5 6 7 8 9 : ; < = > ?
ASCII
Hex
Símbolo
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
@ A B C D E F G H I J K L M N O
ASCII
Hex
Símbolo
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F
P Q R S T U V W X Y Z [ \ ] ^ _
ASCII
Hex
Símbolo
96 97 98 99
100 101 102 103 104 105 106 107 108 109 110 111
60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F
` a b c d e f g h i j k l
m n o
ASCII
Hex
Símbolo
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F
p q r s t u v w x y z { | } ~
nrh
______________________________________________________________________________ ANEXOS/ SECCIONES DEL MANUAL DE REFERENCIA DEL HC12
190
Ilustración 29 Tabla ASCII
5.2. SECCIONES DEL MANUAL DE REFERENCIA DEL HC12
5.2.1. MODELO DE PROGRAMACION El modelo de programación de cualquier dispositivo lo obtenemos del mismo proveedor, quien nos lo hace saber por medio de su manual de referencia.
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS
191
5.2.2. MODOS DE DIRECCIONAMIENTO DEL HC12
Ilustración 30 Tabla de modos de direccionamiento del HC12
nrh
______________________________________________________________________________ ANEXOS/ SECCIONES DEL MANUAL DE REFERENCIA DEL HC12
5.2.3. TABLA DE OPERACIONES INDEXADAS
Ilustración 31 Formulario indexados
192
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS
193
5.2.4. HOJA DE DATOS DE INSTRUCCIÓN
5.2.5. INSTRUCCIÓN ABREVIADA
nrh
______________________________________________________________________________ ANEXOS/ TABLA DE ILUSTRACIONES
196
5.4. TABLA DE ILUSTRACIONES Ilustración 1 Abaco ______________________________________________________________________ 11 Ilustración 2 Maquina de Pascal ____________________________________________________________ 12 Ilustración 3 Maquina diferencial ___________________________________________________________ 13 Ilustración 4 Tarjetas perforadas ___________________________________________________________ 13 Ilustración 5 MARK I _____________________________________________________________________ 14 Ilustración 6 ENIAC ______________________________________________________________________ 14 Ilustración 7 JOHNN VON NEUMANN _______________________________________________________ 15 Ilustración 8 EDVAC _____________________________________________________________________ 15 Ilustración 9 Abstracción de la computadora __________________________________________________ 20 Ilustración 10 Diagrama a bloques de un CPU simple ___________________________________________ 27 Ilustración 11 Memoria __________________________________________________________________ 29 Ilustración 12 Esquema de Arquitectura Von Neumann _________________________________________ 34 Ilustración 13 Esquema de la Arquitectura Harvard ____________________________________________ 35 Ilustración 14 Modos de direccionamiento aplicables al HC12 ____________________________________ 50 Ilustración 15 Formulario indexados ________________________________________________________ 57 Ilustración 16 Registro de segmento ________________________________________________________ 82 Ilustración 17 Jerarquía de memorias _______________________________________________________ 97 Ilustración 18 Asignación de direcciones en compilación ________________________________________ 97 Ilustración 19 Asignación de direcciones en carga ______________________________________________ 98 Ilustración 20 Asignación de dirección en ejecución ____________________________________________ 98 Ilustración 21 Espacios de memoria lógicos y físicos ____________________________________________ 99 Ilustración 22 Solapamiento en ensamblador ________________________________________________ 100 Ilustración 23 Diagrama de flujo de un Ensamblador de 2 pasos PASO 1 ___________________________ 106 Ilustración 24 Diagrama de flujo de un Ensamblador de 2 pasos PASO 2 ___________________________ 107 Ilustración 25 Ligador ___________________________________________________________________ 151 Ilustración 26 Editor de ligado ____________________________________________________________ 152 Ilustración 27 Problema de liga de objetos __________________________________________________ 154 Ilustración 28 Cargado y llamada de una subrutina (ligado dinámico) _____________________________ 157 Ilustración 29 Tabla ASCII ________________________________________________________________ 190 Ilustración 30 Tabla de modos de direccionamiento del HC12 ___________________________________ 191 Ilustración 31 Formulario indexados _______________________________________________________ 192
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS
197
6. REFERENCIAS
Bibliografía
SYSTEM PROGRAMMING JOHN DONOVAN CPU12 REFERENCE MANUAL MOTOROLA.COM/SEMICONDUCTORS COMPILADORES :Principios, técnicas y herramientas
Aho, Sethi & Ullman, Ed. Addison‐, iberoamericana
MODERN COMPILER IMPLEMENTATION IN C Basic techniques
Appel, Andrew W. Ed. Cambridge
The Intel Microprocessors 8086/8088, 80186/80188, 80286, 80386, 80486, Pentium, and Pentium Pro Processor Architecture, Programming, and Inter‐ facing
BREY, BARRY B. 6a. edición, New Jersey, Merril, 2002.
Microcomputer system BYRD, Joseph S.; Pettus, Robert O. New Jersey, Prentice Hall, 1993
Introduction to Embedded Microcomputer Systems
VALVANO, Jonathan W. Motorola 6811/6812 Simulations, USA , Thomson, 2003
Manuales técnicos de microcomputadores comerciales, HC11, PIC´s, HC08, etc
Microprocesadores avanzados de Intel Barry Brey, Prentice‐Hall Software de Sistema Beck, Leland,.Addison‐Wesley Diseño de Programación de Sistemas Norma Ramírez Hernández ‐ 2008 www.n‐ramirez.com