Llojet e udhëzimeve në gjuhën assembly: një udhëzues i plotë

Përditësimi i fundit: Maj 7 2025
  • Gjuha e asamblesë i organizon udhëzimet e saj sipas qëllimit: transferimi, llogaritja, kontrolli i rrjedhës dhe më shumë.
  • Çdo udhëzim përbëhet nga një opkod dhe operandë, me formate të ndryshme në varësi të arkitekturës.
  • Ekzistojnë disa mënyra adresimi për të aksesuar të dhënat, të tilla si të menjëhershme, të drejtpërdrejta dhe të tërthorta.

Gjuha e makinës asembler dhe formati i udhëzimeve

Gjuha e asamblesë ka qenë një nga shtyllat themelore të zhvillimit të softuerëve që nga fillimi i informatikës. Edhe pse gjuhët e nivelit të lartë dominojnë skenën sot, assembleri mbetet i përdorur gjerësisht dhe i rëndësishëm në mjedise ku kontrolli i harduerit, optimizimi ose kufizimet e burimeve janë një përparësi.

Në këtë artikull, do të shqyrtojmë llojet e instruksioneve në gjuhën assembly, duke analizuar strukturën, qëllimin, mënyrat e adresimit dhe mënyrën se si janë të organizuara në arkitektura të ndryshme. Gjithashtu do të gjeni shembuj, formate dhe një përmbledhje gjithëpërfshirëse që do t'ju lejojë të kuptoni plotësisht logjikën pas këtyre instruksioneve, të cilat funksionojnë shumë ngushtë me harduerin.

Çfarë është një udhëzim në gjuhën assembly?

Një udhëzim asembler është një komandë që CPU-ja mund ta kuptojë drejtpërdrejt (pasi përkthehet në kod makine nga një program asembler). Çdo udhëzim ka një qëllim specifik dhe zakonisht përbëhet nga një mnemonik që përfaqëson operacionin dhe një ose më shumë operandë që tregojnë se ku merren të dhënat dhe/ose ku ruhen rezultatet.

Këto udhëzime varen shumë nga arkitektura e procesorit, kështu që çdo lloj CPU-je (qoftë x86, ARM, MIPS, ndër të tjera) ka grupin e vet të udhëzimeve me sintaksë dhe aftësi të veçanta.

Struktura e një udhëzimi

Udhëzimet zakonisht përbëhen nga dy pjesë:

  • Kodi i operacionit (opcode): Tregon veprimin që do të kryhet, siç janë mbledhja, zhvendosja e të dhënave, krahasimi etj.

Operandet ofrojnë informacionin e nevojshëm për të kryer operacionin dhe mund të ruhen në regjistra, memorie ose të jenë konstante. Jo të gjitha udhëzimet kërkojnë operandë dhe, në disa raste, këto mund të jenë të nënkuptuara në udhëzim ose të ruhen në regjistra të paracaktuar.

Llojet e instruksioneve në gjuhën assembly

Në varësi të funksionalitetit që ato kryejnë brenda një programi, instruksionet në gjuhën assembly mund të klasifikohen në disa grupe. Më të rëndësishmet janë detajuar më poshtë:

1. Udhëzime për transferimin e të dhënave

Këto udhëzime lejojnë që të dhënat të kopjohen nga një vendndodhje në tjetrën pa modifikuar përmbajtjen e tyre në burim. Ato janë thelbësore për lëvizjen e informacionit midis regjistrave, memories dhe pajisjeve periferike.

  Redux JS: Udhëzuesi Përfundimtar për të Kuptuar dhe Zotëruar Redux-in

Disa nga udhëzimet më të zakonshme në këtë grup janë:

  • MOV: Kopjon përmbajtjen e një operandi në një tjetër. Për shembull, MOV AX, BX Kopjoni përmbajtjen e BX në AX.
  • MOVS / MOVSB ​​​​/ MOVSW: Zhvendos vargjet nga një adresë burimi (SI) në një adresë destinacioni (DI), duke automatizuar procesin e transferimit.
  • LODS / LODSB / LODSW: Ngarkon një vlerë nga adresa e treguar nga regjistri SI në akumulator (AL ose AX).
  • LEXONI: Ngarkon një adresë efektive në vend të vlerës. I dobishëm për të marrë adresën e një variabli ose strukture.

2. Udhëzime për baterinë

Stack është një strukturë LIFO (i fundit hyrës, i pari dalës) që përdoret për të ruajtur përkohësisht të dhënat, për të kaluar parametrat ose për të ruajtur kontekstin e ekzekutimit.

  • SHTYP: Ruan një vlerë në pirg, duke zvogëluar treguesin SP.
  • POP: Rimerr vlerën më të fundit të ruajtur në pirg, duke rritur SP-në.
  • PUSHF / POPF: Ato ruajnë dhe marrin gjendjen e flamujve të CPU-së në pirg.

3. Udhëzime aritmetike dhe logjike

Ato lejojnë që llogaritjet dhe operacionet të kryhen në bit. Këto udhëzime janë thelbësore për manipulimin e të dhënave numerike dhe marrjen e vendimeve në rrjedhën e programit.

Ndër më të përdorurat gjejmë:

  • SHTO / NËNSHTO: Mbledhje dhe zbritje.
  • MUL / IMUL: Shumëzimet binare.
  • DIV / IDIV: Pjesëtimi (numër i plotë ose me shenjë).
  • DHE / OSE / XOR / JO: Operacione logjike bit-bit.
  • SHL / SHR / ROL / ROR: Zhvendosjet dhe rrotullimet e biteve.

4. Udhëzime për kontrollin e rrjedhës

Ato ju lejojnë të modifikoni sekuencën e ekzekutimit të programit , duke futur kërcime ose thirrje të kushtëzuara dhe të pakushtëzuara në udhëzime të tjera.

  • JMP: Kërcen pa kushte në një adresë tjetër në program.
  • TELEFONO / RIPËRGATIT: Thirr një nënprogram dhe kthehu.
  • JE/JNE/JG/JL/JZ/JNZ: Kërcime të kushtëzuara, ato ekzekutohen nëse plotësohen kushte të caktuara (pas një krahasimi).

5. Udhëzime Hyrjeje/Daljeje (I/O)

Ato mundësojnë komunikimin midis procesorit dhe pajisjeve të jashtme. Këto udhëzime lejojnë që të dhënat të lexohen dhe shkruhen në/nga portat (hardueri).

  • NË: Lexon të dhënat nga një port hyrës.
  • JASHT: Dërgon të dhëna në një port dalës.

6. Instruksione me pikë lundruese

Shumë CPU kanë bashkëprocesorë matematikë (ose udhëzime të veçanta) të dedikuara për të punuar me numra dhjetorë (me pikë lundruese). Këto udhëzime lejojnë operacione të tilla si:

  • Mbledhja, zbritja, shumëzimi dhe pjesëtimi i numrave realë.
  • Operacionet trigonometrike (sinusi, kosinusi, tangjenti).
  • Operacione logaritmike, eksponenciale dhe me rrënjë.
  Cilat janë detyrat e një Webmaster?

Këto udhëzime zakonisht përputhen me standardin IEEE 754 për saktësi numerike.

Mënyrat e adresimit

Një pjesë themelore e dizajnit të instruksioneve është mënyra se si identifikohet vendndodhja e operandëve. Mënyrat e adresimit përcaktojnë se si CPU-ja i qaset të dhënave.

1. Adresim i menjëhershëm

Të dhënat përfshihen direkt në udhëzim. Është i shpejtë, por nuk lejon modifikimin e vlerave pa ndryshuar udhëzimin.

MOV AX, 5

2. Adresimi i drejtpërdrejtë

Adresa e memories që përmban të dhënat specifikohet në mënyrë të qartë.

MOV AX, 

3. Adresimi indirekt

Adresa efektive merret nga përmbajtja e një regjistrimi. Shumë fleksibile dhe përdoret për strukturat dhe listat e lidhura.

MOV AX, 

4. Adresimi i indeksuar

Adresa llogaritet duke shtuar një bazë dhe një indeks (për shembull, për të përshkuar vargje). Përdor regjistra të veçantë si SI, DI ose regjistra bazë + zhvendosje.

MOV AX, 

Formatet e udhëzimeve: lloje të ndryshme në varësi të arkitekturës

Struktura e një udhëzimi mund të ndryshojë në varësi të arkitekturës. Formatet e zakonshme përfshijnë:

Format 4-kahësh

Ai përfshin dy operandë, një vendndodhje rezultati dhe adresën e instruksionit të ardhshëm. Tani është i vjetëruar për shkak të kompleksitetit të tij.

Format 3-kahësh

Ai specifikon dy operandë dhe një adresë destinacioni. Është e zakonshme në arkitekturat moderne RISC.

Format 2-kahësh

Përdorni një operand burim dhe një operand destinacioni (destinacioni gjithashtu mund të kontribuojë me vlerë). Popullor në arkitekturat x86 dhe CISC të tjera.

Format me një drejtim

Specifikohet vetëm një operand; tjetri supozohet të jetë akumulatori. E zakonshme në procesorët e vjetër dhe sistemet e thjeshta.

Formati i adresës 0 (i bazuar në grumbull)

Operacionet përdorin pirgun për të marrë dhe ruajtur operandët dhe rezultatet. Shumë efikas për makinat e bazuara në pirg, siç janë disa kalkulatorë të programueshëm.

Udhëzime makro dhe pseudo-opkode

Për të përmirësuar produktivitetin, shumë asemblerë ofrojnë udhëzime makro , të cilat zgjerojnë një rresht të vetëm në disa udhëzime aktuale. Këto janë të dobishme për të shmangur përsëritjen e modeleve komplekse ose për të krijuar struktura të nivelit të lartë, siç janë sythet ose deklaratat kushtëzuese.

L pseudo-opkode Ato janë udhëzime që asembleri i përkthen nga brenda në një sekuencë reale udhëzimesh. Për shembull, NOP (pa operacion) mund të përkthehet si XCHG AX, AX në CPU x86.

  Udhëzues i plotë për abonimet në Visual Studio

Direktivat e asamblerit

Direktivat ( të quajtura edhe pseudo-operacione ) nuk janë udhëzime në kuptimin e ngushtë. Ato shërbejnë për të kontrolluar procesin e montimit, për të përcaktuar të dhënat, seksionet e kodit, makrot, kushtet e kompajlimit, etj.

Shembujt e zakonshëm përfshijnë:

  • .të dhëna / .kod: Ato tregojnë seksionin e të dhënave ose kodit.
  • .org: Cakton adresën nga e cila do të fillojë asambleja.
  • .ekuacion: Përcakton konstantet simbolike.

Rastet e përdorimit të gjuhës Assembly

Pavarësisht rritjes së gjuhëve të nivelit të lartë, gjuha e asamblesë mbetet thelbësore në disa fusha:

  • Zhvillimi i sistemeve të ngulitura dhe mikrokontrolluesve.
  • Programimi i drajverëve, bootloader-ave dhe BIOS-it.
  • Optimizim ekstrem në aplikacione të tilla si lojërat video ose kriptografia.
  • Inxhinieri e kundërt, debugging dhe hacking i nivelit të ulët.

Për më tepër, trajnimi në gjuhën assembly ende zë një vend të rëndësishëm në degët e shkencave kompjuterike dhe elektronikës, pasi ofron një kuptim të thellë se si funksionon një procesor, si ruhen dhe manipulohen të dhënat dhe si ekzekutohen udhëzimet në nivel binar.

Të kuptuarit e të gjitha llojeve të udhëzimeve të asamblesë, strukturës së tyre, funksionalitetit dhe mënyrave të adresimit ofron një bazë të fortë për çdo programues që dëshiron të futet në programimin e nivelit të ulët ose të kuptojë se si gjuhët e nivelit të lartë përkthehen në kodin e makinës. Edhe pse përdorimi i tij është bërë më specifik, ai mbetet një mjet thelbësor në shumë fusha kritike të zhvillimit të softuerëve dhe sistemeve.

gjuha e asamblesë
Artikuj të ngjashëm:
Gjithçka rreth Gjuha e Asamblesë: Çfarë është dhe si funksionon