El Lenguaje de Máquina


Contenido:

Introducción

El Lenguaje de Máquina

El lenguaje Ensambaldor

Ciclos de un Programa

Subrutinas

 

Introducción

Un programa es una lista de instrucciones para dirigir a la computadora con el propósito de que ejecute una tarea de procesamiento de datos, pero ésta sólo puede ejecutarlos cuando están representados internamente en forma binaria, por lo que los programas escritos en cualquier otro lenguaje deben traducirse antes de ejecutarlos. Un programa escrito para una computadora puede estar en una de las siguientes categorías:

1.- Código binario

2.- Código octal o hexadecimal

3.- Código simbólico

4.- Lenguaje de programación de alto nivel.

 

Lenguaje de Máquina

Un programa de lenguaje de máquina es un programa binario de categoría 1. Debido a la equivalencia simple entre las representaciones binaria y octal o hexadecimal, es costumbre denominar a la categoría 2 como lenguaje de máquina. Debido a la relación uno a uno entre una instrucción simbólica y su equivalente binario, un lenguaje ensamblador se considera como un lenguaje a nivel de máquina.

Lenguaje Ensamblador

Un lenguaje de programación se define mediante un conjunto de reglas, la unidad básica de un lenguaje ensamblador es una línea de código. El lenguaje específico se define mediante un conjunto de reglas que especifican los símbolos que pueden utilizarse y cómo pueden combinarse en una línea de código.

Reglas del Lenguaje

Cada línea de un programa de lenguaje ensamblador se arregla en tres columnas llamadas campos. Los campos especifican la siguiente información:

1.- El campo de etiqueta puede estar vacío o especificar una dirección simbólica, que consta de uno, dos o tres caracteres alfanuméricos: el primero debe ser una letra y los otros dos pueden ser letras o números; la etiqueta debe terminar en coma.

2.- El campo de instrucción especifica una instrucción o una seudoinstrucción de máquina, que puede especificar :

a) Una instrucción de referencia a memoria; que ocupa dos o tres símbolos separados por espacios, el primero es un símbolo de tres letras que defina una operación MRI, el segundo es una dirección simbólica, el tercero puede estar presente o no y es la letra I, si no está presente se trata de una instrucción de direccionamiento directo, si está ausente se trata de una instrucción de direccionamiento indirecto.

b) Una instrucción de referencia a registro o de entrada-salida (no MRI); una instrucción no MRI se define como un instrucción que no tiene parte de direccionamiento. Ejemplos:

CLA No MRI

ADD OPR Dirección directa MRI

ADD PTR I Dirección indirecta MRI

c) Una seudoinstrucción con o sin operando; una seudoinstrucción es una instrucción para el ensamblador que proporcione información a cerca de alguna parte de la traducción; en la siguiente tabla se indican las cuatro instrucciones que reconoce el ensamblador:

Símbolo: Información para el ensamblador:
ORG N Informa al ensamblador que la operación u operando de la siguiente línea va a colocarse en la posición de memoria del número hexadecimal N
END Denota el fin del programa simbólico
DEC N Número decimal con signo N para convertirse en binario
HEX N Número hexadecimal N para convertirse en binario

Las seudoinstrucciones DEC N y HEX N especifican la base del operando y le dicen al ensamblador cómo convertir el número N a binario.

 

3.- El campo comentario puede estar vacío o incluir un comentario; si incluye un comentario debe estar precedido por una diagonal para que el ensamblador lo reconozca como comentario; son útiles para dar una explicación del programa.

La traducción de un programa a binario, se realiza a través de un programa especial llamado ensamblador.

 

El Ensamblador

Un ensamblador es un programa que acepta un programa de lenguaje simbólico llamado programa fuente y produce su lenguaje de máquina binario equivalente denominado objeto. El ensamblador opera sobre cadenas de caracteres para producir su interpretación binaria equivalente.

Una línea de código se almacena en posiciones consecutivas de memoria con dos caracteres en cada posición. Puede almacenarse dos caracteres en cada posición porque una palabra de memoria tiene una capacidad de 16 bits, un símbolo de etiqueta se termina con una coma, los símbolos de operación y dirección se terminan con un espacio, y el final de la línea se reconoce mediante el código CR.

La entrada para el ensamblador es el programa de lenguaje simbólico del usuario, el ensamblador examina dos veces esta entrada para producir el código binario equivalente, realizando las siguientes tareas:

Primera Pasada

Durante esta pasada el ensamblador genera una tabla que relaciona todos los símbolos de dirección definidos por el usuario con su valor binario equivalente. La traducción a binario se hace durante la segunda pasada. Para dar seguimiento a la dirección de las instrucciones, el ensamblador utiliza una palabra de memoria llamada contador de posición (LC). El contenido de LC almacena el valor de la localidad de memoria asignada a la instrucción operando que se procesa en este momento. La seudoinstrucción ORG inicializa el contador de posición el contador de posición para el valor de la primera posición, LC se incrementa en 1 después de ejecutar cada línea de código. El ensamblador establece el contador de posición en cero desde el principio.

Segunda Pasada

Las instrucciones de máquina se traducen en la segunda pasada mediante procedimientos de búsqueda en tablas; que consiste en una búsqueda de entradas de tabla para determinar si una opción específica coincide con una de las que se encuentran en la tabla. El ensamblador utiliza cuatro tablas, cualquier símbolo del programa debe estar disponible en una de estas tablas, de otra manera no puede interpretarse; las tablas utilizadas por el ensamblador son:

1.- Tabla de seudoinstrucciones

2.- Tabla MRI

3.- Tabla no-MRI

4.- Tabla de símbolos de dirección

Las entradas de la tabla de seudoinstrucciones son los cuatro símbolos ORG, END, DEC y HEX, la tabla MRI contiene los siete símbolos de la instrucción de referencia a memoria; la tabla no-MRI contiene los símbolos para las 18 instrucciones de referencia a registro y de entrada-salida, la tabla de símbolos de dirección se genera durante la primera pasada.

Diagnóstico de error

Una tarea importante del ensamblador es comprobar los posibles errores en el programa simbólico. Esto se llama diagnóstico de errores; un error puede ser un símbolo no válido de código de máquina que no está presednte en la tabla MRI y no-MRI, otro puede ser una dirección simbólica que no aparece como etiqueta, en cada caso el ensamblador debe presentar el mensaje de error para cada uno.

Ciclos del Programa

Un ciclo de programa es una secuencia de instrucciones que se ejecutan muchas veces, cada ocasión con un conjunto de datos diferentes.

El Compilador

Un compilador es un sistema que traduce un programa escrito en un lenguaje de programación de alto nivel a un programa de lenguaje de máquina. Un Compilador puede utilizar un lenguaje ensamblador como paso Intermedio en la traducción, o puede traducir el programa en forma directa a binario.

Contador de Apuntador

Un apuntador señala la dirección del operando actual y un contador controla la cantidad de veces que se ejecuta el ciclo del programa. En las computadoras con más de un registro de procesador, es posible utilizar un registro de procesador como apuntador, otro como contador y un tercero como acumulador, cuando los registros del procesador se utilizan como apuntadores y contadores reciben el nombre de registros índice.

Programación de Operaciones Aritméticas y Lógicas

Algunas computadoras tienen instrucciones para sumar multiplicar y dividir, otras como la computadora básica sólo tiene una instrucción aritmética, ADD(sumar); las instrucciones que no se incluyen deben implantarse mediante un programa. Las instrucciones implantan mediante un programa se dice que se implantan mediante programación, las instrucciones que efectúan un instrucción de máquina se dice que se implanta mediante hardware, la implantación de hardware es más costosa por los circuitos, la implantación por software da como resultado programas más largos tanto en cantidad de instrucciones como en tiempo de ejecución.

Operaciones Lógicas

La computadora básica tiene tres instrucciones de máquina para ejecutar operaciones lógicas: AND, CMA, y CLA, la instrucción LDA puede considerarse como una operación lógica que transfiere un operando lógico dentro de AC. Cualquier función lógica puede implantarse usando las operaciones AND y complementar; por ejemplo la operación OR no está disponible como instrucción de máquina, pero según el teorema de Morgan: x+y=(x'y')'.

Subrutinas

Una subrutina es un conjunto de instrucciones comunes que realizan una tarea dada, y que se pueden usar muchas veces en un programa. Puede hacerse un llamado a la subrutina desde cualquier parte del programa principal, para hacer que la subrutina reconozca la localidad a la que debe regresar, se debe almacenar la dirección de regreso. En la computadora básica, el enlace de una subrutina y el programa principal es una instrucción BSA(brinca y guarda la dirección de retorno).

Parámetros de Subrutina y enlace de datos

Cuando se llama a una subrutina, es necesario que tenga acceso a los datos desde el programa que la solicita y para regresar los resultados a ese programa, el acumulador puede utilizarse para un parámetro de entrada único y un parámetro de salida único, otra forma de transferir datos a una subrutina es mediante la memoria: colocando los datos en posiciones de memoria después de la llamada, también puede colocarse un bloque de almacenamiento, en cualquier caso la dirección de retorno siempre proporciona la información de enlace para transferir datos entre el programa principal y la subrutina.

Programación de Entrada-Salida

Los usuarios escriben programas con símbolos definidos mediante un lenguaje de programación y se le asigna a cada carácter un código de 8 bits para que pueda almacenarse en memoria. Un carácter codificado en binario se transfiere a la computadora cuando se produce una instrucción INP. Un carácter codificado en binario se transfiere al dispositivo de salida cuando se produce una instrucción OUT; el dispositivo detecta el código binario y escribe el carácter correspondiente.

Interrupción del Programa

El tiempo de ejecución de programas de entrada y salida se forma sobre todo del tiempo que necesita la computadora para esperar al dispositivo externo para que active su bandera. El ciclo de espera que comprueba la bandera mantiene ocupada la computadora con una tarea que emplea demasiado tiempo, este tiempo de espera puede eliminarse si se utiliza la opción de interrupción para notificar a la computadora cuándo está activa una bandera, permitiendo a la computadora ocuparse en otras cosas útiles. Esta opción es útil en un ambiente de multiprogramación cuando residen más de un programa en la memoria al mismo tiempo.

Sólo puede ejecutarse un programa a la vez, mientras los otros esperan; por lo general, datos de entrada o salida. El programa que corre debe incluir la opción ION para atender la interrupción, o la instrucción IOF para apagarla. Para esto se requiere una rutina de servicio que incluya las instrucciones para ejecutar las siguientes tareas:

1.- Salvar el contenido de los registros del procesador.

2.- Comprobar qué bandera está activada

3.- Dar servicio al dispositivo cuya bandera está activada

4.- Recuperar el contenido de los registros del Procesador

5.- Habilitar la opción de interrupción

6.- Regresar al programa principal

Una computadora típica puede tener muchos dispositivos de entrada y salida conectados a la opción de interrupción, las fuentes de interrupción no se limitan a transferencias de entrada y salida; además pueden usarse interrupciones con otros propósitos, como procesar errores internos o condiciones de alarma especial.

Hosted by www.Geocities.ws

1