Mis on assamblee keel?

Mõnikord nimetatakse assamblee või ASM, assamblee keel on madala taseme programmeerimiskeel.

Assamblee koostab kokkupanekukeeles kirjutatud programmid. Igal kokkupanekul on oma kogumiskeel, mis on mõeldud ühe konkreetse arvutiarhitektuuri jaoks.

Masintõlge on vaid numbrite seeria, mida inimestel ei ole lihtne lugeda. Kasutades ASM-i, saavad programmeerijad kirjutada inimloetavaid programme, mis vastavad peaaegu täpselt masina keelele.

Puuduseks on see, et kõik, mida arvuti teeb, tuleb täpselt kirjeldada täpselt. Eeliseks on see, et programmeerijal on maksimaalne kontroll selle üle, mida arvuti teeb.

Miks on ASM "madala taseme" keel?

Assamblee nimetatakse madalatasemeliseks programmeerimiskeeleks, sest seal on (peaaegu) üks-ühele suhe selle kohta, mida ta arvutab, et arvuti teeb seda, mida arvuti teeb. Üldiselt sisaldab üks kokkupanekuprogrammi rida arvutile maksimaalselt ühte käsku.

Kuidas erineb ASM "kõrgetasemelisest" keelest?

Kõrgetasemelised keeled pakuvad madala taseme operatsioone, mis võimaldavad programmeerijal rohkem keskenduda oma soovide kirjeldamisele ja vähem sellele, kuidas seda teha . Selline programmeerimine on mugavam ja muudab programmid kergemini loetavaks madala taseme kontrolli ohvriks.

Kõrgetasemelistes keeltes kirjutatud programmid ei vasta kunagi koostatud kirjete toorele kiirusele ja tõhususele. Kõrgetasemelised keeled on näiteks Python, Java, JavaScript, Clojure ja Lisp.

Mis on "kesktaseme" keel?

Kesktaseme või madalama taseme keeled võimaldavad programmeerija elu kergemaks muuta, võimaldades samal ajal juurdepääsu madala tasemega operatsioonidele. Neid kasutatakse sageli operatsioonisüsteemide kirjutamiseks, nii et neid nimetatakse mõnikord süsteemi programmeerimiskeeleks .

Kesktaseme keeltes kirjutatud programmid võivad esineda ka peaaegu või peaaegu nagu programmeerimiskeelega kirjutatud programmid. Kesktasemel programmeerimiskeelteks on näiteks C, C ++, Ada, Nim ja Rust.

Kas ASM on kaasaskantav?

Kuna assamblee keeled on seotud ühe konkreetse arvutiarhitektuuriga, ei ole need kaasaskantavad. Ühe monteerimiskeelega kirjutatud programm peaks olema täielikult ümber kirjutatud, et see töötaks teise tüüpi masinaga.

Kaasaskantavus on kõrgema keele üks peamisi eeliseid. C programmeerimiskeelt nimetatakse sageli "kaasaskantavaks seadmeks", kuna C kompilaatorid on peaaegu iga kaasaegse süsteemi arhitektuuri jaoks. C-sse kirjutatud programm võib vajada mõningaid muudatusi, enne kui see kompileeritakse teises arvutis, kuid põhikeel on kaasaskantav.

Üldiselt on kõrgemal tasemel keel, seda vähem on vaja teha muudatusi, et seda saaks kasutada teises arhitektuuris. Madalaima taseme keeled - masina keel ja kokkupaneku keel - ei ole kaasaskantavad.

Näide: Tere, maailm! 32-bitise komplekti puhul Windowsi jaoks

Siin on "Hello, World" kirjutatud 32-bitise Inteli protsessori jaoks. See töötab ka 64-bitisel protsessoril. Me koostame ja käivitame selle operatsioonisüsteemis Windows 10.

 globaalne _main extern _printf osa .text _main: push message call _printf add esp, 4 ret message: db 'Hello, World!', 10, 0 

Alustamiseks avage Notepad. Kopeerige ja kleepige ülaltoodud kood uude tekstifaili ja salvestage fail hello.asm .

Assamblee kompileerimiseks kasutame NASM-i, Netwide Assemblerit. Selle saab alla laadida aadressil //www.nasm.us/.

 nasm -f win32 hello.asm 

Selle käsu käivitamisel loob NASM objektifaili. Objektifail sisaldab masina koodi, kuid see ei ole päris käivitatav fail. Meie objektifaili nimetatakse hello.obj .

Käivitatava faili loomiseks kasutame 32-bitist MinGW versiooni (Minimal GNU for Windows), mis annab gcc kompilaatori. Selle saab alla laadida aadressil //www.mingw.org/.

 gcc -o hello.exe hello.obj 
 Tere 
 Tere, Maailm! 

Näide: Tere, maailm! 64-bitises koostises Linuxi jaoks

Siin on "Tere, maailm", mis on kirjutatud 64-bitise Inteli protsessori jaoks. Me koostame ja käivitame selle 64-bitisel Linuxil.

 extern printf; C printf funktsioon, mida nimetatakse osaks .data; Andmete osa, initsialiseeritud muutujad msg: db "Tere, maailm!", 0; C string lõpeb 0 fmt: db "% s", 10, 0; Printf formaat, "n", "0" sektsioon. Alusta koodiosa globaalne peamine; standardne gcc sisendpunkt:; sisenemispunkti push programme etikett rbp; stack-kaadri seadistamine peab olema joondatud mov rdi, fmt mov rsi, msg mov rax, 0; võib olla ka: xor rax, rax kõne printf; Helista C printf funktsioon pop rbp; taastada stack mov rax, 0; tavaline, viga, tagastusväärtus; tagasi 

Kopeerige ja kleepige see programm uude faili nimega hello.asm .

Seejärel kompileerige koost koos NASM-iga, mida saate oma pakettihalduriga installida. Näiteks Ubuntu või Debiani puhul saate installida NASM-i, kasutades apt:

 sudo apt update & & sudo apt install nasm 

Käivitage see käsk objektifaili loomiseks:

 nasm -f elf64 hello.asm 

Objektifaili nimi on hello.o .

Seejärel kasutage gcc-d selle objektifaili sidumiseks arvutis asuvate vajalike raamatukogudega ja kompileerige see täitmisfaili nimega hello :

 gcc hello.o -o tere 

Lõpuks käivitage käivitatav fail:

 ./Tere 
 Tere, Maailm! 

Viide, see on sama programm, mis on kirjutatud C:

 #include int main () {char msg [] = "Tere maailm"; printf ("% s", msg); tagastamine 0; } 

  • Vaadake silumisrežiimi teiste madalate asendi koodide näidete kohta ja lisateavet iga rutiini kohta.
  • Täiendavaid näiteid kogumiskeelest leiate Happy Codings'i veebilehelt.

2GL, Assembler, madala taseme keel, masina keel, programmeerimise tingimused