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ë thellësisht llojet e instruksioneve në gjuhën assembly, duke analizuar strukturën, qëllimet, mënyrat e adresimit dhe mënyrën se si ato janë të organizuara në arkitektura të ndryshme. Përveç kësaj, do të mësoni shembuj, formate dhe një pasqyrë gjithëpërfshirëse që do t'ju lejojë të kuptoni plotësisht logjikën pas këtyre udhëzimeve, të cilat funksionojnë shumë ngushtë me harduerin.

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

një udhëzim për assembler Është një urdhër që CPU mund ta kuptojë drejtpërdrejt (pasi përkthehet në kod makine nga një program asambleje). Ç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ët të cilat 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.

Operandët japin informacionin e nevojshëm për të kryer operacionin dhe mund të jenë në regjistra, memorie ose konstante. Jo të gjitha udhëzimet Ato kërkojnë operandë dhe në disa raste këto mund të jenë të nënkuptuara në udhëzim ose 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 ju lejojnë të kopjoni të dhënat nga një vend në tjetrin., pa modifikuar përmbajtjen e saj në burim. Ato janë thelbësore për lëvizjen e informacionit midis regjistrave, memories dhe pajisjeve periferike.

  Gjuhët më të zakonshme të programimit të orientuara nga objekti

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 (hyrësi i fundit, dalja e parë). 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ë instruksione 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 lejojnë që procesori të komunikojë me pajisje të jashtme. Këto udhëzime ju lejojnë të lexoni dhe shkruani të dhëna nga/në portat (hardware).

  • 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) i dedikuar për të punuar me numra dhjetorë (pikë lundruese). Këto udhëzime ju lejojnë të kryeni 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ë.
  Çfarë është Python dhe pse është kaq popullor?

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ë se si të identifikohet se ku ndodhen operandët. I/E/Të/Të mënyrat e adresimit Përcaktoni 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 ndryshimin 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ë regjistri. Shumë fleksibël dhe përdoret për struktura dhe lista të 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ërdorni 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 të rezultatit dhe adresën e udhëzimit të ardhshëm. Në ditët e sotme është në mospërdorim për shkak të kompleksitetit të tij.

Format 3-kahësh

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

Format 2-kahësh

Përdor një operand burimi dhe një destinacioni (destinacioni gjithashtu mund të ofrojë një vlerë). Popullor në x86 dhe arkitektura të tjera CISC.

Format me një drejtim

Tregohet 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ë shfaqur dhe ruajtur operandët dhe rezultatet. Shumë efikas për makinat që punojnë me bateri, siç janë disa kalkulatorë të programueshëm.

Udhëzime makro dhe pseudo-opkode

Për të përmirësuar produktivitetin, shumë montues ofrojnë makroudhëzime, të cilat zgjerojnë një rresht të vetëm në disa udhëzime aktuale. Ato 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 strukturat 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.

  Kornizat JavaScript: Gjithçka që duhet të dini për të zgjedhur më të mirën

Direktivat e asamblerit

Direktivat (të quajtura edhe pseudo-operacione) nuk janë udhëzime në vetvete. Ato përdoren 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ë, Asambleri mbetet çelësi 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ërveç kësaj, trajnimi në gjuhën asamble është ende zë një vend të rëndësishëm në karrierën në shkencat kompjuterike dhe elektronikën, 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