Majelis - Sintaks Dasar

Program perakitan dapat dibagi menjadi tiga bagian -

  • Itu data bagian,

  • Itu bss bagian, dan

  • Itu text bagian.

The Data Bagian

Itu datasection digunakan untuk mendeklarasikan data atau konstanta yang diinisialisasi. Data ini tidak berubah saat runtime. Anda dapat mendeklarasikan berbagai nilai konstan, nama file, atau ukuran buffer, dll., Di bagian ini.

Sintaks untuk mendeklarasikan bagian data adalah -

section.data

The bss Bagian

Itu bssbagian digunakan untuk mendeklarasikan variabel. Sintaks untuk mendeklarasikan bagian bss adalah -

section.bss

The teks Bagian

Itu textbagian digunakan untuk menyimpan kode yang sebenarnya. Bagian ini harus dimulai dengan deklarasiglobal _start, yang memberi tahu kernel tempat eksekusi program dimulai.

Sintaks untuk mendeklarasikan bagian teks adalah -

section.text
   global _start
_start:

Komentar

Komentar bahasa assembly dimulai dengan titik koma (;). Ini mungkin berisi karakter yang dapat dicetak termasuk kosong. Itu bisa muncul di baris dengan sendirinya, seperti -

; This program displays a message on screen

atau, di baris yang sama bersama dengan instruksi, seperti -

add eax, ebx     ; adds ebx to eax

Pernyataan Bahasa Majelis

Program bahasa assembly terdiri dari tiga jenis pernyataan -

  • Instruksi atau instruksi yang dapat dijalankan,
  • Arahan Assembler atau pseudo-ops, dan
  • Macros.

Itu executable instructions atau sederhananya instructionsberi tahu prosesor apa yang harus dilakukan. Setiap instruksi terdiri darioperation code(opcode). Setiap instruksi yang dapat dieksekusi menghasilkan satu instruksi bahasa mesin.

Itu assembler directives atau pseudo-opsberi tahu assembler tentang berbagai aspek proses perakitan. Ini tidak dapat dieksekusi dan tidak menghasilkan instruksi bahasa mesin.

Macros pada dasarnya adalah mekanisme substitusi teks.

Sintaks Pernyataan Bahasa Majelis

Pernyataan bahasa assembly dimasukkan satu pernyataan per baris. Setiap pernyataan mengikuti format berikut -

[label]   mnemonic   [operands]   [;comment]

Bidang dalam tanda kurung siku adalah opsional. Sebuah instruksi dasar memiliki dua bagian, yang pertama adalah nama instruksi (atau mnemonik), yang akan dijalankan, dan yang kedua adalah operan atau parameter dari perintah.

Berikut adalah beberapa contoh dari pernyataan bahasa assembly -

INC COUNT        ; Increment the memory variable COUNT

MOV TOTAL, 48    ; Transfer the value 48 in the 
                 ; memory variable TOTAL
					  
ADD AH, BH       ; Add the content of the 
                 ; BH register into the AH register
					  
AND MASK1, 128   ; Perform AND operation on the 
                 ; variable MASK1 and 128
					  
ADD MARKS, 10    ; Add 10 to the variable MARKS
MOV AL, 10       ; Transfer the value 10 to the AL register

Program Hello World dalam Sidang

Kode bahasa assembly berikut menampilkan string 'Hello World' di layar -

section	.text
   global _start     ;must be declared for linker (ld)
	
_start:	            ;tells linker entry point
   mov	edx,len     ;message length
   mov	ecx,msg     ;message to write
   mov	ebx,1       ;file descriptor (stdout)
   mov	eax,4       ;system call number (sys_write)
   int	0x80        ;call kernel
	
   mov	eax,1       ;system call number (sys_exit)
   int	0x80        ;call kernel

section	.data
msg db 'Hello, world!', 0xa  ;string to be printed
len equ $ - msg     ;length of the string

Ketika kode di atas dikompilasi dan dijalankan, itu menghasilkan hasil sebagai berikut -

Hello, world!

Mengompilasi dan Menghubungkan Program Perakitan di NASM

Pastikan Anda telah mengatur jalur nasm dan ldbiner dalam variabel lingkungan PATH Anda. Sekarang, ambil langkah-langkah berikut untuk menyusun dan menautkan program di atas -

  • Ketik kode di atas menggunakan editor teks dan simpan sebagai hello.asm.

  • Pastikan Anda berada di direktori yang sama dengan tempat Anda menyimpannya hello.asm.

  • Untuk merakit program, ketik nasm -f elf hello.asm

  • Jika ada kesalahan, Anda akan ditanya tentang itu pada tahap ini. Jika tidak, file objek program Anda bernamahello.o akan dibuat.

  • Untuk menautkan file objek dan membuat file yang dapat dieksekusi bernama hello, ketik ld -m elf_i386 -s -o hello hello.o

  • Jalankan program dengan mengetik ./hello

Jika Anda telah melakukan semuanya dengan benar, itu akan menampilkan 'Halo, dunia!' di layar.