Cargando

El pasado mas presente que nunca NES

CURSO DE ASSEMBLY

ATARI 6502

Por ZZT

Lenguaje Assembly

1- Introducción

Primero que nada debemos aclarar que el lenguaje se llama assembly, no assembler como muchos erróneamente creen. Assembly es el lenguaje, assembler es el programa que usamos para "ensamblar" el programa que escribimos. Luego de esta pequeña aclaración, podemos decir que el assembly es un lenguaje de programación de bajo nivel (low-level) para ser usado en sistemas que utilicen una CPU. Este lenguaje nos permite utilizar palabras clave (llamados MNEMÓNICOS) necesarias para programar una particular arquitectura de determinada CPU. Vale decir que cada CPU tiene una determinada forma de ser programada, por lo tanto para programar debemos tener la lista llamada SET DE INSTRUCCIONES, en la cual se específica la función y valor cada código. Este set de instrucciones es definido por el fabricante de cada CPU, todos los códigos ayudan al programador a recordar las instrucciones, registros, etc.

Mnemonico

Hexadecimal

máquina (binario)

LDA

A9

10101001

Como podemos apreciar, es más fácil recordar la palabra clave LDA, que el número hexadecimal A9 o su equivalente 10101001 en binario.

2- Historia

Los primeros lenguajes assembly fueron desarrollados en los años 50's. A los de su generación son los que consideramos lenguajes de "segunda generación". Estos eliminaron la forma de programar de la primera generación (binario puro). Ayudaron mucho a reducir la perdida de tiempo en descubrir donde estaban los errores de programación y el aburrimiento en que incurrían los programadores al tener que recordar códigos en base a números y además calcular las direcciones y saltos en forma manual, cosa que recuerdo tenido que hacer cuando estudiaba, un verdadero fastidio. Por lo tanto fueron amplia y rápidamente utilizados. Si embargo en los gloriosos años 80's su uso fue decayendo al aparecer los lenguajes de tercera generación (hi-level), todo esto en pos de mejorar la productividad con una programación más eficiente. Casi todos los juegos y programas utilitarios hechos por Atari y demás empresas del rubro fueron escritos en assembly, ya que en Basic era imposible conseguir los mismos resultados.

Ordenando un poco la cosa:

Era

Lenguaje

Modo de programación

Primera generación

Binario puro (lenguaje de máquina)

01000101

Segunda generación

Assambly

LDA, STA, etc.

Tercera generación

Basic

FOR, NEXT, INPUT, etc.

Actualmente, el lenguaje assembly se usa principalmente para la manipulación directa del hardware, alta velocidad de proceso, accesando a las instrucciones especializadas del procesador o a direcciones críticas para la operación del sistema. Además un programa ensamblado, no requiere interprete, por lo que ocupa menos cantidad de memoria. Como ejemplo podemos citar los famosos drivers de dispositivos, sistemas especializados como máquinas industriales, computadores de automóviles, teléfonos celulares, etc. Todo lo que tenga una CPU necesita su programa.

3-Ensamblador

Aquí entra en acción el programa que llamamos assembler (ensamblador), el cual es utilizado para traducir el assembly a lenguaje de máquina, que es el único que una CPU puede entender. Esto es válido para todos los lenguajes de programación. El ensamblador realiza una traducción "uno a uno" de cada mnemónico y datos que nosotros escribimos en nuestros programas a lenguaje de máquina.

Por ejemplo:

Assembly:

Código

LDA #0

STA 710

4000 A9 00

4000 99 C6 02

Un compilador, análogamente a un ensamblador, es utilizado para "traducir" lenguajes de alto nivel a lenguaje de máquina o a un código intérprete que ejecute las instrucciones directamente. Algunos ensambladores sofisticados incluyen opciones para facilitar el desarrollo del programa, controlan el proceso de ensamble y ayudan con códigos de error, como lo hace el editplus.

Generalmente, las instrucciones del lenguaje assembly son bastante simples, semejante a los lenguajes de programación de alto nivel. Cada instrucción consiste tipicamente en un mnemónico (pj: LDA) o bien el mnemónico más uno o un par de operandos (pj: LDA #0 ó LDA$FFFF). Los operandos pueden ser valores inmediatos o los valores de los datos almacenados en la memoria. De todas formas, la forma de escribir las instrucciones (sintaxis) es determinada por el fabricante de la CPU que estamos programando.

Es por eso que lo más importante al comenzar a programar en assembly es saber las reglas y que cosa hace cada mnemónico, lo cual pasaremos a ver en el siguiente capítulo.

¿Alguna duda? Puedes consultar en el foro.


Comentarios
Cargando...


Por favor, espere...

Para comentar debes tener una cuenta en el foro.
Haz click aquí para iniciar sesión.