Llenguatge d'assemblador

De Viquipèdia
Dreceres ràpides: navegació, cerca
Llenguatge de màquina del Intel 8088. El codi de màquina en hexadecimal es ressalta en vermell, l'equivalent en llenguatge assembler en magenta, i les adreces de memòria on es troba el codi, en blau. A sota es veu un text en hexadecimal i ASCII.

El llenguatge d'assemblador (en anglès assembly language) és un llenguatge de programació de baix nivell.[1] Consisteix en un conjunt de mnemònics que representen instruccions bàsiques del processador en concret per tal de facilitar la tasca de programar-lo, a més de macros i altres constants necessàries per programar en una arquitectura de processador concreta. Els programes escrits en assemblador no es compilen, sinó que s'assemblen en fitxers objectes fent servir un programa assemblador. Aquest fitxer posteriorment s'enllaça, mitjançant un programa enllaçador, amb altres possibles llibreries o fitxers objecte formant un executable. Normalment els programes assemblador són capços d'enllaçar els executables, o vénen acompanyats d'un programa enllaçador que s'encarrega de dur a terme la tasca.

El propòsit per al que s'han creat aquest tipus de llenguatges és el de facilitar l'escriptura de programes, ja que escriure directament en codi binari, que és l'únic codi assimilat per l'ordinador, és a la pràctica impossible. El llenguatge té una estreta relació amb l'arquitectura en què s'executa el programa.

El fet de diferenciar entre assemblar llenguatge d'assemblador i compilar qualsevol altre llenguatge és pel fet que el programa assemblador és molt més senzill ja que en els casos més senzills només ha de traduir etiquetes pel codi binari corresponent a la instrucció, per altra banda els compiladors són molt més complexos ja que han d'interpretar un llenguatge molt més proper a nosaltres, necessitant d'eines matemàtiques molt més complexes com teoria de llenguatges i expressions regulars per al reconeixement sintàctic del llenguatge en concret.

Per altra banda, un assemblador (de l'anglès assembler) es refereix al programa informàtic que s'encarrega de traduir aquest codi font simbòlic escrit en llenguatge d'assemblador, en el fitxer objecte que conté el codi màquina, executable directament pel microprocessador pel qual s'ha generat. L'evolució dels llenguatges de programació a partir del llenguatge d'assemblador van originar l'evolució d'aquest programa assemblador, que feia el mateix que avui dia es coneix com a compilador. El programa llegeix el fitxer escrit en llenguatge d'assemblador i substitueix cadascun dels mnemotècnics que apareixen pel seu codi d'operació corresponent en sistema binari per la plataforma que es va escollir com a destí en les opcions específiques de l'assemblador.

Els fitxers de codi font en assemblador són fitxers de text ASCII i solen portar l'extensió .ASM

Tipus de programes assembladors[modifica | modifica el codi]

Podem distingir entre tres tipus d'assembladors:

  • Assembladors bàsics. Són de molt baix nivell, i la seva feina consisteix bàsicament a oferir nombres simbòlics a les distintes instruccions, paràmetres i coses com les formes d'adreçament. A més, reconeix una sèrie de directives (o meta instruccions) que indiquen certs paràmetres de funcionament de l'assemblador.
  • Assembladors modulars, o macro assembladors. Descendents dels assembladors bàsics, foren molt populars en les dècades dels 50 i els 60, abans de la generalització dels llenguatges d'alt nivell. Fan tot el que pot fer un assemblador, i a més a més proporcionen una sèrie de directives per definir i invocar macroinstruccions (o simplement, macros). Vegeu X86.
  • Assembladors modulars 32-bits o d'alt nivell. Són assembladors que van aparèixer com a resposta a una nova arquitectura de processadors de 32 bits, molts d'ells mantenint la compatibilitat podent treballar amb programes amb estructures de 16 bits. A més a més de realitzar la mateixa feina que els anteriors, permetent també l'ús de macros, permetent utilitzar estructures de programació més complexes pròpies dels llenguatges d'alt nivell.

Història[modifica | modifica el codi]

El llenguatge d'assemblador va ésser creat durant la dècada de 1950, quan es van referir a ell com a llenguatge de segona generació. La seva facilitat respecte al que tenien era òbvia. No era el mateix recordar 10110000 01100001 (llenguatge màquina), que MOV AL, 0x61 (llenguatge d'assemblador).

Inicialment la traducció assemblador-màquina havia de fer-se a mà, però aviat apareixerien programes traductors (degut en part a la forma exageradament mecànica de la traducció). Més endavant va ésser gairebé arraconat pels llenguatges de tercera generació que reduïen la complexitat del programes i la dependència en l'arquitectura de la màquina.

Els seus principals inconvenients són:

  • La complexitat creix exponencialment com més gran sigui el programa.
  • És dependent de l'arquitectura del processador.

El seu principal avantatge és la seva eficiència d'execució.

Actualment només s'utilitza per fer programes que interaccionin directament amb el maquinari o amb un gran requeriment d'eficiència.

Vegeu també[modifica | modifica el codi]

Enllaços externs[modifica | modifica el codi]

A Wikimedia Commons hi ha contingut multimèdia relatiu a: Llenguatge d'assemblador Modifica l'enllaç a Wikidata

Referències[modifica | modifica el codi]