- Inaayos ng Assembly language ang mga tagubilin nito ayon sa layunin: paglipat, pagkalkula, kontrol sa daloy, at higit pa.
- Ang bawat pagtuturo ay binubuo ng isang opcode at operand, na may iba't ibang mga format depende sa arkitektura.
- Mayroong ilang mga mode ng pagtugon para sa pag-access ng data, tulad ng agaran, direkta, at hindi direkta.

Ang wika ng pagpupulong ay isa sa mga pangunahing haligi ng pagbuo ng software mula noong simula ng pag-compute. Bagama't ang mga wikang may mataas na antas ay nangingibabaw sa eksena ngayon, ang assembler ay nananatiling malawak na ginagamit at may kaugnayan sa mga kapaligiran kung saan ang kontrol ng hardware, pag-optimize, o mga hadlang sa mapagkukunan ay isang priyoridad.
Sa artikulong ito, tatalakayin natin nang malalim ang mga uri ng mga tagubilin sa wika ng pagpupulong, sinusuri ang kanilang istraktura, mga layunin, mga mode ng pagtugon, at kung paano sila nakaayos sa iba't ibang mga arkitektura. Bilang karagdagan, matututo ka ng mga halimbawa, mga format, at isang komprehensibong pangkalahatang-ideya na magbibigay-daan sa iyong ganap na maunawaan ang lohika sa likod ng mga tagubiling ito, na gumagana nang napakalapit sa hardware.
Ano ang pagtuturo sa wikang pagpupulong?
isang pagtuturo ng assembler Ito ay isang utos na direktang mauunawaan ng CPU (minsan ay isinalin sa machine code ng isang assembly program). Ang bawat pagtuturo ay may tiyak na layunin at kadalasang binubuo ng a mnemonic na kumakatawan sa operasyon at isa o higit pa operand na nagpapahiwatig kung saan kinukuha ang data at/o kung saan nakaimbak ang mga resulta.
Ang mga tagubiling ito ay lubos na nakadepende sa arkitektura ng processor, kaya ang bawat uri ng CPU (kung x86, ARM, MIPS, bukod sa iba pa) ay may sariling hanay ng mga tagubilin na may partikular na syntax at mga kakayahan.
Istraktura ng isang pagtuturo
Ang mga tagubilin ay karaniwang binubuo ng dalawang bahagi:
- Code ng pagpapatakbo (opcode): Nagpapahiwatig ng aksyon na isasagawa, tulad ng pagdaragdag, paglipat ng data, paghahambing, atbp.
Ang mga operand ay nagbibigay ng impormasyong kailangan upang maisagawa ang operasyon at maaaring nasa mga rehistro, memorya, o mga constant. Hindi lahat ng tagubilin Nangangailangan ang mga ito ng mga operand at sa ilang mga kaso ay maaaring implicit ang mga ito sa pagtuturo o sa mga paunang natukoy na rehistro.
Mga uri ng mga tagubilin sa wikang pagpupulong
Depende sa functionality na ginagawa nila sa loob ng isang programa, ang mga tagubilin sa assembly language ay maaaring uriin sa ilang grupo. Ang mga pinaka-nauugnay ay detalyado sa ibaba:
1. Mga tagubilin sa paglilipat ng data
Nagbibigay-daan sa iyo ang mga tagubiling ito na kumopya ng data mula sa isang lugar patungo sa isa pa., nang hindi binabago ang nilalaman nito sa pinagmulan. Mahalaga ang mga ito para sa paglipat ng impormasyon sa pagitan ng mga rehistro, memorya at mga peripheral.
Ang ilan sa mga pinakakaraniwang tagubilin sa pangkat na ito ay:
- MOV: Kinokopya ang mga nilalaman ng isang operand sa isa pa. Halimbawa,
MOV AX, BXkopyahin ang nilalaman ng BX sa AX. - MOVS / MOVSB / MOVSW: Naglilipat ng mga string mula sa source address (SI) patungo sa destination address (DI), na nag-o-automate sa proseso ng paglilipat.
- LODS / LODSB / LODSW: Naglo-load ng value mula sa address na ipinahiwatig ng SI register sa accumulator (AL o AX).
- BASAHIN: Naglo-load ng isang epektibong address sa halip na ang halaga. Kapaki-pakinabang para sa pagkuha ng address ng isang variable o istraktura.
2. Mga tagubilin sa baterya
Ang stack ay isang LIFO (last in, first out) na istraktura ginagamit upang pansamantalang mag-imbak ng data, magpasa ng mga parameter, o i-save ang konteksto ng pagpapatupad.
- PUSH: Nag-iimbak ng halaga sa stack, na binabawasan ang SP pointer.
- POP: Kinukuha ang pinakabagong halaga na nakaimbak sa stack, na dinadagdagan ang SP.
- PUSHF / POPF: Iniimbak at kinukuha nila ang estado ng mga flag ng CPU sa stack.
3. Arithmetic at lohikal na mga tagubilin
Pinapayagan nila ang mga kalkulasyon at pagpapatakbo na maisagawa sa mga bit. Ang mga tagubiling ito ay mahalaga para sa pagmamanipula ng numerical data at paggawa ng mga desisyon sa daloy ng programa.
Kabilang sa mga pinaka ginagamit na nakikita namin:
- ADD / SUB: Pagdaragdag at pagbabawas.
- MUL / IMUL: Binary multiplications.
- DIV / IDIV: Dibisyon (integer o nilagdaan).
- AT / O / XOR / HINDI: Bitwise na lohikal na operasyon.
- SHL / SHR / ROL / ROR: Mga bit shift at pag-ikot.
4. Mga tagubilin sa pagkontrol sa daloy
Pinapayagan ka nilang baguhin ang pagkakasunud-sunod ng pagpapatupad ng programa, nagpapakilala ng may kondisyon at walang kundisyong pagtalon o mga tawag sa iba pang mga tagubilin.
- JMP: Walang kundisyon na tumalon sa isa pang address sa programa.
- TAWAG / RET: Tumawag sa isang subroutine at bumalik.
- JE/JNE/JG/JL/JZ/JNZ: Conditional jumps, ang mga ito ay isinasagawa kung ang ilang mga kundisyon ay natutugunan (pagkatapos ng isang paghahambing).
5. Mga Tagubilin sa Input/Output (I/O).
Pinapayagan nila ang processor na makipag-usap sa mga panlabas na device. Nagbibigay-daan sa iyo ang mga tagubiling ito na magbasa at magsulat ng data mula/papunta sa (hardware) port.
- IN: Nagbabasa ng data mula sa isang input port.
- LABAN: Nagpapadala ng data sa isang output port.
6. Mga tagubilin sa floating point
Maraming mga CPU ang may math coprocessors (o mga espesyal na tagubilin) nakatuon sa pagtatrabaho sa mga decimal na numero (floating point). Nagbibigay-daan sa iyo ang mga tagubiling ito na magsagawa ng mga operasyon tulad ng:
- Pagdaragdag, pagbabawas, pagpaparami at paghahati ng mga tunay na numero.
- Trigonometric operations (sine, cosine, tangent).
- Logarithmic, exponential at root operations.
Ang mga tagubiling ito ay karaniwang sumusunod sa IEEE standard 754 para sa numerical precision.
Mga mode ng pagtugon
Ang pangunahing bahagi ng disenyo ng pagtuturo ay kung paano matukoy kung saan matatagpuan ang mga operand. Ang mga mode ng pagtugon tukuyin kung paano ina-access ng CPU ang data.
1. Agarang pagtugon
Ang data ay direktang kasama sa pagtuturo. Ito ay mabilis ngunit hindi pinapayagan ang pagbabago ng mga halaga nang hindi binabago ang pagtuturo.
MOV AX, 5
2. Direktang pagtugon
Ang memory address na naglalaman ng data ay tahasang tinukoy.
MOV AX,
3. Hindi direktang pagtugon
Ang epektibong address ay nakuha mula sa mga nilalaman ng isang rehistro. Napaka-flexible at ginagamit para sa mga istruktura at naka-link na listahan.
MOV AX,
4. Naka-index na pag-address
Ang address ay kinakalkula sa pamamagitan ng pagdaragdag ng base at isang index (halimbawa, sa pagtawid sa mga array). Gumamit ng mga espesyal na register gaya ng SI, DI o base + shift register.
MOV AX,
Mga format ng pagtuturo: iba't ibang uri depende sa arkitektura
Ang istraktura ng isang pagtuturo ay maaaring mag-iba depende sa arkitektura. Kasama sa mga karaniwang format ang:
4-way na format
Kabilang dito ang dalawang operand, isang lokasyon ng resulta, at ang address ng susunod na pagtuturo. Sa panahon ngayon ito ay hindi na ginagamit dahil sa pagiging kumplikado nito.
3-way na format
Tinutukoy ang dalawang operand at isang patutunguhan na address. Karaniwan ito sa mga modernong arkitektura ng RISC.
2-way na format
Gumagamit ito ng source at destination operand (maaari ding magbigay ng value ang destinasyon). Sikat sa x86 at iba pang arkitektura ng CISC.
1-way na format
Isang operand lamang ang ipinahiwatig; yung isa daw ang accumulator. Karaniwan sa mga mas lumang processor at simpleng system.
0-address na format (batay sa stack)
Ginagamit ng mga operasyon ang stack upang mag-pop at mag-imbak ng mga operand at resulta. Napakahusay para sa mga makinang pinapatakbo ng baterya, gaya ng ilang mga programmable calculator.
Mga macro na tagubilin at pseudo-opcode
Upang mapabuti ang pagiging produktibo, maraming mga assembler ang nag-aalok macroinstructions, na nagpapalawak ng isang linya sa ilang aktwal na mga tagubilin. Ang mga ito ay kapaki-pakinabang para sa pag-iwas sa paulit-ulit na kumplikadong mga pattern o para sa paglikha ng mataas na antas ng mga istraktura tulad ng mga loop o kondisyon na istruktura.
Los mga pseudo-opcode Ang mga ito ay mga tagubilin na isinasalin ng assembler sa loob ng isang tunay na pagkakasunod-sunod ng mga tagubilin. Halimbawa, NOP (walang operasyon) ay maaaring isalin bilang XCHG AX, AX sa x86 CPU.
Mga direktiba ng Assembler
Ang mga direktiba (tinatawag ding pseudo-operations) ay hindi mga tagubilin per se. Ginagamit ang mga ito upang kontrolin ang proseso ng pagpupulong, tukuyin ang data, mga seksyon ng code, macro, kundisyon ng compilation, atbp.
Kasama sa mga karaniwang halimbawa ang:
- .data / .code: Ipinapahiwatig nila ang seksyon ng data o code.
- .org: Itinatakda ang address kung saan magsisimula ang pagpupulong.
- .equ: Tinutukoy ang mga simbolikong pare-pareho.
Mga kaso ng paggamit ng wika ng assembly
Sa kabila ng pagtaas ng mataas na antas ng mga wika, Ang assembler ay nananatiling susi sa ilang mga lugar:
- Pagbuo ng mga naka-embed na system at microcontroller.
- Mga driver ng programming, bootloader at BIOS.
- Extreme optimization sa mga application gaya ng mga video game o cryptography.
- Reverse engineering, pag-debug at mababang antas ng pag-hack.
Bilang karagdagan, ang pagsasanay sa wika ng pagpupulong ay pa rin sumasakop sa isang mahalagang lugar sa mga karera sa computer science at electronics, dahil nagbibigay ito ng malalim na pag-unawa sa kung paano gumagana ang isang processor, kung paano iniimbak at manipulahin ang data, at kung paano isinasagawa ang mga tagubilin sa binary level.
Ang pag-unawa sa lahat ng uri ng mga tagubilin sa pagpupulong, ang kanilang istraktura, paggana, at mga mode ng pagtugon ay nagbibigay ng matibay na pundasyon para sa sinumang programmer na gustong magsaliksik sa mababang antas ng programming o maunawaan kung paano ang mga mataas na antas na wika ay ganap na isinalin sa machine code. Bagama't naging mas tiyak ang paggamit nito, nananatili itong mahalagang kasangkapan sa maraming kritikal na lugar ng pag-unlad ng software at system.
Talaan ng nilalaman
- Ano ang pagtuturo sa wikang pagpupulong?
- Istraktura ng isang pagtuturo
- Mga uri ng mga tagubilin sa wikang pagpupulong
- Mga mode ng pagtugon
- Mga format ng pagtuturo: iba't ibang uri depende sa arkitektura
- Mga macro na tagubilin at pseudo-opcode
- Mga direktiba ng Assembler
- Mga kaso ng paggamit ng wika ng assembly