Sei sulla pagina 1di 34

ANÁLISIS,

DISEÑO YY PROGRAMACIÓN
DISEÑO PROGRAMACIÓN
DE SISTEMAS
DE SISTEMAS
Principio de funcionamiento del Software de Sistemas

ANÁLISIS,
DISEÑO YY PROGRAMACIÓN
DISEÑO PROGRAMACIÓN
DE SISTEMAS
DE SISTEMAS
Principio de funcionamiento del Software de Sistemas

ISBN 970764803-1

Autor: M.C. Norma Ramírez Hernández


M.S.I Graciela Lara López
M.A.S.I. Salomón Eduardo Ibarra Chávez
Revisor Técnico: Ing. Valentín Martínez López
9 789707 648036
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS 
 

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 

 
 
3
 
nrh 

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 

4
    ______________________________________________________________________________ 
Introducción/ Historia 
 
 
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS 
 

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 

 
 
5
 
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS 
 

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  recuperación.  La  programación  tiene  como 
encarga  de  la  automatización  del  manejo  de  objetivo  el  tratamiento  de  la  información 
la información. La informática, por su rapidez  correctamente,  con  lo  que  se  espera  que  un 
de  crecimiento  y  expansión,  ha  venido  programa  de  el  resultado  correcto  y  no  uno 
transformando  rápidamente  las  sociedades  erróneo.  Así  que  cada  aplicación  debe 
actuales.  La  computadora,  a  diferencia  de  funcionar  según  lo  esperado  en  términos  de 
otras herramientas que en general apoyan el  programación,  esta  pretende  que  sus 
esfuerzo físico de los humanos, fue inventada  programas sean útiles y eficientes 
para facilitar el trabajo intelectual.  
Un  sistema  es  un  conjunto  de 
El  lenguaje  de  programación  es  el  componentes que interaccionan entre si para 
medio de comunicación entre el hombre y la  lograr  un  objetivo  común.  Las  personas  se 
máquina.  Sistema  de  símbolos  y  reglas  que  comunican con el lenguaje, que es un sistema 
permite la construcción de programas con los  muy  desarrollado  formado  por  palabras  y 
que  la  computadora  puede  operar  así  como  símbolos  que  tienen  significado  que  tienen 
resolver  problemas  de  manera  eficaz.  Estos  significado para el que habla y para quienes lo 
contienen  un  conjunto  de  instrucciones  que  escuchan, lo mismo es para las computadoras 
nos permiten realizar operaciones de entrada  las cuales tienen sistemas y se comunican por 
/  salida,  calculo,  manipulación  de  textos,  medio de computadoras.  
lógica  /  comparación  y  almacenamiento  / 
 
 
7
 
nrh 

  La  programación  es  el  proceso  de  Por  lo  tanto  la  Programación  de 
convertir  las  especificaciones  a  grandes  Sistemas  se  refiere  a  la  creación  de 
rasgos  de  los  sistemas  en  instrucciones  de  programas  cuya  finalidad  es  servir  a  otros 
máquina  que  produzcan  los  resultados  programas  (software):  ejemplos: 
deseados.   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  Software  de  aplicación:  El  Software de uso general: este 


algunas  ocasiones  también  software  de  hoja  de  cálculo,  ofrece  la  estructura  para  un 
denominado software de base,  de  diseño  asistido  por  gran  número  de  aplicaciones 
consiste  en  un  software  que  computadoras  (CAD),  de  empresariales,  científicas  y 
sirve  para  controlar  e  procesamiento  de  texto,  de  personale;    es  decir,  con 
interactuar  con  el  sistema,  manejo  de  Bases  de  Datos,  software  y  documentación 
proporcionando  control  sobre  pertenece a esta categoría.  orientada a los usuarios  
el  hardware  y    dando  soporte 
   
a otros programas. 
   

8
    ______________________________________________________________________________ 
Introducción/ Historia 
 
 
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS 
 

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.  

 
9
 
 
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  logaritmos permitiendo que los resultados de 
astronomía  y  la  navegación,  impulsó  a  complicadas  multiplicaciones  se  redujeran  a 
simplificar  los  cálculos,    en  ese  entonces  se  un proceso simple de suma; Edmund Gunther 
encontraba  en  uso  "la  regla  del  cálculo",  se  encarga  de  enmarcar  los  logaritmos  de 
calculadora  basada  en  las  invenciones  de  y  Napier en líneas, por su parte Bissaker coloca 
Napier, Gunther Bissaker.  las  líneas  de  ambos  sobre  un  pedazo  de 
madera, creando de esta  manera la regla del 
En  1614,  el  escocés  Napier  había 
cálculo. 
anunciado  el  descubrimiento  de  los 

 
11  
 
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS 
 

1.5.Conjunto de registros y modelo de programación       
      
1.5.1. Conceptos de modelo de programación 
 

La  arquitectura  de  un  (Reduced  Instruction  Set  Computer),  como 


microprocesador  o  de  cualquier  procesador  por  ejemplo  el  PIC16C84  de  MicroChip  o  el 
de computadora, se define por su conjunto de  propio  Sparc  de  SUN  y  el  PPC604  de 
instrucciones  y  por  el  modo  en  como  éstas  Motorola.  Por  otra  parte  tenemos  a  los 
acceden  a  los  datos  en  memoria  para  su  microprocesadores  con  instrucciones 
procesamiento.  compuestas,  los  CISC  (  Complex  Instruction 
Set  Computer  ),  como  el  6809  de  Motorola, 
Las  instrucciones  que  obedece  un 
SIC/XE  y  la  serie  80X86  de  Intel.  Existen 
microprocesador  están  codificadas  como 
algunos procesadores híbridos muy eficientes 
dígitos  binarios  en  su  sistema  de  memoria. 
como  los  famosos  K6,  K6‐II  y  K6‐III  de  AMD. 
Cada  instrucción  puede  dividirse  en  uno  o 
En este punto se ve de acuerdo al manual de 
más  campos  de  bit´s.  Todas  las  instrucciones 
referencia  del  dispositivo  a  tratar.    Para 
tienen  un  campo  de  código  de  operación 
nuestro  curso  el  microprocesador  a  ver  será 
(COP),  que  define  el  propósito  de  la 
el HC12. 
instrucción.  Además,  la  instrucción  completa 
puede  tener  campos  para  operandos  o  El modelo de programación 
direcciones  de  memoria  que  especifican  en  representa la estructura de manipulación de 
donde  están  almacenados  los  datos.  Lo  datos que soporta el conjunto de 
anterior delimita el concepto de "formato de  instrucciones, usualmente compuesta por: 
instrucción".  
• Unidad aritmética y lógica 
Las  instrucciones  por  su  complejidad  • Los registros de trabajo 
pueden  ser  sencillas  o  compuestas.  Los  • El registro de condiciones 
microprocesadores  que  ejecutan  • La memoria de datos 
instrucciones  sencillas  son  los  llamados  RISC 
 

 
 
45
 
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS 
 

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  se  introdujo  el  concepto  de  MNEMONICO, 
programador  tenía  que  interpretar  el  que  sustituye  al  conjunto  de  UNOS  y  CEROS,  
fundamento  de  la  instrucción,  se  escribían  y al conjunto de estos mnemónicos LENGUAJE 
una serie de unos y ceros (lenguaje maquina)  ENSAMBLADOR.  La  entrada  de  dicho 
y  se  grababan  en  la  memoria  del  dispositivo,  programa se le llama PROGRAMA FUENTE y a 
entonces  el  dispositivo  interpretaba  como  la  salida  PROGRAMA  OBJETO  (que  es  la 
esto como una instrucción.    Los  traducción de dichas instrucciones a lenguaje 
programadores  encontraban  esta  tarea  (leer  maquina. 
o  escribir  en  la  memoria)  muy  lenta,  así  que 
Por  lo  tanto,  los  ensambladores  son  Lenguaje  ensamblador  es  el  lenguaje 
programas  que  procesan  los  enunciados  del  simbólico  que  se  utiliza  para  codificar  los 
programa  origen  en  lenguaje  ensamblador  y  programas  origen  que  se  procesan  por  el 
los traducen en archivos en lenguaje máquina  ensamblador  es  llamado  lenguaje 
que son ejecutados por un microprocesador o  ensamblador.  Este  lenguaje  es  una  colección 
un micro controlador, estos permiten que los  de  símbolos  mnemónicos  que  representan: 
programas  origen  se  escriban  y  se  editen  en  operaciones  (mnemónicos  de  instrucciones 
una  computadora  para  generar  un  código  para  la  máquina  o  de  directrices  para  el 
ejecutable en otra computadora. El archivo en  ensamblador),  nombres  simbólicos, 
lenguaje objeto ejecutable resultante se carga  operadores y símbolos especiales. El lenguaje 
(CARGADOR)    y  se  ejecuta  en  el  sistema  ensamblador  proporciona  códigos  de 
destino.   operación  de  los  mnemónicos  para  todas  las 
instrucciones de la  máquina contenidas en la 
lista de instrucciones. 

 
 
67
 
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS 
 

 .Ejemplos 

Mnemónico  C.o.  Explicación  Ejemplos de uso 


No operación, incrementa el contador de 
NOP  A7  Solo un uso: nop 
programa pero no hace nada 
Compara  el  contenido  del  registro  Y  con 
Cpy  Depende de su uso  CPY 04 
un valor especificado 
Suma el contenido del acumulador a con 
ABA  1806  Solo un uso: aba 
el b, el resultado queda en a 
Rota  todos  los  bits  del  acumulador  A 
Rola  45  Solo un uso: rola 
hacia la derecha 
Carga  al  acumulador  un  valor  Ldaa  #01,  ldaa  $01, 
LDAA  Depende de su uso 
especificado  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  o Un asterisco ( * ) como el primer 
por  si  sola  en  una  línea.  El  ensamblador  carácter en el campo de etiquetas 
interpreta  esto  como  "establece  el  valor  indica que el resto del enunciado 
de  la  etiqueta  igual  al  valor  actual  del  origen  es  un  comentario.  Los 
contador de programa (PC)". El campo de  comentarios son ignorados por el 
etiquetas aparece como el primer campo  ensamblador  e  impresos  en  el 
dentro de un enunciado origen. El campo  listado  origen  solamente  como 
de etiquetas puede adoptar cualquiera de  información de programación.  
las siguientes formas:   o Un espacio de carácter en blanco 
(TAB  o  espacio)  como  primer 

 
 
69
 
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS 
 

direccionamientos,  no  todos  son  podrían  ser  las  mismas,  se  enuncian 
aplicables a los micros.  de diferente manera, es decir: 
€ MNEMONICO:     las 
instrucciones  aunque  en  concepto 
 

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 

 
 
75
 
nrh 

programa,  o  definir  macros.  Las  directivas  no  son  traducibles  a  código  máquina.  Nota:  las 
directivas NO tienen código maquina. 

Especificar el punto en el cual se comienza a ensamblar una sección de código. Esta 
  ORG directiva  debe  utilizarse  siempre  antes  de  comenzar  a  declarar  código  o  zonas  de 
memoria. 
Especifica el fin de un archivo en código fuente ensamblador. Esta directiva deber 
END 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   
 

Las directivas DB y DW permiten declarar o reservar zonas de memoria, tanto para 
DC.B 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 
DC.W 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.  
 

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 
 

76
    ______________________________________________________________________________ 
ENSAMBLADORES/ Relación Arquitectura de máquinas y ensamblador 
 
 
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS 
 

2.5.Diseño y programación del ensamblador de dos pasos   
       
Los  lenguajes  son  sistemas  de  2. Codificación  del  mismo:  consiste  en 
comunicación. Un lenguaje de programación  escribir  el  programa  en  algún 
consiste  en  todos  los  símbolos,  caracteres  y  lenguaje  de  programación;  en  este 
reglas  de  uso  que  permiten  a  las  personas  caso  específico  en  ensamblador, 
"comunicarse"  con  las  computadoras.  tomando  como  base  la  solución 
Existen  por  lo  menos  varios  cientos  de  propuesta en el paso anterior. 
lenguajes  y  dialectos  de  programación  3. Traducción  a  lenguaje  máquina,  es 
diferentes.  Algunos  se  crean  para  una  la creación del programa objeto, esto 
aplicación  especial,  mientras  que  otros  son  es,  el  programa  escrito  como  una 
herramientas  de  uso  general  más  flexibles  secuencia de ceros y unos que pueda 
que  son  apropiadas  para  muchos  tipos  de  ser interpretado por el procesador. 
aplicaciones.  En  todo  caso  los  lenguajes  de  4. La  prueba  del  programa:  verificar 
programación deben tener instrucciones que  que  el  programa  funcione  sin 
pertenecen  a  las  categorías  ya  familiares  de  errores, o sea, que haga lo que tiene 
entrada/salida,  cálculo/manipulación  de  que hacer.  
textos,  lógica  /  comparación  y  5. Depuración  La  última  etapa  es  la 
almacenamiento / recuperación.  eliminación  de  las  fallas  detectadas 
en  el  programa  durante  la  fase  de 
Los  lenguajes  de  programación  se 
prueba  .  La  corrección  de  una  falla 
dividen  en  4  principales  paradigmas: 
normalmente  requiere  la  repetición 
imperativo,  funcional,  orientado  a  objetos  y 
de  los  pasos  comenzando  desde  el 
lógico. 
primero o el segundo. 

Para  la  creación  de  un  programa  es 


Un  algoritmo  es  una  serie  de  pasos 
necesario seguir cinco pasos:  
lógicos  para realizar  una  acción,  programa  o 
tarea  ya  que  es  el  primer  paso  para  realizar 
1. Diseño  del  algoritmo:  se  plantea  el 
un  programa.  Los  algoritmos  se  pueden 
problema  a  resolver  y  se  propone  la 
expresar  por fórmulas,  diagramas  de  flujo,  y 
mejor  solución,  creando  diagramas 
pseudocódigos.    Los  algoritmos  tienen 
esquemáticos  utilizados  para  el 
ciertas características que son: 
mejor planteamiento de la solución. 

 
 
101  
nrh 

Ilustración 23 Diagrama de flujo de un Ensamblador de 2 pasos PASO 1


 

106
    ______________________________________________________________________________ 
ENSAMBLADORES/ Diseño y programación del ensamblador de dos pasos 
 
 
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS 
 

Ilustración 24 Diagrama de flujo de un Ensamblador de 2 pasos PASO 2


 

 
 
107  
nrh 

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: 
LARGO DE LA FILA, 

DATO                    ( 
REPRESENTADO 

DATO (2 BYTES) 
DIRECCION DEL 
TIPO DE DATO 

el tamaño es 
NUMERO DE 
DATOS A LO 

POR 1 BYTE 

checksum 
variable) 

S0                   
S1                   
.                   
S1                   
S9                   
ORDEN DE CALCULO COMO SIGUE 
1  4  2  3  5 

120
    ______________________________________________________________________________ 
ENSAMBLADORES/ Diseño y programación del ensamblador de dos pasos 
 
 
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS 
 

2. Mediante  el  algoritmo  de  2  pasos,  obtenga  el  formato  de  salida  S19,  del  siguiente 
programa en lenguaje ensamblador: 

 1.asm 
  ORG $4000 
1=31 (ascii, hexadecimal) ver  
  JMP INI  anexos 
INI  JMP ‐4,Y 
Retorno de carro=13H 
  JMP 4,‐Y 
  JMP 40,Y 
  ORG $4012 
  JMP ‐40,Y  TABSIM 
  JMP A,Y 
INI=$4003 
  END 
PASO 1, SE RESEVA LOCALIDADES DE MEMORIA  PASO  2:    SE  OBTIENE  EL  COP  Y  SE  GENERA  EL 
Y SE GENERA LA TABSIM EN SU CASO  FORMATO DE SALIDA S19 
    Eje1.asm      Eje1.asm 
contloc  Cop    ORG $4000  contloc  cop    ORG $4000 
4000  06 hh ll    JMP INI  4000  06 4003    JMP INI 
4003  05 xb  INI  JMP ‐4,Y  4003  05 5C  INI  JMP ‐4,Y 
4005  05 xb    JMP 4,‐Y  4005  05 6C    JMP 4,‐Y 
4007  05 xb ff    JMP 40,Y  4007  05 E8 28    JMP 40,Y 
400ª      ORG $4012  400A      ORG $4012 
4012  05 xb ff    JMP ‐40,Y  4012  05 E9 D8    JMP ‐40,Y 
4015  05 xb    JMP A,Y  4015  05 EC    JMP A,Y 
4017      END  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:  

 
 
123  
nrh 

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 
 

   

124
    ______________________________________________________________________________ 
ENSAMBLADORES/ EJEMPLOS 
 
 
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS 
 

   
 

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 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
125  
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS 
 

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  compensar  las  variaciones  en  la  cual  la 
un  sistema  operativo  que  es  responsable  de  memoria disponible de la aplicación empieza.  
cargar programas en memoria. El cargador es 
Las computadoras que necesitan de los 
usualmente  una parte del núcleo del sistema 
cargadores  relocalizables  son  aquellos  en  los 
operativo  y  es  cargado  al  iniciar  el  sistema  y 
cuales los punteros son direcciones absolutas 
permanece en memoria hasta que el sistema 
en  vez  de  compensaciones  de  direcciones 
es  reiniciado  o  apagado.  Algunos  sistemas 
base del programa. Un ejemplo muy conocido 
operativos  que  tienen  un  núcleo  paginable 
está en los mainframes IMB Sistema 360 y sus 
pueden  tener  el  cargador  en  una  parte 
descendientes,  incluyendo  la  serie  de  los 
paginable de la memoria, entonces a veces el 
sistemas Z9. Los ligadores dinámicos son otro 
cargador intercambia de memoria. 
tipo  de  cargador  que  carga  y  liga  librerías 
Los  sistemas  operativos  que  soportan  dinámicas (como dll's). 
la  carga  de  programas  tienen  cargadores. 
Muchos cargadores permiten al usuario 
Algunos  sistemas  operativos  empotrados  de 
especificar  opciones  que  modificar  el 
computadoras  altamente  especializadas 
procesamiento  estándar  descrito.  Algunas 
corren  un  único  programa  y  no  existen 
veces  existe  un  archivo  independiente  de 
capacidades  de  carga  de  programas,  por  lo 
entrada  al  cargador  que  contiene  esas 
tanto  no  usan  cargadores.  Ejemplos  de  estos 
proposiciones  de  control  o  esas  mismas 
sistemas  embebidos  se  encuentran  en 
proposiciones  también  pueden  estar 
equipos  de  audio  para  automóviles.  En  los 
intercaladas  en  el  flujo  primario  de  entrada 
sistemas  Unix,  el  cargador  es  el  manejador 
entre  los  programas  objeto.  En  ciertos 
para la llamada del sistema execve(). Algunas 
sistemas  el  programador  puede  incluso 
computadoras  necesitan  cargadores 
introducir  proposiciones  de  control  del 
relocalizables,  los  cuales  ajustan  direcciones 
cargador  en  el  programa  fuente,  y  el 
de memoria (punteros) en un ejecutable para 

 
 
137  
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS 
 

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  contiene la dirección de un byte de memoria. 
cargador  que  requieren  una  mayor  Inicialmente, esta variable se asigna igual a la 
explicación:  la  variable  dir_byte  y  el  campo  constante  DIR_CARGA.En  cada  iteración  del 
dir_ini.  El  proceso  de  carga  absoluta  del  lazo  while,  a  la  posición  de  memoria 
siguiente  cargador  es:  La  variable  dir_byte  identificada  por  dir_byte  se  le  asigna  el 
que se declara como apuntador a un carácter  siguiente byte del archivo ejecutable; después 
o  sea  es  la  dirección  de  un  carácter.  Es  se incrementa en uno el valor de dir_byte. De 
razonable  suponer  que  se  almacena  un  esta  manera,  el  contenido  del  archivo 
carácter  usando  un  byte  de  memoria  y  que,  ejecutable se copia a posiciones consecutivas 
por  consiguiente,  la  variable  dir_byte  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 */  

 
 
159  
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS 
 

4 MACROPROCESADORES 
 

Objetivo: Entender el funcionamiento de las diversas modalidades del macro procesamiento. 

Con el fin de evitar al programador la  puede  hacer  un  ensamblador,  y  además 


tediosa  repetición  de  partes  idénticas  de  un  proporcionan  una  serie  de  Directivas  para 
programa, los ensambladores y compiladores  definir  y  ejecutar  macro  instrucciones  (o 
cuentan  con  macro  procesadores  que  simplemente,  Macros).  Cuando  ejecutamos  a 
permiten  definir  una  abreviatura  para  una  "macro",  ésta  se  expande  al  cuerpo  que 
representar  una  parte  de  un  programa  y  hayamos definido. 
utilizar  esa  abreviatura  cuantas  veces  sea 
Es  tan  común  el  empleo  de 
necesario.  Para  utilizar  una  macro,  primero 
macroinstrucciones  se  les  considera  como 
hay  que  declararla.  En  la  declaración  se 
una  extensión  de  los  lenguajes.  De  manera 
establece el nombre que se le dará a la macro 
similar  se  considera  al  procesador  de 
y  el  conjunto  de  instrucciones  que 
macroinstrucciones o macroprocesador como 
representará. 
una extensión del ensamblador o compilador 
El  programador  escribirá  el  nombre  utilizado.  El  macroprocesador  se  encarga,  en 
de la macro en cada uno de los lugares donde  una  primera  pasada,  de  registrar  todas  las 
se  requiera  la  aplicación  de  las  instrucciones  declaraciones  de  macros  y  de  rastrear  el 
por  ella  representadas.  La  declaración  se  programa  fuente  para  detectar  todas  las 
realiza  una  sola  vez,  pero  la  utilización  o  macrollamadas.  En  cada  lugar  donde 
invocación  a  la  macro  (macrollamada)  puede  encuentre  una  macro  llamada,  el  macro 
hacerse  cuantas  veces  sea  necesario.  La  procesador  hará  la  sustitución  por  las 
utilización  de  macros  posibilita  la  reducción  instrucciones  correspondientes.  A  este 
del  tamaño  del  código  fuente,  aunque  el  proceso  de  sustitución  se  le  denomina 
código objeto tiende a ser mayor que cuando  expansión  de  la  macro.  El  macroprocesador 
se utilizan funciones.  elabora tablas para el manejo de las macros: 

El  Macro‐ensamblador  es  un  ¾ Tabla de nombres de macros:  consiste en 


ensamblador  modular,  descendiente  de  los  los nombres de las macros y un índice que 
ensambladores  básicos.  Hacen  todo  lo  que  le  permite  localizar  la  definición  de  la 

 
 
171  
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS 
 

Reserva de localidades de memoria con una Macro 

 
M1  MACRO      M1  MACRO 
 
  LDAA [1,X]        LDAA [1,X] 
  LDAA [2,X]        LDAA [2,X]   
  LDAA [3,X]        LDAA [3,X] 

1ER PASO  
  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   

Reserva de localidades de memoria con una Rutina 

 
  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   

…  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. 

 
 
175  
nrh 

4.1.Importancia teórica de macro­expresiones y usos de un macro­
procesador 
 

Un  macroinstrucción  (abreviado  El procesador de macros, como puede 


frecuentemente como macro), no es más que  verse, no intenta ningún análisis ni traducción 
una  conveniencia  notaciones  para  el  a  código  objeto  del  programa  fuente,  más 
programador.  Una  macro  representa  un  bien  parece  que  el  procesador  hace  que 
grupo  de  proposiciones  utilizadas  aumente  el  tamaño  de  éste.  Esto  es  un 
comúnmente en el lenguaje de programación  elemento  clave  para  el  programador, pues  el 
fuente,  para  el  caso,  ensamblador.  El  uso  indiscriminado  de  macros  puede  hacer 
procesador  de  macros  reemplaza  cada  que el tamaño del código objeto sea enorme 
macroinstrucción  con  el  grupo  y poco práctico, al contrario de las llamadas a 
correspondiente  de  proposiciones  del  subrutinas.  
lenguaje  fuente,  lo  que  se  denomina 
Claro  que  también  se  paga  un  precio 
expansión de macros. Por todo lo anterior, las 
alto  por  el  empleo  de  las  llamadas,  pues  se 
macroinstrucciones  permiten  al  programador 
pierde tiempo importante en la gestión de la 
escribir  una  versión  abreviada  de  un 
pila,  donde  usualmente  se  pasan  los 
programa,  dejando  que  el  procesador  de 
parámetros.  El  macroprocesador  requiere 
macros  maneje  los  detalles  internos.  Las 
tres  estructuras  de  datos  para  su  exitosa 
funciones  básicas  de  un  procesador  de 
operación.  
macros son: 

¾ La  tabla  de  nombres  de  macros 


¾ Sustitución  de  líneas  de  código  por  una 
(TABNOM).  
referencia simbólica.  
¾ La tabla de código de macros (TABDEF).  
¾ Calcular  las  direcciones  efectivas  de  las 
¾ La tabla de argumentos (TABARG).  
referencias.  
¾ Expansión  de  las  referencias  en  un 
Ahí  se  guarda  toda  la  información 
archivo intermedio.  
pertinente  a  las  macros,  mientras  el 
ensamblador  analiza  la  expansión  y  hace  la 

    ______________________________________________________________________________ 

176
MACROPROCESADORES/ Importancia teórica de macro‐expresiones y usos de un macro‐
procesador 
 
 
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS 
 

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      M1  MACRO    TABSIM 


  LDAA [1,X]        LDAA [1,X]  ET1 = 4010 
  LDAA [2,X]        LDAA [2,X]   
  LDAA [3,X]   
1ER PASO       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 
 

 
 
183  
nrh 

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      M1  MACRO    TABSIM 


E1  LOCAL      E1  LOCAL  E1 = 4000,400A,  
  JMP E1        JMP E1  E2 = 4008 
  JMP E2        JMP E2  TABNOM 

1ER PASO  
  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). 

184
    ______________________________________________________________________________ 
MACROPROCESADORES/ Incorporación del procesador de macros al ensamblador 
 
 
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS 
 

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 ASCII Hex Símbolo ASCII Hex Símbolo ASCII Hex Símbolo

0 0 NUL 16 10 DLE 32 20 (espacio) 48 30 0


1 1 SOH 17 11 DC1 33 21 ! 49 31 1
2 2 STX 18 12 DC2 34 22 " 50 32 2
3 3 ETX 19 13 DC3 35 23 # 51 33 3
4 4 EOT 20 14 DC4 36 24 $ 52 34 4
5 5 ENQ 21 15 NAK 37 25 % 53 35 5
6 6 ACK 22 16 SYN 38 26 & 54 36 6
7 7 BEL 23 17 ETB 39 27 ' 55 37 7
8 8 BS 24 18 CAN 40 28 ( 56 38 8
9 9 TAB 25 19 EM 41 29 ) 57 39 9
10 A LF 26 1A SUB 42 2A * 58 3A :
11 B VT 27 1B ESC 43 2B + 59 3B ;
12 C FF 28 1C FS 44 2C , 60 3C <
13 D CR 29 1D GS 45 2D - 61 3D =
14 E SO 30 1E RS 46 2E . 62 3E >
15 F SI 31 1F US 47 2F / 63 3F ?

ASCII Hex Símbolo ASCII Hex Símbolo ASCII Hex Símbolo ASCII Hex Símbolo

64 40 @ 80 50 P 96 60 ` 112 70 p
65 41 A 81 51 Q 97 61 a 113 71 q
66 42 B 82 52 R 98 62 b 114 72 r
67 43 C 83 53 S 99 63 c 115 73 s
68 44 D 84 54 T 100 64 d 116 74 t
69 45 E 85 55 U 101 65 e 117 75 u
70 46 F 86 56 V 102 66 f 118 76 v
71 47 G 87 57 W 103 67 g 119 77 w
72 48 H 88 58 X 104 68 h 120 78 x
73 49 I 89 59 Y 105 69 i 121 79 y
74 4A J 90 5A Z 106 6A j 122 7A z
75 4B K 91 5B [ 107 6B k 123 7B {
76 4C L 92 5C \ 108 6C l 124 7C |
77 4D M 93 5D ] 109 6D m 125 7D }
78 4E N 94 5E ^ 110 6E n 126 7E ~
79 4F O 95 5F _ 111 6F o 127 7F

 
 
189  
nrh 

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. 

190
    ______________________________________________________________________________ 
ANEXOS/ SECCIONES DEL MANUAL DE REFERENCIA DEL HC12 
 
 
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS 
 

5.2.2. MODOS DE DIRECCIONAMIENTO DEL HC12 
 

Ilustración 30 Tabla de modos de direccionamiento del HC12


 

 
 
191  
nrh 

5.2.3. TABLA DE OPERACIONES INDEXADAS 
 

Ilustración 31 Formulario indexados


 

192
    ______________________________________________________________________________ 
ANEXOS/ SECCIONES DEL MANUAL DE REFERENCIA DEL HC12 
 
 
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS 
 

5.2.4. HOJA DE DATOS DE INSTRUCCIÓN 
 

5.2.5. INSTRUCCIÓN ABREVIADA 

 
 
193  
nrh 

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 
 

196
    ______________________________________________________________________________ 
ANEXOS/ TABLA DE ILUSTRACIONES 
 
 
ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS 
 

6. REFERENCIAS 

Bibliografía 

9 SYSTEM PROGRAMMING    JOHN DONOVAN 
9 CPU12 REFERENCE MANUAL    MOTOROLA.COM/SEMICONDUCTORS 
9 COMPILADORES :Principios, técnicas y    Aho, Sethi & Ullman, Ed. Addison‐, 
herramientas  iberoamericana 
9 MODERN  COMPILER  IMPLEMENTATION  IN    Appel, Andrew W.  Ed. Cambridge
C Basic techniques
9 The Intel Microprocessors 8086/8088,    BREY, BARRY B. 6a. edición, New Jersey, 
80186/80188, 80286, 80386, 80486, Pentium,  Merril, 2002. 
and Pentium Pro Processor Architecture,   
Programming, and Inter‐ facing 
9 Microcomputer system    BYRD, Joseph S.; Pettus, Robert O. New 
Jersey, Prentice Hall, 1993 
9 Introduction to Embedded Microcomputer    VALVANO, Jonathan W. Motorola 
Systems  6811/6812 Simulations, USA , Thomson, 
2003 
9 Manuales técnicos de microcomputadores     
comerciales, HC11, PIC´s, HC08, etc 
9 Microprocesadores avanzados de Intel    Barry Brey,  Prentice‐Hall 
9 Software de Sistema    Beck, Leland,.Addison‐Wesley 
9 Diseño de Programación de Sistemas    Norma Ramírez Hernández ‐ 2008 
9 www.n‐ramirez.com     
9      
9      
 

 
 
197