Als we het over programmeertalen hebben, denken we als eerste aan talen als C, C++, Java, Python, enz. Maar die talen verbergen de feitelijke werking, dat wil zeggen dat ze veel dingen voor gebruikers abstraheren. Maar er is een taal die eigenlijk gebaseerd is op basisconcepten achter de programmering of interactie tussen computerhardware.
Wat is assembleertaal?
Assembleertaal is een taal op laag niveau die helpt rechtstreeks met computerhardware te communiceren. Het maakt gebruik van geheugensteuntjes om de bewerkingen weer te geven die een processor moet uitvoeren. Dat is een tussentaal tussen talen op hoog niveau, zoals C++ en de binaire taal. Het maakt gebruik van hexadecimale en binaire waarden en is leesbaar voor mensen.
Evolutie van assembleertaal?
Assembleertaal is hand in hand geëvolueerd met de vooruitgang op het gebied van computerhardware en de veranderende behoeften van programmeurs. Hier is een nadere blik op elke generatie:
Eerste generatie (1940-1950):
- Computers vertrouwden op vacuümbuizen en het programmeren gebeurde rechtstreeks in machinetaal, met behulp van binaire instructies.
- Assembleertaal ontstond als een leesbare abstractie, waarbij geheugencodes werden gebruikt om machine-instructies weer te geven.
Tweede generatie (1950-1960):
- Transistorgebaseerde computers vervingen de vacuümbuizen en boden verbeterde consistentie en bekwaamheid.
- Assembleerttalen werden ingewikkelder om de complexe instructiesets van deze nieuwe machines te kunnen verwerken. Tegelijkertijd kunnen programmeertalen op hoog niveau, zoals FORTRAN En COBOL verstrekt Geavanceerde abstractie
Derde generatie (1960-1970):
- Geïntegreerde schakelingen werden een standaardplaats, wat resulteerde in verminderde maar krachtige computers.
- Assemblagetalen evolueerden verder en introduceerden functies zoals macro's en symbolische labels, die de productiviteit van programmeurs en de leesbaarheid van de code verhoogden.
Vierde generatie (1970-1980):
- Het begin van de microprocessors transformeerde het computergebruik en maakte de weg vrij voor microcomputersystemen zoals de IBM PC en Apple II.
- Assemblagetalen voor microcomputers werden opnieuw ontworpen om de toegankelijkheid voor de gebruiker te verbeteren, met syntaxisaccentuering en automatische inspringing, waardoor de inclusiviteit voor een grotere groep programmeurs werd vergroot.
Vijfde generatie (1980-heden):
- Dit tijdperk wordt gekenmerkt door het gelijktijdig uitvoeren van meerdere rekentaken, deze methode staat bekend als parallel verwerkingssysteem en de groei van geavanceerde softwaresystemen
- De assembleertaal bleef zich ontwikkelen om aan de eisen van programmeurs te voldoen, met de inzet van geavanceerde foutopsporingsmethoden en -hulpmiddelen gericht op het verbeteren van de codeprestaties en productiviteit voor ingewikkelde systemen.
Hoe assembleertaal werkt?
Assemblagetalen bevatten geheugensteuntjescodes die specificeren wat de processor moet doen. De geheugensteuncode die door de programmeur was geschreven, werd voor uitvoering omgezet in machinetaal (binaire taal). Een assembler wordt gebruikt om assemblagecode om te zetten in machinetaal. Die machinecode wordt ten behoeve van de uitvoering opgeslagen in een uitvoerbaar bestand.
Het stelt de programmeur in staat rechtstreeks te communiceren met de hardware, zoals registers, geheugenlocaties, invoer-/uitvoerapparaten of een ander hardware componenten. Dit zou de programmeur kunnen helpen hardwarecomponenten rechtstreeks te controleren en de bronnen op een efficiënte manier te beheren.
Hoe Assembleertaal uitvoeren?
- Assemblagecode schrijven : Open een teksteditor op het apparaat en schrijf de mnemonische codes erin en sla het bestand op met de juiste extensie volgens uw assembler. Verlenging kan .asm , .S , .asm X.
- Het samenstellen van de code : Converteer uw code naar machinetaal met behulp van een assembler .
- Objectbestand genereren : Er wordt een objectbestand gegenereerd dat overeenkomt met uw code. Het zal een extensie hebben. obj .
- Koppelen en maken van uitvoerbare bestanden : Onze assembleertaal kan meerdere broncodes bevatten. En we moeten ze aan bibliotheken koppelen om het uitvoerbaar te maken. We kunnen hiervoor een linker zoals lk gebruiken.
- Lopend programma : Nadat we een uitvoerbaar bestand hebben gemaakt, kunnen we het zoals gewoonlijk uitvoeren. Het zal afhangen van de software hoe het programma moet worden uitgevoerd.
Onderdelen van assembleertaal
- Registreert: Registers zijn de snelle geheugenlocaties in de processor. Wat helpt GAAN om rekenkundige bewerkingen uit te voeren en gegevens tijdelijk op te slaan. Voorbeeld: Bijl (accumulator), Bx, Cx.
- Commando: Een instructie in assemblagecode, bekend als een commando, informeert de assembler wat hij moet doen. Assemblagetaalinstructies maken doorgaans gebruik van zelfbeschrijvende afkortingen om de woordenschat eenvoudig te maken, zoals ADD voor optelling en MOV voor gegevensverplaatsing.
- Instructies: Instructies zijn de mnemonische codes die we aan de processor geven om specifieke taken uit te voeren, zoals LOAD, ADDITION, MOVE. Voorbeeld: TOEVOEGEN
- Etiketten: Het is een symbolische naam/identificatie die wordt gegeven om een bepaalde locatie of adres in de assemblagecode aan te duiden. Voorbeeld: EERST om het starten van het uitvoeringsgedeelte van de code aan te geven.
- Geheugensteuntje: Een geheugensteuntje is een acroniem voor een assembleertaalinstructie of een naam die aan een machinefunctie wordt gegeven. Elk geheugensteuntje in de assemblage komt overeen met een specifieke machine-instructie. Add is een illustratie van een van deze machineopdrachten. CMP, Mul en Lea zijn enkele andere voorbeelden.
- Macro: Macro's zijn de programmacodes die overal in het programma kunnen worden gebruikt door het aan te roepen zodra we het definiëren. En het is vaak ingebed in assemblers en compilers. We moeten het definiëren met behulp van een richtlijn %macro. Voorbeeld: %macro ADD_TWO_NUMBERS 2
voeg ea, %1 toe
voeg ea, %2 toe
%eindmacro - Operanden: Dit zijn de gegevens of waarden die ons worden gegeven door middel van instructies om er een bewerking op uit te voeren. Voorbeeld: In TOEVOEGEN R1,R2 ; R1 en R2 zijn operanden.
- Opcode: Dit zijn de mnemonische codes die aan de processor specificeren welke bewerking moet worden uitgevoerd. Voorbeeld: ADD betekent toevoeging.
Hexadecimaal getalsysteem is een getalsysteem dat wordt gebruikt om verschillende getallen weer te geven met behulp van 16 symbolen 0 tot 9 cijfers en alfabet van A tot F en zo is een cijfersysteem met grondtal 16. 0 tot 9 in decimaal en hexadecimaal is hetzelfde.
Decimaal naar hexadecimaal tabel
Decimale cobol-programmering | Hex | Decimale | Hex | Decimale | Hex | Decimale | Hex |
---|---|---|---|---|---|---|---|
0 | 0 | 10 | A | twintig | 14 | 30 | 1E |
1 | 1 | elf | B | eenentwintig | vijftien | 31 | 1F |
2 | 2 | 12 | C | 22 | 16 | 32 | twintig |
3 | 3 | 13 | D | 23 | 17 | 33 | eenentwintig |
4 | 4 | 14 | EN | 24 | 18 | 3. 4 | 22 |
5 | 5 | vijftien | F | 25 | 19 | 35 | 23 |
6 | 6 | 16 | 10 | 26 | 1A | 36 | 24 |
7 mb versus gb | 7 | 17 | elf | 27 | 1B | 37 | 25 |
8 | 8 | 18 | 12 | 28 | 1 C | 38 | 26 |
9 | 9 | 19 | 13 | 29 | 1D | 39 | 27 |
Hexadecimale getallen kunnen eenvoudig worden geconverteerd naar een andere vorm, zoals het binaire getalsysteem, het decimale getalsysteem, het octale getalsysteem en vice versa. In dit artikel richten we ons alleen op het omzetten van hexadecimaal naar decimaal en omgekeerd.
Decimaal naar hexadecimaal conversie:
Stap 1: Voer een decimale waarde N in.
Stap 2: Verdeel N door 16 en bewaar de rest.
Stap 3: Deel het quotiënt opnieuw door 16, verkregen in stap 2 en sla de rest op.
Stap 3: herhaal stap 3 totdat het quotiënt 0 wordt.
stap 4: Schrijf de rest in omgekeerde volgorde en dit is de hexadecimale waarde van het getal.
Voorbeeld: Converteer 450 decimale waarde naar hexadecimaal.
stap 1: N = 450.
Stap 2: 450/16 geeft Q = 28, R = 2.
Stap 3: 28/16 geeft Q = 1, R = 12 = C.
Stap 4: 1/16 geeft Q = 0, R = 1.
Stap 5: hexadecimaal van 450 is 1C2.
Hexadecimaal naar decimaal conversie
Om hexadecimaal naar decimaal te converteren, vermenigvuldigt u elk cijfer met 16 tot de macht van de positie, beginnend vanaf rechts, en de positie van het meest rechtse cijfer is 0. Voeg vervolgens het resultaat toe.
Voorbeeld: Converteren (A7B) 16 naar decimaal.
(A7B)16= EEN×162+7×161+ B× 160
⇒ (A7B)16= 10 × 256 + 7 × 16 + 11 × 1 (converteer symbolen A en B naar hun decimale equivalenten; A = 10, B = 11)
⇒ (A7B)16= 2560 + 112 + 11
⇒ (A7B)16= 2683
Daarom is het decimale equivalent van (A7B)16is (2683)10.
Voordelen van assembleertaal
- Het biedt nauwkeurige controle over de hardware en dus een betere code-optimalisatie.
- Het biedt directe toegang tot hardwarecomponenten zoals registers, waardoor oplossingen op maat voor hardwareproblemen mogelijk zijn.
- Efficiënt gebruik van hulpbronnen vanwege controle op laag niveau, geoptimaliseerde code, bewustzijn van hulpbronnen, maatwerk enz.
- Het is ideaal voor programmeren microcontrollers , sensoren en andere hardwarecomponenten.
- Het wordt gebruikt bij beveiligingsonderzoeken voor het vinden van beveiligingskwetsbaarheden en bij reverse engineering-software voor systeembeveiliging.
- Het is zeer essentieel voor het maken van de besturingssystemen , kern En apparaatcontrollers dat hardware-interactie vereist voor zijn functionaliteit.
Nadelen van assembleertaal
- Complex en erg moeilijk om de taal te leren, vooral voor beginners.
- Het is sterk machineafhankelijk. Het beperkt dus de draagbaarheid.
- Het is erg moeilijk om de code te onderhouden, vooral voor grootschalige projecten.
- Het is erg tijdrovend omdat het erg moeilijk te begrijpen is en de code erg lang is.
- Foutopsporing is een grote uitdaging voor programmeurs.
Veelgestelde vragen over assembleertaal – Veelgestelde vragen
Waar wordt assembleertaal voor gebruikt?
- Ontwikkeling van besturingssystemen
- Aanmaak van apparaatstuurprogramma
- Ingebouwde systeemprogrammering
- Realtime toepassingen
- Beveiligingsonderzoek
Verschil tussen assembleertaal en taal op hoog niveau?
Assemblagetaal is geheugensteuncodes en nauw verwant aan de instructieset van de CPU. In HLL is er sprake van abstractie.
Welke CPU-architectuur moet ik leren voor assemblageprogrammering?
8085- en 8086-microprocessorarchitecturen zijn veel beter om concepten te begrijpen.
Is assembleertaal nog steeds relevant in het moderne computergebruik?
Ja. Assembleertaal blijft relevant.