Kas yra Asamblėjos kalba?

Kartais kaip surinkimas arba ASM, surinkimo kalba yra žemo lygio programavimo kalba.

Programų, parašytų susirinkimo kalbomis, parengia surinkėjas. Kiekvienas surinkėjas turi savo surinkimo kalbą, skirtą vienai konkrečiai kompiuterio architektūrai.

Mašinos kalba yra tik skaitmenų serija, kurią žmonėms nėra lengva skaityti. Naudojant ASM, programuotojai gali rašyti žmogaus skaitymas programas, kurios beveik tiksliai atitinka mašinos kalbą.

Trūkumas yra tas, kad viskas, ką kompiuteris veikia, turi būti aiškiai aprašyta tiksliai. Privalumas yra tas, kad programuotojas turi maksimalią kontrolę, ką daro kompiuteris.

Kodėl ASM yra „žemo lygio“ kalba?

Asamblėja vadinama žemo lygio programavimo kalba, nes yra (beveik) ryšys tarp to, ką jis nurodo kompiuteriui, ir to, ką kompiuteris daro. Apskritai vienoje surinkimo programos eilutėje yra ne daugiau kaip viena instrukcija kompiuteriui.

Kaip ASM skiriasi nuo „aukšto lygio“ kalbos?

Aukšto lygio kalbos suteikia žemo lygio operacijas, kurios leidžia programuotojui daugiau dėmesio skirti to, ką jie nori daryti, ir mažiau, kaip tai turėtų būti padaryta . Tokiu būdu programavimas yra patogesnis ir palengvina programų skaitymą žemo lygio kontrolės aukomis.

Aukšto lygio kalbomis parašytos programos niekada neatitiks surinktų programų žaliavinio greičio ir efektyvumo. Aukšto lygio kalbų pavyzdžiai yra „Python“, „Java“, „JavaScript“, „Clojure“ ir „Lisp“.

Kas yra „vidutinio lygio“ kalba?

Vidutinio lygio arba žemesnio lygio kalbos suteikia tam tikras aukšto lygio abstrakcijas, kad programuotojo gyvenimas būtų lengvesnis, tačiau vis dar suteikiama galimybė naudotis žemo lygio operacijomis. Jie dažnai naudojami rašyti operacines sistemas, todėl kartais jie vadinami sistemos programavimo kalbomis .

Vidurinio lygio kalbomis parašytos programos gali veikti taip pat ar beveik taip pat, kaip programos, parašytos susirinkimo kalba. Vidutinio lygio programavimo kalbų pavyzdžiai yra C, C ++, Ada, Nim ir Rust.

Ar ASM yra nešiojamas?

Kadangi surinkimo kalbos yra susietos su viena konkrečia kompiuterio architektūra, jos nėra nešiojamos. Programa, parašyta viena surinkimo kalba, turėtų būti visiškai perrašyta, kad ji veiktų kito tipo mašinoje.

Perkeliamumas yra vienas iš pagrindinių aukštųjų kalbų privalumų. „C“ programavimo kalba dažnai vadinama „nešiojamu surinkimu“, nes C kompiliatoriai egzistuoja beveik visoms modernioms sistemos struktūroms. C programoje parašyta programa gali pareikalauti atlikti tam tikrus pakeitimus, kol ji bus sukompiliuota kitame kompiuteryje, tačiau pagrindinė kalba yra nešiojama.

Apskritai kalbant, aukštesnio lygio kalba yra, tuo mažiau pakeitimų reikia atlikti kitai architektūrai. Mažiausios kalbos - mašinų kalba ir surinkimo kalba - nėra nešiojamos.

Pavyzdys: Sveiki, Pasaulis! 32 bitų rinkinyje, Windows

Čia yra „Hello, World“, parašytas 32 bitų „Intel“ procesoriui. Ji taip pat veiks 64 bitų procesoriuje. Mes ją sukursime ir vykdysime „Windows 10“.

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

Norėdami pradėti, atidarykite „Notepad“. Nukopijuokite ir įklijuokite aukščiau esantį kodą į naują tekstinį failą ir išsaugokite failą kaip hello.asm .

Norėdami surinkti surinkimą, naudosime „ NASM“, „Netwide Assembler“. Ją galima atsisiųsti adresu: http://www.nasm.us/.

 nasm -f win32 hello.asm 

Kai paleisite šią komandą, NASM sukuria objekto failą. Objekto faile yra įrenginio kodas, tačiau jis nėra visiškai vykdomas failas. Mūsų objekto failas vadinamas hello.obj .

Norėdami sukurti vykdomąjį failą, naudosime 32 bitų „ MinGW“ versiją („Minimal GNU for Windows“), kuri suteiks „gcc“ kompiliatorių. Ją galima atsisiųsti iš http://www.mingw.org/.

 gcc -o hello.exe hello.obj 
 Sveiki 
 Labas pasauli! 

Pavyzdys: Sveiki, Pasaulis! 64 bitų rinkinyje, Linux

Čia yra „Hello, World“, parašytas 64 bitų „Intel“ procesoriui. Mes sukompiliuosime ir paleisime jį 64 bitų Linux sistemoje.

 extern printf; C printf funkcija, vadinama skyriumi .data; Duomenų sekcija, inicijuoti kintamieji msg: db "Sveiki, pasaulis!", 0; C eilutė baigiasi 0 fmt: db "% s", 10, 0; „Printf“ formatas, „n“, „0“ sekcija. Pradėti kodo skirsnį pasauliniu pagrindu; standartinis gcc įvesties taško pagrindinis:; įvesties taško „push rbp“ programos etiketė; stack rėmas, turi būti suderintas mov rdi, fmt mov rsi, msg mov rax, 0; taip pat gali būti: xor rax, rax call printf; Skambinkite C printf funkcijai pop rbp; atkurti kamino mov rax, 0; normalus, jokios klaidos, grįžtamoji vertė; grįžti 

Nukopijuokite ir įklijuokite šią programą į naują failą, pavadintą hello.asm .

Tada kompiliuokite surinkimą su NASM, kurį galite įdiegti su paketo tvarkytuvu. Pavyzdžiui, „Ubuntu“ ar „Debian“ galite įdiegti „NASM“ naudodami apt:

 sudo apt update & & sudo apt įdiegti nasmą 

Paleiskite šią komandą, kad sukurtumėte objekto failą:

 nasm -f elf64 hello.asm 

Objekto failas pavadintas hello.o .

Toliau naudokite gcc, kad susietumėte šį objekto failą su būtinomis jūsų kompiuterio bibliotekomis, ir kompiliuokite jį į vykdomąjį failą, pavadintą hello :

 gcc hello.o -o Sveiki 

Galiausiai paleiskite vykdomąjį failą:

 ./Sveiki 
 Labas pasauli! 

Nuoroda - tai ta pati programa, parašyta C:

 #include int main () {char msg [] = "Sveikas pasaulis"; printf ("% s n", msg); grąža 0; } 

  • Žiūrėkite debugging rutiną kitiems žemo lygio surinkimo kodo pavyzdžiams ir papildomos informacijos apie tai, ką atlieka kiekvienas rutinas.
  • Daugiau surinkimo kalbos pavyzdžių rasite Happy Codings svetainėje.

2GL, surinkėjas, žemo lygio kalba, mašinų kalba, programavimo terminai