Assembly Language Definition

Vad är ett församlingsspråk?

Ett assemblerspråk är en typ av programmeringsspråk på låg nivå som är avsett att kommunicera direkt med en dators hårdvara.Till skillnad från maskinspråk, som består av binära och hexadecimala tecken, är assemblerspråk utformade för att kunna läsas av människor.

Lågnivåprogrammeringsspråk som assemblerspråk är en nödvändig brygga mellan den underliggande hårdvaran i en dator och de högre programmeringsspråken - som Python eller JavaScript - där moderna program är skrivna.

Viktiga takeaways

  • Ett assemblerspråk är en typ av programmeringsspråk som översätter högnivåspråk till maskinspråk.
  • Det är en nödvändig brygga mellan mjukvaruprogram och deras underliggande hårdvaruplattformar.
  • Assembly språk förlitar sig på språksyntax, etiketter, operatörer och direktiv för att konvertera kod till användbar maskininstruktion.
  • Assembly-språket kan passera genom single-pass eller multi-pass assemblers, var och en med specifika användningsområden och fördelar.
  • Idag skrivs assemblerspråk sällan direkt, även om de fortfarande används i vissa nischapplikationer som när prestandakraven är särskilt höga.

Hur Assembly Languages ​​fungerar

I grund och botten är de mest grundläggande instruktionerna som exekveras av en dator binära koder, bestående av ettor och nollor.Dessa koder översätts direkt till "på" och "av" tillstånden för den elektricitet som rör sig genom datorns fysiska kretsar.I huvudsak utgör dessa enkla koder grunden för "maskinspråk", den mest grundläggande variationen av programmeringsspråk.

Naturligtvis skulle ingen människa kunna konstruera moderna program genom att explicit programmera ettor och nollor.Istället måste mänskliga programmerare förlita sig på olika lager av abstraktion som kan tillåta sig att formulera sina kommandon i ett format som är mer intuitivt för människor.

Specifikt utfärdar moderna programmerare kommandon på så kallade "högnivåspråk", som använder intuitiv syntax som hela engelska ord och meningar, såväl som logiska operatorer som "och", "eller" och "annat" som är bekant till vardagsbruk.

I slutändan måste dock dessa kommandon på hög nivå översättas till maskinspråk.Istället för att göra det manuellt förlitar sig programmerare på assemblerspråk vars syfte är att automatiskt översätta mellan dessa högnivå- och lågnivåspråk.De första assemblerspråken utvecklades på 1940-talet, och även om moderna programmerare och moderna processorer för naturliga språk tillbringar väldigt lite tid med att hantera assemblerspråk, förblir de ändå väsentliga för en dators övergripande funktion.

Under de första dagarna av datoranvändning skulle både systemprogrammering och applikationsprogrammering ske helt i assemblerspråk.Utan assemblerspråk hade många moderna datorer och överordnade språk vi använder idag inte varit möjliga.

Komponenter i Assembly Language

Syntax

När du skriver vilken kod som helst på vilket programspråk som helst, finns det en observerbar, specifik ordning av regler som måste följas för att en kompilator ska kunna exekvera koden utan fel.Dessa regler definieras som syntaxen och de innehåller kriterier som maximalt antal tillåtna tecken, vilka tecken kodrader måste börja med eller vad vissa symboler "dvs ett semikolon" betyder.

Märka

En etikett är en symbol som representerar adressen där en instruktion eller data lagras.Dess syfte är att fungera som destination när det hänvisas till i ett uttalande.Etiketter kan användas överallt där en adress kan användas i assemblerspråk.En symbolisk etikett består av en identifierare följt av ett kolon, medan numeriska etiketter består av en enda digital följt av ett kolon.

Operatörer

Även kallade kommandon, operatorer är logiska uttryck som förekommer efter etikettfältet.Dessutom måste den föregås av minst ett blanksteg.Operatörer kan antingen vara opcode eller direktiv.Opcode motsvarar direkt maskininstruktioner, och operationskoden inkluderar alla registernamn som är associerade med instruktionen.Alternativt är anvisningar för driftkoder instruktioner kända av montören.

Direktiv

Direktiv är instruktioner till montören som talar om vilka åtgärder som måste ske under monteringsprocessen.Direktiv har vikten av att deklarera eller reservera minne för variabler; dessa variabler kan återkallas senare i processer för att utföra mer dynamiska funktioner.Direktiv används också för att dela upp program i olika avsnitt.

Makro

Ett assemblerspråksmakro är en mall som skoformat presenterar en serie eller ett mönster av uttalanden.Denna sekvens av assemblerspråkssatser kan vara gemensam för flera olika program.En makrofunktion används för att tolka makrodefinitioner, medan ett makroanrop infogas i källkoden där "normal" assemblykod skulle ha hamnat istället för makrouppsättningen med uttalanden.

Mnemonisk

En mnemonik är en förkortning för en operation.Ett minnesminne läggs in i operationskoden för varje monteringsprograminstruktion för att specificera en förkortad "opkod" som representerar en större, komplett uppsättning koder.Till exempel har mnemonin "multiplicera med två" en fullständig uppsättning kod som utför mnemonin.

Högfrekvent handel

Idag är assemblerspråk fortfarande föremål för studier av datavetenskapsstudenter, för att hjälpa dem att förstå hur modern mjukvara relaterar till dess underliggande hårdvaruplattformar.I vissa fall måste programmerare fortsätta att skriva på assemblerspråk, till exempel när kraven på prestanda är särskilt höga, eller när hårdvaran i fråga är inkompatibel med några aktuella högnivåspråk.

Ett sådant exempel som är relevant för finansiering är plattformarna för högfrekvenshandel (HFT) som används av vissa finansiella företag.På denna marknadsplats är transaktionernas hastighet och noggrannhet av största vikt för att HFT-handelsstrategierna ska visa sig vara lönsamma.Därför, för att få ett försprång gentemot sina konkurrenter, har vissa HFT-företag skrivit sin handelsmjukvara direkt på assemblerspråk, vilket gör det onödigt att vänta på att kommandon från ett språk på högre nivå ska översättas till maskinspråk.

Många tror att assemblerspråk har de brantaste inlärningskurvorna och är de svåraste datorspråken att lära sig.

Fördelar och nackdelar

Assembly-språk kan vanligtvis köras snabbare än högnivåspråk.Det är relativt enkelt att infoga eller ta bort komponenter i assemblerspråkskod, och assemblerspråk kräver vanligtvis färre instruktioner för att slutföra en uppgift jämfört med andra typer av språk.

Assembly-språk används också ofta av programmerare som vill ha större kontroll över sina datorer eftersom assemblerspråk låter dig direkt manipulera din hårdvara.På grund av dess snabbhet och betydelse är vissa program specifikt skrivna med assemblerspråk eftersom koden vanligtvis kan förbli mindre.

Sammansättningsspråk tenderar att ha flera nackdelar.Långa program skrivna med assemblerspråk kräver vanligtvis tyngre datorkraft och kan inte köras på små datorer.Vissa kan tycka att syntaxen för assemblerspråk är svårare att komma ihåg, och det kan ta lite längre tid att koda med assemblerspråk eftersom det är mer komplext.Dessutom är assemblerspråk vanligtvis inte portabelt mellan olika fabrikat av olika datorer; liknande hur personalförmåner går förlorade när man byter företag kan språk inte sömlöst översättas till olika datorer.

Fördelar
  • Utförandet kan vara enklare jämfört med andra språk

  • Utförandet är vanligtvis snabbare jämfört med andra språk

  • Möjliggör direkt kontroll över hårdvara

  • Koden kan förbli mindre jämfört med andra språk

Nackdelar
  • Programmering kan vara mer utmanande att ta till sig jämfört med språk på hög nivå

  • Syntax för assemblerspråk är svårt

  • Ej bärbar mellan maskiner

Typer av montörer

Monteringsspråk måste översättas till maskinspråk med hjälp av en assembler.Det finns två primära typer av montörer.

En enkelpassad assembler skannar ett program en gång och gör ett likvärdigt binärt program.Denna typ av assembler validerar assemblerspråkskod genom att slå upp koden i en mnemonisk kodtabell.En enkelpasssamlare är ofta snabbare än en multipassmonterare, och det finns vanligtvis inget behov av att konstruera någon mellankod.

En multi-pass assembler betyder att assembler använder mer än en pass.Multi-pass assemblers skapar en tabell med varje symbol och vart och ett av deras värden i det första passet, och använder sedan tabellen i framtida pass för att generera ny kod.Varje separat pass hanterar vanligtvis en annan specifik uppgift.Även om de vanligtvis är långsammare, kan flerpassagemontörer med modulära strukturer ofta återanvändas för olika maskiner.

Exempel på Assembly Language Code

Nedan är ett exempel på NASM (Netwide Assembler) assembly-språkkod.

Exempel på Assembly Language Code.

Loyola Marymount University

I det här exemplet triggar SYSCALL-instruktionen mot slutet av koden den del av minnet där operativsystemtjänsterna är lagrade.Sedan används koden RAX för att anropa kod som ska skrivas, sedan RDI för att avsluta.SYSCALL-funktionen används två gånger för att anropa operativsystemet samt för att indikera för systemet när koden är klar och det är dags att avsluta.

Vad är ett exempel på ett assemblerspråk?

De mest använda assemblerspråken inkluderar ARM, MIPS och x86.

Är C++ ett assemblerspråk?

C++ består inte av monteringskod.C++-datorspråket består av C++-kod som en kompilator översätter till en körbar maskinkod.

Är Python ett assemblerspråk?

Python är mer avancerat än assemblerspråk.Assembly-språk anses vara ett lågnivåspråk, medan högnivåspråk som C, Java eller Python använder 0:or och 1:or istället för siffror, symboler och förkortningar.

Hur används Assembly-språk idag?

Även om de anses vara språk på lägre nivå jämfört med mer avancerade språk, används fortfarande assemblerspråk.Assembly-språk används för att direkt manipulera hårdvara, komma åt specialiserade processorinstruktioner eller utvärdera kritiska prestandaproblem.Dessa språk används också för att utnyttja sin hastighetsfördel framför högnivåspråk för tidskänsliga aktiviteter som högfrekvent handel.

Poängen

Assembly-språk är lågnivåkod som förlitar sig på ett starkt samband mellan instruktionerna som matas in med hjälp av kodningsspråket och hur en maskin tolkar kodinstruktionerna.Koden konverteras till körbara åtgärder med hjälp av en assembler som omvandlar indata till igenkännbara instruktioner för maskinen.Även om det var utbredd under de första dagarna av datoranvändning, använder många större system språk på högre nivå.