Bagian-bagian dari Program Assembly

Oke, melanjutkan post saya sebelumnya yang membahas soal NASM, The Netwide Assembler. Kali ini saya akan membahas soal bagian-bagian pada sebuah program assembly.

Sebuah program Assembly bisa dibagi menjadi tiga bagian :

Bagian .data

Bagian ini berfungsi untuk mendeklarasikan inisialisasi data, atau dengan kata lain untuk mendefinisikan variabel yang mengandung berbagai tipe data. Namun data ini tidak berganti pada saat runtime, sehingga mereka tidak benar-benar variabel. Bagian .data digunakan untuk hal-hal seperti nama file dan ukuran buffer, dan kamu juga bisa mendefinisikan konstanta menggunakan intruksi EQU. Disinilah kamu bisa menggunakan intruksi DB, DW, DD, DQ dan DT.
Contoh dari bagian .data :

  1. section .data
  2.     message:    db ‘Hello world!’     ; Declare message to contain the bytes ‘Hello world!’ (without quotes)
  3.     msglength:  equ 12                ; Declare msglength to have the constant value 12
  4.     buffersize: dw 1024               ; Declare buffersize to be a word containing 1024
  5.  

Bagian .bss

Bagian ini adalah dimana kamu mendeklarasikan variabel. Kamu bisa menggunakan instruksi RESB, RESW, RESQ dan REST untuk memesan ruang kosong yang belum diinisialisasi pada memori untuk digunakan pada variabelmu, seperti ini

  1. section .bss
  2.     filename:   resb    255           ; Reserve 255 bytes
  3.     number:     resb    1             ; Reserve 1 byte
  4.     bignum:     resw    1             ; Reserve 1 word (1 word = 2 bytes)
  5.     realarray:  resq    10            ; Reserve an array of 10 reals
  6.  

Bagian .text

Ini bagian dimana kode assembly yang sebenarnya ditulis. Bagian .text harus dimulai dengan pendeklarasian global_start, bagian ini juga merupakan bagian dimana proses pemanggilan kernel dilakukan untuk mengeksekusi program. Seperti pada main function dalam C atau Java, hanya saja ini bukan fungsi, hanya sebuah starting point :

  1. section .bss
  2.     filename:   resb    255           ; Reserve 255 bytes
  3.     number:     resb    1             ; Reserve 1 byte
  4.     bignum:     resw    1             ; Reserve 1 word (1 word = 2 bytes)
  5.     realarray:  resq    10            ; Reserve an array of 10 reals
  6.  
  7. section .text
  8.     global _start
  9.  
  10. _start:
  11.     pop    ebx        ; Here is the where the program actually begins
  12.     .
  13.     .
  14.     .




Download aplikasi kami di Google Play Store


Tutorial Menarik Lainnya :

Leave a Reply

Do NOT follow this link or you will be banned from the site!