logo

Hvad er Assembly Language?

Når vi taler om programmeringssprog, er det første, vi tænker på, sprog som C, C++, Java, Python osv. Men disse sprog skjuler det faktiske arbejde, dvs., at det abstraherer mange ting fra brugerne. Men der er et sprog, der virkelig ligger på grundlæggende begreber bag programmeringen eller interaktionen mellem computerhardware.

Hvad er Assembly Language?

Forsamlingssprog er et sprog på lavt niveau, der hjælper med at kommunikere direkte med computerhardware. Den bruger mnemonics til at repræsentere de operationer, som en processor skal udføre. Som er et mellemsprog mellem sprog på højt niveau som f.eks C++ og det binære sprog. Den bruger hexadecimale og binære værdier, og den kan læses af mennesker.



Udvikling af forsamlingssprog?

Forsamlingssproget har udviklet sig hånd i hånd med fremskridt inden for computerhardware og programmørernes skiftende behov. Her er et nærmere kig på hver generation:

Første generation (1940-1950):

  • Computere var afhængige af vakuumrør, og programmeringen var direkte på maskinsprog ved hjælp af binære instruktioner.
  • Forsamlingssprog opstod som en læsbar abstraktion, der brugte mnemoniske koder til at repræsentere maskininstruktioner.

Anden generation (1950-1960):



  • Transistor-baserede computere erstattede vakuumrør, hvilket giver forbedret konsistens og dygtighed.
  • Assembly sprog blev mere indviklede til at håndtere de komplekse instruktionssæt af disse nye maskiner. Samtidig kan programmeringssprog på højt niveau som FORTRAN og COBOL forudsat Avanceret abstraktion

Tredje generation (1960-1970):

  • Integrerede kredsløb blev standardplads, hvilket resulterede i formindskede, men potente computere.
  • Assembly-sprogene udviklede sig yderligere og introducerede funktioner som makroer og symbolske etiketter, som øgede programmørens produktivitet og kodelæsbarhed.

Fjerde generation (1970-1980):

  • Begyndelsen på mikroprocessorer transformerede databehandling og banede vejen for mikrocomputersystemer såsom IBM PC og Apple II.
  • Samlingssprog til mikrocomputere blev redesignet for at forbedre brugernes tilgængelighed, med syntaksfremhævning og automatisk indrykning, hvilket øger inklusiviteten for en større gruppe af programmører.

Fifth Generation (1980-nutid):



  • Denne æra er karakteriseret ved at udføre flere beregningsopgaver samtidigt, denne metode er kendt som parallelt behandlingssystem og væksten af ​​sofistikerede softwaresystemer
  • Assembly sprog fortsatte med at udvikle sig for at imødekomme kravene fra programmører, med implementeringen af ​​avancerede fejlfindingsmetoder og -værktøjer fokuseret på at forbedre kodeydeevne og produktivitet.til indviklede systemer.

Hvordan fungerer Assembly Language?

Assembly sprog indeholder mnemoniske koder, der specificerer, hvad processoren skal gøre. Den mnemoniske kode, der blev skrevet af programmøren, blev konverteret til maskinsprog (binært sprog) til udførelse. En assembler bruges til at konvertere assemblerkode til maskinsprog. Denne maskinkode er gemt i en eksekverbar fil af hensyn til eksekveringen.

Det gør det muligt for programmøren at kommunikere direkte med hardwaren såsom registre, hukommelsesplaceringer, input/output enheder eller enhver anden hardware komponenter. Hvilket kunne hjælpe programmøren til direkte at kontrollere hardwarekomponenter og til at styre ressourcerne på en effektiv måde.

Hvordan udføres Assembly Language?

  • Skriv montagekode : Åbn en hvilken som helst teksteditor i enheden og skriv mnemoniske koder i den og gem filen med en korrekt udvidelse i henhold til din assembler. Forlængelse kan være .asm , .s , .asm x.
  • Samling af koden : Konverter din kode til maskinsprog ved hjælp af en samler .
  • Genererer objektfil : Det vil generere en objektfil svarende til din kode. Den får en forlængelse. obj .
  • Sammenkædning og oprettelse af eksekverbare filer : Vores assemblersprog kan indeholde flere kildekoder. Og vi er nødt til at linke dem til biblioteker for at gøre det eksekverbart. Vi kan bruge en linker som lk til dette formål.
  • Kørende program : Efter at have oprettet en eksekverbar fil kan vi køre den som normalt. Det afhænger af softwaren, hvordan programmet skal køres.

Komponenter af Assembly Language

  • Registre: Registre er de hurtige hukommelsesplaceringer placeret inde i processoren. Hvilket hjælper at udføre aritmetiske operationer og midlertidig lagring af data. Eksempel: Axe (akkumulator), Bx, Cx.
  • Kommando: En instruktion i assemblerkoden kendt som en kommando informerer assembleren om, hvad han skal gøre. Instruktioner til monteringssprog anvender typisk selvbeskrivende forkortelser for at gøre ordforrådet simpelt, som ADD til tilføjelse og MOV til dataflytning.
  • Instruktioner: Instruktioner er de mnemoniske koder, som vi giver til processoren for at udføre specifikke opgaver som LOAD, ADDITION, MOVE. Eksempel: ADD
  • Etiketter: Det er et symbolsk navn/identifikator givet for at angive en bestemt placering eller adresse i samlingskoden. Eksempel: FØRST for at angive start af eksekveringsdel af koden.
  • Mnemonisk: En mnemonic er et akronym for en assemblerinstruktion eller et navn givet til en maskinfunktion. Hver mnemonic i samling svarer til en specifik maskininstruktion. Tilføj er en illustration af en af ​​disse maskinkommandoer. CMP, Mul og Lea er blandt andre eksempler.
  • Makro: Makroer er de programkoder, der kan bruges overalt i programmet ved at kalde det, når vi først har defineret det. Og det er ofte indlejret med assemblere og compilere. Vi bør definere det ved hjælp af et direktiv % makro. Eksempel: %makro ADD_TWO_NUMBERS 2
    tilføj eax, %1
    tilføj eax, %2
    %endmacro
  • Operander: Disse er de data eller værdier, som vi får gennem instruktion om at udføre en eller anden operation på dem. Eksempel: I ADD R1,R2 ; R1 og R2 er operander.
  • Opkode: Disse er de mnemoniske koder, der specificerer processoren, hvilken handling der skal udføres. Eksempel: ADD betyder tilføjelse.

Hexadecimalt talsystem er et talsystem, der bruges til at repræsentere forskellige tal ved hjælp af 16 symboler, der er fra 0 til 9 cifre og A til F alfabet og det er et basis-16-talsystem. 0 til 9 i decimal og hexadecimal er det samme.

Decimal til hexadecimal tabel

Decimal

Hex

Decimal

Hex

Decimal

Hex

Decimal

Hex

0

forbindelser i java

0

10

EN

tyve

14

30

1E

1

forespørgselsvælger

1

elleve

B

enogtyve

femten

31

1F

2

2

12

C

22

16

32

tyve

3

3

13

D

23

17

33

enogtyve

4

4

14

OG

24

18

3. 4

22

5

5

femten

F

25

tilføje til array java

19

35

23

6

6

16

10

26

1A

36

24

7

7

17

elleve

27

1B

37

25

8

8

18

12

28

1 C

38

26

9

'bankmands algoritme'

9

19

13

29

1D

39

27

Hexadecimale tal kan nemt konverteres til en anden form som binært talsystem, decimaltalssystem, oktaltalssystem og omvendt. I denne artikel fokuserer vi kun på at konvertere hexadecimal til decimal og omvendt.

Decimal til hexadecimal konvertering:

Trin 1: Tag en input decimalværdi N.

Trin 2: Opdel N med 16 og gem resten.

Trin 3: Opdel igen kvotienten med 16 opnå i trin 2 og gem resten.

Trin 3: Gentag trin 3, indtil Quotient bliver 0.

trin 4: Skriv resten i omvendt rækkefølge, og dette er den hexadecimale værdi af tallet.

Eksempel: Konverter 450 decimalværdi til hexadecimal.

trin 1: N = 450.

Trin 2: 450/16 giver Q = 28, R = 2.

Trin 3: 28/16 giver Q = 1, R = 12 = C.

Trin 4: 1/16 giver Q = 0, R = 1.

Trin 5: hexadecimal på 450 er 1C2.

Hexadecimal til decimal konvertering

For at konvertere hexadecimal til decimal skal du gange hvert ciffer med 16 i potensen af ​​dets position begyndende fra højre, og positionen for ciffer længst til højre er 0, og derefter tilføje resultatet.

Eksempel: Konverter (A7B) 16 til decimal.

(A7B)16= A × 162+7×161+ B × 160

⇒ (A7B)16= 10 × 256 + 7 × 16 + 11 × 1 (konverter symbolerne A og B til deres decimalækvivalenter; A = 10, B = 11)

middag vs aftensmad

⇒ (A7B)16= 2560 + 112 + 11

⇒ (A7B)16= 2683

Derfor er decimalækvivalenten til (A7B)16er (2683)10.

Fordele ved Assembly Language

  • Det giver præcis kontrol over hardware og dermed øget kodeoptimering.
  • Det giver direkte adgang til hardwarekomponenter som registre, så det muliggør skræddersyede løsninger til hardwareproblemer.
  • Effektiv ressourceudnyttelse på grund af kontrol på lavt niveau, optimeret kode, ressourcebevidsthed, tilpasning osv.
  • Den er ideel til programmering mikrocontrollere , sensorer og andre hardwarekomponenter.
  • Det bruges i sikkerhedsundersøgelser til at finde sikkerhedssårbarheder, reverse engineering software til systemsikkerhed.
  • Det er meget vigtigt for fremstillingen operativsystemer , kerne og enhedscontrollere der kræver hardwareinteraktion for dets funktionalitet.

Ulemper ved Assembly Language

  • Kompleks og meget svært at lære sproget især for begyndere.
  • Det er meget maskinafhængigt. Så det begrænser portabiliteten.
  • Det er virkelig svært at vedligeholde koden, især for store projekter.
  • Det er meget tidskrævende, da det er virkelig svært at forstå og meget lang kode.
  • Debugging er meget udfordrende for programmører.

Ofte stillede spørgsmål om samlingssprog – ofte stillede spørgsmål

Hvor bruges assemblersprog til?

  • Udvikling af operativsystemer
  • Oprettelse af enhedsdriver
  • Programmering af indlejrede systemer
  • Realtidsapplikationer
  • Sikkerhedsforskning

Forskellen mellem forsamlingssprog og sprog på højt niveau?

Assembly Language er mnemoniske koder og tæt relateret til CPU's instruktionssæt. I HLL er der abstraktion.

Hvilken CPU-arkitektur skal jeg lære til monteringsprogrammering?

8085 og 8086 mikroprocessorarkitekturer er meget bedre til at forstå koncepter.

Er Assembly Language stadig relevant i moderne computere?

Ja. Samlingssprog forbliver relevant.