34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

34
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 Principio de funcionamiento del Software de Sistemas ANÁLISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS ANÁLISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS Principio de funcionamiento del Software de Sistemas 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 Principio de funcionamiento del Software de Sistemas ANÁLISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS ANÁLISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS Principio de funcionamiento del Software de Sistemas 9 789707 648036 ISBN 970764803-1

Transcript of 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

Page 1: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

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

Page 2: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

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 

Page 3: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

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 

Page 4: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

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 

 

 

 

 

 

 

 

 

 

 

 

 

 

Page 5: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

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 

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.  

Page 6: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

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  

 

   

Page 7: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

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.  

 

 

 

 

 

 

 

 

 

 

 

 

 

Page 8: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

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 

 

Page 9: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

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 

 

Page 10: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

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. 

Page 11: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

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 

Page 12: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

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 

Page 13: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

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 

 

Page 14: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

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: 

Page 15: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

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  

Page 16: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS  

  

107 

 

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

Page 17: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

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 

Page 18: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

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 

Page 19: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

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  

  

Page 20: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

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 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Page 21: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

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 

Page 22: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

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 */  

Page 23: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

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 

Page 24: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

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 

Page 25: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

nrh 

    ______________________________________________________________________________ MACROPROCESADORES/ Importancia teórica de macro‐expresiones y usos de un macro‐

procesador 

 176 

 

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

 

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 

Page 26: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

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  

 

 

 

 

 

 

 

 

Page 27: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

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

 

 

 

 

 

 

 

 

Page 28: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

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 { | } ~

Page 29: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

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. 

 

Page 30: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

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  

 

Page 31: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

nrh 

    ______________________________________________________________________________ ANEXOS/ SECCIONES DEL MANUAL DE REFERENCIA DEL HC12 

 

 

 

5.2.3. TABLA DE OPERACIONES INDEXADAS  

 

Ilustración 31 Formulario indexados  

 

 

 

 

 

192 

Page 32: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

ANALISIS, DISEÑO Y PROGRAMACIÓN DE SISTEMAS  

  

193 

 

5.2.4. HOJA DE DATOS DE INSTRUCCIÓN  

 

 

5.2.5. INSTRUCCIÓN ABREVIADA 

 

Page 33: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

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  

 

 

 

 

 

 

Page 34: 34282083-ANALISIS-DISENO-Y-PROGRAMACION-DE-SISTEMAS.pdf

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