Llenguatge d'assemblador: diferència entre les revisions

Contingut suprimit Contingut afegit
m bot: - suplantat per els [[Llenguatge + suplantat pels [[Llenguatge
m Millora
Línia 3:
{{Infotaula llenguatge programació}}
[[Fitxer: Codigo de maquina.png | thumb | 400px | Programa en [[llenguatge de màquina]] del [[Intel 8088|I]]<nowiki/>'[[Intel 8088]]. En blau es mostren les adreces de memòria on es troba el codi. El '''codi màquina''' (en [[hexadecimal]]) està ressaltat en vermell. I en magenta l'equivalent en '''llenguatge assemblador'''. A sota es veu un fragment de text en hexadecimal i en [[ASCII]].]]
El '''llenguatge d'assemblador''' (en anglès ''assembly language'' i l'abreviació '''''asm''''') és un llenguatge de programació de [[Llenguatge de baix nivell|baix nivell]].<ref>{{TERMCAT|llenguatge d'assemblador}}</ref> Consisteix en un conjunt de mnemònics que representen instruccions bàsiques del processador, que tenen una correspondència pràcticament d'[[Funció bijectiva|un a un]] entre les instruccions en assemblador i les instruccions del codi màquina de l'arquitectura. Així, cada [[Processador|arquitectura de processador]] té el seu propi llenguatge assemblador, a diferència de la majoria de [[Llenguatge de programació d'alt nivell|llenguatges de programació d'alt nivell]], que solen ser portables a través de múltiples arquitectures però requereixen, llavors, ser [[Intèrpret (informàtica)|interpretats]] o [[Compilador|compilats]].   <ref>{{Ref-web|url=http://www.swansontec.com/sprogram.html|títol=Introduction to Assembly Language|consulta=2017-05-14|llengua=Anglès|editor=www.swansontec.com|data=}}</ref> <ref>{{Ref-web|url=https://learn.mikroe.com/ebooks/8051programming/chapter/elements-of-assembly-language/|títol=5.1 Elements of Assembly Language {{!}} Architecture and programming of 8051 MCUs|consulta=2017-05-14|nom=Milan|cognom=Verle|llengua=Anglès|editor=learn.mikroe.com|data=}}</ref>  
 
Els programes escrits en assemblador s'assemblen en fitxers objectes fent servir un [[Assemblador|programa assemblador]]. Aquest fitxer posteriorment s'enllaça, mitjançant un [[Enllaçador|programa enllaçador]], amb altres possibles [[Llibreria (informàtica)|llibreries]] o [[Fitxer objecte|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.
Línia 14:
 
Els fitxers de codi font en assemblador són fitxers de text ASCII i solen portar l'extensió '''.ASM'''
 
== Tipus de programes assembladors ==
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 [[instrucció|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 assemblador]]s. Descendents dels assembladors bàsics, foren molt populars en les dècades dels [[1950s|50]] i els [[1960s|60]], abans de la generalització dels [[Llenguatges de programació d'alt nivell|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 [[macroinstrucció|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==
Linha 38 ⟶ 30:
Actualment només es fa servir per fer programes que interaccionin directament amb el [[maquinari]] o amb un gran requeriment d'eficiència.
 
== Característiques ==
* El codi escrit en llenguatge d’assemblador posseeix una certa dificultat per a ser entès, ja que la seva estructura s’assembla al llenguatge de màquina, és a dir, és un llenguatge de baix nivell.
* El llenguatge d’assemblador és difícilment portable, és a dir, un codi escrit per a un microprocessador pot necessitar ser modificat per a ser utilitzat en una màquina diferent. Al canviar a una màquina amb una arquitectura diferent, generalment és necessari reescriure’l completament.
* Els programes fets per un programador expert en llenguatge d’assemblador són generalment molt més ràpids i consumeixen menys recursos del sistema (memòria [[Memòria RAM|RAM]] i [[Memòria ROM|ROM]]) que el programa equivalent compilat des d’un llenguatge d’alt nivell. Al programar amb molta cura en llenguatge d’assemblador es poden crear programes que s’executen més ràpidament i ocupen menys espai que el amb el llenguatge d’alt nivell. 
* Amb el llenguatge d’assemblador es té un control molt precís de les tasques realitzades per un microprocessador, pel que es poden crear segments de codi difícils i/o ineficients de programar en un llenguatge d’alt nivell, ja que, entre altres coses, en el llenguatge d’assemblador es disposa d’instruccions del CPU que generalment no estan disponibles en els llenguatges d’alt nivell.
* També es pot controlar el temps en què tarda una rutina en executar-se, i impedir que s’interrompi durant la seva execució.
 
== Ús del llenguatge d'assemblador ==
 
=== Perspectiva històrica ===
Els llenguatges d'assemblador van ser desenvolupats per primer cop als anys 1950, quan van ser referits com a llenguatges de programació de segona generació. Per exemple, el '''SOAP''' (''Symbolic Optimal Assembly Program'') era un llenguatge d'assemblador de 1957 per al computador [[IBM 650]]. Els llenguatges d'assemblador van eliminar molta de la propensió a errors i del consum de temps de la programació dels llenguatges de primera generació, que es necessitava amb els primers computadors, alliberant als programadors del tedi de recordar codis numèrics i càlculs de direcció. Durant un temps van ser àmpliament utilitzats per a tot tipus de programació. Tanmateix, durant els anys 1980 (1990 en els [[Microordinador|microcomputadors]]), el seu ús havia sigut en gran part suplantat pels [[Llenguatge de programació d'alt nivell|llenguatges d’alt nivell]], en la cerca de una productivitat millorada en programació.
 
Linha 62 ⟶ 44:
L’assemblador per al [[Commodore VIC-20|VIC-20]] va ser escrit per Don French i publicat per French Silk. Amb 1639 bytes de longitud, el seu autor creu que és més petit que s’ha escriut mai. L’assemblador suportava l’adreçament simbòlic usual i la definició de cadenen de caràcters o cadenes hexadecimals. També permetia expressions de direccions que podien combinar-se amb les operacions d’adició, substracció, multiplicació, AND lògic, OR lògic, i exponenciació.
 
== ReferènciesCaracterístiques ==
* El codi escrit en llenguatge d’assemblador posseeix una certa dificultat per a ser entès, ja que la seva estructura s’assembla al llenguatge de màquina, és a dir, és un llenguatge de baix nivell.
{{Referències}}
* El llenguatge d’assemblador és difícilment portable, és a dir, un codi escrit per a un microprocessador pot necessitar ser modificat per a ser utilitzat en una màquina diferent. Al canviar a una màquina amb una arquitectura diferent, generalment és necessari reescriure’l completament.
* Els programes fets per un programador expert en llenguatge d’assemblador són generalment molt més ràpids i consumeixen menys recursos del sistema (memòria [[Memòria RAM|RAM]] i [[Memòria ROM|ROM]]) que el programa equivalent compilat des d’un llenguatge d’alt nivell. Al programar amb molta cura en llenguatge d’assemblador es poden crear programes que s’executen més ràpidament i ocupen menys espai que el amb el llenguatge d’alt nivell. 
* Amb el llenguatge d’assemblador es té un control molt precís de les tasques realitzades per un microprocessador, pel que es poden crear segments de codi difícils i/o ineficients de programar en un llenguatge d’alt nivell, ja que, entre altres coses, en el llenguatge d’assemblador es disposa d’instruccions del CPU que generalment no estan disponibles en els llenguatges d’alt nivell.
* També es pot controlar el temps en què tarda una rutina en executar-se, i impedir que s’interrompi durant la seva execució.
 
== Tipus de programes assembladors ==
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 [[instrucció|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 assemblador]]s. Descendents dels assembladors bàsics, foren molt populars en les dècades dels [[1950s|50]] i els [[1960s|60]], abans de la generalització dels [[Llenguatges de programació d'alt nivell|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 [[macroinstrucció|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.
 
== Vegeu també ==
* [[Desassemblador]]
* [[Llenguatge de programació de baix nivell]]
 
 
== Referències ==
{{Referències}}
*
{{Commonscat}}