Apakah Bahasa Perhimpunan?

Kadang-kadang disebut sebagai perhimpunan atau ASM, bahasa perhimpunan adalah bahasa pengatur peringkat rendah.

Program-program yang ditulis dalam bahasa assembly disusun oleh pemasang. Setiap assembler mempunyai bahasa assembly sendiri, yang direka untuk satu seni bina komputer tertentu.

Bahasa mesin hanya satu siri angka, yang tidak mudah dibaca oleh manusia. Dengan menggunakan ASM, pengaturcara boleh menulis program yang dapat dibaca manusia yang hampir sama dengan bahasa mesin.

Kelemahannya ialah segala-galanya yang dilakukan oleh komputer mesti diterangkan dengan jelas, tepat pada masanya. Kelebihannya ialah programmer mempunyai kawalan maksimum ke atas apa yang dilakukan oleh komputer.

Mengapa ASM adalah bahasa "rendah"?

Perhimpunan dipanggil bahasa pengaturcaraan peringkat rendah kerana terdapat (hampir) hubungan satu sama lain antara apa yang ia katakan komputer lakukan, dan apa yang dilakukan oleh komputer. Secara umum, satu baris program pemasangan mengandungi maksimum satu arahan untuk komputer.

Bagaimana ASM berbeza daripada bahasa "peringkat tinggi"?

Bahasa peringkat tinggi memberikan abstraksi operasi peringkat rendah yang membolehkan pengaturcara lebih fokus pada menerangkan apa yang mereka mahu lakukan, dan kurang mengenai bagaimana ia perlu dilakukan . Pemrograman cara ini lebih mudah dan menjadikan program lebih mudah dibaca pada pengorbanan kawalan peringkat rendah.

Program yang ditulis dalam bahasa peringkat tinggi tidak akan sepadan dengan kelajuan mentah dan kecekapan program yang ditulis dalam perhimpunan. Contoh-contoh bahasa peringkat tinggi termasuk Python, Java, JavaScript, Clojure, dan Lisp.

Apakah bahasa "peringkat pertengahan"?

Bahasa peringkat sederhana atau rendah memberikan beberapa abstraksi peringkat tinggi untuk menjadikan kehidupan programmer lebih mudah, sementara masih menyediakan akses kepada operasi peringkat rendah. Mereka sering digunakan untuk menulis sistem operasi, oleh itu mereka kadang-kadang dipanggil bahasa pengaturcaraan sistem .

Program-program yang ditulis dalam bahasa peringkat pertengahan dapat dilakukan juga, atau hampir juga, sebagai program yang ditulis dalam bahasa assembly. Contoh-contoh bahasa pengaturcaraan pertengahan termasuk C, C ++, Ada, Nim, dan Rust.

Adakah ASM mudah alih?

Tidak. Karena bahasa pemasangan terikat kepada satu seni bina komputer tertentu, mereka tidak mudah alih. Satu program yang ditulis dalam satu bahasa perhimpunan perlu ditulis semula sepenuhnya untuk menjalankan satu lagi jenis mesin.

Kemudahalihan adalah salah satu kelebihan utama bahasa peringkat tinggi. Bahasa pengaturcaraan C sering dipanggil "pemasangan mudah alih" kerana penyusun C ada untuk hampir semua senibina sistem moden. Program yang ditulis dalam C mungkin memerlukan beberapa perubahan sebelum ia akan dikompilasi pada komputer lain, tetapi bahasa inti adalah mudah alih.

Secara umumnya, bahasa yang lebih tinggi ialah bahasa, perubahan yang lebih sedikit perlu dilakukan untuk menjalankan seni bina yang lain. Bahasa peringkat terendah - bahasa mesin dan bahasa pemasangan - tidak mudah alih.

Contoh: Hello, Dunia! dalam pemasangan 32-bit, untuk Windows

Berikut adalah "Hello, World" yang ditulis untuk pemproses Intel 32-bit. Ia juga akan dijalankan pada pemproses 64-bit. Kami akan menyusun dan menjalankannya pada Windows 10.

 seksyen _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

Untuk memulakan, buka Notepad. Salin dan tampal kod di atas ke dalam fail teks baru, dan simpan fail tersebut sebagai hello.asm .

Untuk menyusun pemasangan, kami akan menggunakan NASM, Assembler Netwide. Ia boleh dimuat turun di //www.nasm.us/.

 nasm -f win32 hello.asm 

Apabila anda menjalankan arahan ini, NASM membuat fail objek. Fail objek mengandungi kod mesin, tetapi tidak cukup fail boleh laku. Fail objek kami dipanggil hello.obj .

Untuk membuat eksekusi, kami akan menggunakan versi MinGW 32-bit (Minimal GNU for Windows) yang akan menyediakan compiler gcc. Ia boleh dimuat turun di //www.mingw.org/.

 gcc -o hello.exe hello.obj 
 hello 
 Hai dunia! 

Contoh: Hello, Dunia! dalam pemasangan 64-bit, untuk Linux

Berikut ialah "Hello, World" yang ditulis untuk pemproses Intel 64-bit. Kami akan menyusun dan menjalankannya pada 64-bit Linux.

 extern printf; fungsi C printf, dipanggil bahagian .data; Seksyen data, pembolehubah permulaan yang diinisikan: db "Hello, world!", 0; C string berakhir dengan 0 fmt: db "% s", 10, 0; Format printf, "\ n", '0' .text; Mulakan bahagian kod utama global; pintu masuk utama gcc utama:; label program untuk titik masuk push rbp; sediakan rangka tindanan, mesti selaras rdi mov, fmt mov rsi, msg mov rax, 0; juga boleh: xor rax, rax call printf; Panggilan fungsi c printf pop rbp; memulihkan stack mov rax, 0; normal, tiada kesilapan, pulangan nilai pulih; kembali 

Salin dan tampal program ini ke dalam fail baru yang dipanggil hello.asm .

Kemudian, kompilasi pemasangan dengan NASM, yang anda boleh pasang dengan pengurus pakej anda. Sebagai contoh, pada Ubuntu atau Debian, anda boleh memasang NASM menggunakan apt:

 sudo apt update && sudo apt install nasm 

Jalankan arahan ini untuk mencipta fail objek anda:

 nasm -f elf64 hello.asm 

Fail objek dinamakan hello.o .

Seterusnya, gunakan gcc untuk memautkan fail objek ini ke perpustakaan yang diperlukan pada komputer anda, dan kompil ke fail eksport yang dipanggil hello :

 gcc hello.o -o hello 

Terakhir, jalankan fail boleh laku:

 ./hello 
 Hai dunia! 

Untuk rujukan, ini adalah program yang sama, yang ditulis dalam C:

 #include int main () {char msg [] = "Hello world \ n"; printf ("% s \ n", msg); kembali 0; } 

  • Lihat rutin debug untuk contoh lain kod pemasangan peringkat rendah dan maklumat tambahan mengenai apa yang dilakukan setiap rutin.
  • Untuk contoh tambahan bahasa perhimpunan, lihat laman web Happy Codings.

2GL, Assembler, Bahasa peringkat rendah, Bahasa mesin, Pengaturcaraan istilah