Oleh
FIRMANSYAH LAHABU
NIM. 521417042
FAKULTAS TEKNIK
2023
KATA PENGANTAR
Assalamualaikum wr.wb.
Puji syukur diucapkan kehadirat Allah Swt. atas segala rahmat-Nya sehingga
makalah ini yang berjudul “Assembly Language Programing (Pemrograman Bahasa
Rakitan) dapat tersusun sampai selesai. Tidak lupa kami mengucapkan terima kasih
terhadap bantuan dari pihak yang telah berkontribusi dengan memberikan
sumbangan baik pikiran maupun materi.
Makalah ini disusun untuk memenuhi tugas dari mata kuliah “Arsitektur dan
Organisasi Komputer”. Penulis berharap semoga makalah ini dapat menambah
pengetahuan dan pengalaman bagi pembaca. Bahkan kami berharap lebih jauh lagi
agar makalah ini bisa pembaca praktikkan dan dijadikan dasar dalam pembelajaran.
Bagi kami sebagai penyusun merasa bahwa masih banyak kekurangan dalam
penyusunan makalah ini karena keterbatasan pengetahuan dan pengalaman kami.
Untuk itu kami sangat mengharapkan kritik dan saran yang membangun dari
pembaca demi kesempurnaan makalah ini.
Gorontalo, 13 Maret 2023
Penulis
i
DAFTAR ISI
KATA PENGANTAR ............................................................................................................. i
DAFTAR ISI .......................................................................................................................... ii
DAFTAR GAMBAR ............................................................................................................ iii
DAFTAR TABEL ................................................................................................................. iv
BAB 1 PENDAHULUAN......................................................................................................1
1.1. Latar Belakang ......................................................................................................1
1.2. Tujuan ....................................................................................................................2
BAB 2 PEMBAHASAN ........................................................................................................3
2.1. A Simple Machine..................................................................................................3
2.2. Instruction Mnemonic and Sintax ........................................................................5
2.3. Assembler Directives and Commands..................................................................7
2.4. Assembly and Execution of Programs .................................................................8
2.4.1. Struktur Data...................................................................................................9
2.5. The X68 Family ...................................................................................................11
2.5.1. General Purpose Register ...........................................................................12
2.5.2. Segmen Register ..........................................................................................13
2.5.3. Instruction Pointer (program counter) and The Flag Register ................13
BAB 3 PENUTUP................................................................................................................17
3.1. Kesimpulan ..........................................................................................................17
3.2. Saran ....................................................................................................................17
DAFTAR PUSTAKA...........................................................................................................18
ii
DAFTAR GAMBAR
Gambar 2.1 Mesin sederhana ..................................................................................................3
Gambar 2.2 bentuk penulisan bahasa assembly.......................................................................6
Gambar 2.3 proses perakitan dan eksekusi bahasa rakitan (assembly) ....................................8
Gambar 2.4 basis set register dari model pemrograman X86 ................................................14
Gambar 2.5 data movement instructions ...............................................................................15
Gambar 2.6 instruksi aritmatik ..............................................................................................15
Gambar 2.7 instruksi rotate and shift.....................................................................................15
Gambar 2.8 instruksi kontrol transfer ....................................................................................16
Gambar 2.9 instruksi kontrol prosesor ..................................................................................16
iii
DAFTAR TABEL
Tabel 2.1 Set instruksi .............................................................................................................4
Tabel 2.2 pemrograman bahasa mesin sederhana dalam biner ................................................4
Tabel 2.3 Pemrograman bahasa mesin sederhana dalam bentuk Hexadecimal ........................5
Tabel 2.4 bahasa rakitan untuk mesin sederhana .....................................................................6
Tabel 2.5 tabel simbol ...........................................................................................................10
Tabel 2.6 Tabel Opcode .........................................................................................................10
Tabel 2.7 Fitur prosesor keluarga X86 ..................................................................................12
iv
BAB 1
PENDAHULUAN
Bahasa mesin adalah kode biner murni, sedangkan bahasa rakitan adalah
pemetaan langsung dari kode biner ke dalam bentuk simbolik yang lebih mudah
dipahami dan dikelola oleh manusia. Mengubah representasi simbolik menjadi
bahasa mesin dilakukan oleh program khusus yang disebut assembler. Assembler
adalah program yang menerima program bahasa simbolik (sumber) dan
menghasilkan bahasa mesinnya (target). Dalam menerjemahkan program menjadi
kode biner, assembler akan mengganti alamat simbolik dengan alamat numerik,
mengganti kode operasi simbolik dengan kode operasi mesin, menyimpan
1
penyimpanan untuk instruksi dan data, dan menerjemahkan konstanta menjadi
representasi mesin.
Pada makalah ini akan disajikan tentang mesin hipotetis sederhana yang
akan dirujuk di sepanjang pembahasan makalah ini. Mesin hanya memiliki lima
register dan set instruksinya hanya memiliki 10 instruksi. Mesin sederhana ini
untuk mendefinisikan bahasa rakitan yang agak sederhana yang akan mudah
dipahami dan akan membantu menjelaskan masalah utama dalam pemrograman
rakitan. Juga akan diperkenalkan instruksi mnemonik dan sintaks serta arahan dan
perintah assembler.
1.2. Tujuan
Tujuan penulisan makalah ini adalah untukmemberikan pembaca gambaran
umum tentang bahasa assembly dan pemrogramannya.
2
BAB 2
PEMBAHASAN
2.1. A Simple Machine
Bahasa mesin adalah bahasa asli dari prosesor tertentu. Karena bahasa
rakitan (assembly language) adalah bentuk simbolis dari bahasa mesin, setiap
jenis prosesor yang berbeda memiliki bahasa rakitan yang unik. Sebelum kita
mempelajari bahasa rakitan dari prosesor tertentu, terlebih dahulu kita harus
memahami tentang detail prosesor. Diantaranya , kita perlu mengetahui ukuran
dan organisasi memori, register prosesor, format instruksi, dan seluruh set
instruksi. Untuk memahami hal-hal di atas, kita akan mempelajarinya melalui
mesin sederhana yang telah tersedia.
Mesin sederhana kami adalah prosesor berbasis akumulator, yang unit
memorinya terdiri dari 4096 kata penyimpanan, ukuran kata adalah 16 bit, dan
memiliki lima register 16-bit, yaitu:
1. Penghitung Program (PC), berisi alamat instruksi selanjutnya yang akan
dieksekusi.
2. Daftar Instruksi (IR), berisi bagian kode operasi dari instruksi yang
dieksekusi.
3. Daftar Alamat (AR), berisi bagian alamat (jika ada) dari instruksi yang
sedang dieksekusi.
4. Akumulator (AC), berfungsi sebagai sumber implisit dan tujuan data.
5. Daftar Data (DR), digunakan untuk menyimpan data.
3
Kita asumsikan bahwa prosesor sederhana kita mendukung tiga jenis
instruksi:
1. Instruksi transfer data, beroperasi untuk memuat, menyimpan, dan
memindahkan data antara register AC dan DR.
2. Intruksi pemrosesan data, untuk operasi add, subtract, And, dan Not.
3. Instruksi kontrol program, yaitu operasi lompatan dan lompatan bersyarat.
Ukuran instruksi adalah 16 bit, 4 bit untuk kode operasi dan 12 bit untuk
alamat (bila sesuai). Set instruksi prosesor dirangkum dalam tabel dibawah ini.
Contoh 2.1: Mari kita menulis program bahasa mesin yang menambahkan
konten lokasi memori 12 (00C-hex), diinisialisasi ke 350 dan lokasi memori 14
(00E-hex), diinisialisasi ke 96, dan menyimpan hasilnya di lokasi 16 (010-hex) ,
diinisialisasi ke 0. Program diberikan dalam instruksi biner pada tabel berikut.
Tabel 2.2 pemrograman bahasa mesin sederhana dalam biner
4
Kolom pertama memberikan lokasi memori dalam biner untuk setiap
instruksi dan operan. Kolom kedua berisi daftar isi dari lokasi memori.
Misalnya, isi lokasi 0 adalah instruksi dengan opcode: 0001, dan alamat operan:
0000 0000 1100. Perlu diketahui bahwa dalam kasus operasi yang tidak
memerlukan operan, bagian operan dari instruksi ditampilkan sebagai nol.
Program diharapkan disimpan di lokasi memori yang ditunjukkan mulai dari
lokasi 0 selama eksekusi. Jika program akan disimpan di lokasi memori yang
berbeda, alamat di beberapa instruksi perlu diperbarui untuk mencerminkan
lokasi baru.
Jelas bahwa program yang ditulis dalam kode biner sangat sulit untuk
dipahami dan, tentu saja, untuk di-debug. Mewakili instruksi dalam
heksadesimal akan mengurangi jumlah digit menjadi hanya empat per instruksi.
Tabel dibawah ini menunjukkan program yang sama dalam heksadesimal.
Tabel 2.3 Pemrograman bahasa mesin sederhana dalam bentuk Hexadecimal
5
empat bidang berikut: label, kode operasi (opcode), operan, dan komentar.
Empat bagian tersebut dapat dilihat pada gambar berikut.
6
Label instruksi LD X adalah START, yang artinya itu adalah alamat
memori dari instruksi ini. Label tersebut dapat digunakan dalam sebuah program
sebagai referensi seperti yang ditunjukkan pada instruksi berikut :
7
3) Penggunaan operasi sintetik
Penggunaan operasi sintetik membantu pemrogram perakitan untuk
menggunakan instruksi yang tidak secara langsung didukung oleh
arsitektur. Ini kemudian diterjemahkan oleh assembler ke satu set instruksi
yang ditentukan oleh arsitektur. Sebagai contoh, assembler dapat
mengizinkan penggunaan instruksi inkremen (sintetik) pada arsitektur
yang instruksi inkremennya tidak ditentukan melalui penggunaan beberapa
instruksi lain seperti instruksi add.
4) Sintaks assembler
Assembler biasanya memberlakukan beberapa konvensi dalam
mengacu pada komponen perangkat keras seperti register dan lokasi
memori. Salah satu konvensi tersebut adalah awalan nilai langsung dengan
karakter khusus (#) atau nama register dengan karakter (%).
5) Interaksi dengan sistem operasi
Perangkat keras yang mendasari di beberapa mesin tidak dapat
diakses secara langsung oleh suatu program. Sistem operasi (OS)
memainkan peran mediasi akses ke sumber daya seperti memori dan
fasilitas I/O. Interaksi dengan sistem operasi (OS) dapat terjadi dalam
bentuk kode yang menyebabkan eksekusi fungsi yang merupakan bagian
dari OS. Fungsi-fungsi ini disebut panggilan sistem.
8
- Assembler membaca program sumber dalam bahasa rakitan dan
menghasilkan program objek dalam bentuk biner. Program objek
diteruskan ke linker.
- Linker akan memeriksa file objek untuk panggilan ke prosedur di
Library. Linker akan menggabungkan prosedur yang diperlukan dari
perpustakaan tautan dengan program objek dan menghasilkan program
yang dapat dieksekusi.
- Loader memuat program yang dapat dieksekusi ke dalam memori dan
mencabangkan CPU ke alamat awal.
- Program memulai eksekusi.
9
Tabel 2.5 tabel simbol
10
bertambah setelah memproses setiap instruksi. ILC bertambah
dengan panjang instruksi yang sedang diproses, atau jumlah byte
yang dialokasikan sebagai hasil dari instruksi semu alokasi data.
Keluarga prosesor Intel diatas biasa disebut keluarga X86. Tabel 2.7
merangkum ciri-ciri utama dari anggota utama keluarga semacam itu.
11
Tabel 2.7 Fitur prosesor keluarga X86
Model pemrograman dasar dari 386, 486, dan Pentium ini terdiri dari tiga
kelompok register, yaitu general purpose register, segmen register, dan
instruction pointer (program counter) and the flag register.
2.5.1. General Purpose Register
Menurut Secara umum register-register dalam kelompok ini dapat
digunakan untuk berbagai keperluan, walaupun demikian ada pula penggunaan
khusus dari masing-masing register ini yaitu: (S’to, 2001)
12
register BP (Base Pointer)yang berpasangan dengan register SS(SS:BP)
mencatat suatu alamat di memory tempat data.
- Register SI (Source Index) dan register DI (Destination Index) biasanya
digunakan pada operasi string dengan mengakses secara langsung pada
alamat di memory yang ditunjukkan oleh kedua register ini.
- Pada prosesor 80386 terdapat tambahan register 32 bit, yaitu ESP, EBP
,ESI dan EDI.
2.5.2. Segmen Register
Register yang termasuk dalam kelompok ini terdiri atas register CS, DS,
ES dan SS yang masing-masingnya merupakan register 16 bit. Register-register
dalam kelompok ini secara umum digunakan untuk menunjukkan alamat dari
suatu segmen. (S’to, 2001)
13
- Sesuai dengan namanya Flags (Bendera) register ini menunjukkan kondisi dari
suatu keadaan <ya atau tidak>. Karena setiap keadaan dapat digunakan 1 bit
saja, maka sesuai dengan jumlah bitnya, Flags register ini mampu memcatat
sampai 16 keadaan.
Berikut adalah gambar dari basis set register dari model pemrograman
X86.
14
Gambar 2.5 data movement instructions
2) Arithmatic and Logic Instructions
Instruksi aritmatika dan logika dalam keluarga X86 terutama
mencakup lima subtipe. Ini adalah penjumlahan, pengurangan, perkalian,
pembagian, dan instruksi logika. Instruksi logika termasuk AND, OR,
NOT, XOR, dan TEST. Yang terakhir melakukan perbandingan logika
dari sumber dan tujuan dan menyetel bendera yang sesuai.
15
4) Control Transfer Instructions
Instruksi transfer kontrol dalam keluarga X86 terutama mencakup
empat subtipe. Ini adalah kondisional, iterasi, interupsi, dan tanpa syarat.
16
BAB 3
PENUTUP
3.1. Kesimpulan
Bahasa mesin adalah kumpulan instruksi mesin yang direpresentasikan dalam
0s dan 1s. Bahasa rakitan menyediakan representasi simbolik yang lebih mudah
digunakan, di mana alfanumerik yang setara dengan bahasa mesin digunakan. Ada
korespondensi satu-ke-satu antara pernyataan bahasa rakitan dan instruksi mesin.
Assembler adalah program yang menerima program bahasa simbolik (program
sumber) dan menghasilkan padanan bahasa mesinnya (program target). Meskipun
pemrograman bahasa rakitan sulit dibandingkan dengan pemrograman dalam
bahasa tingkat tinggi, tetap penting untuk mempelajari rakitan. Dalam beberapa
aplikasi, sebagian kecil dari program yang banyak digunakan mungkin perlu ditulis
dalam bahasa rakitan. Pemrograman dalam perakitan dapat menghasilkan kode
mesin yang lebih kecil dan lebih cepat daripada yang dihasilkan oleh kompiler
bahasa tingkat tinggi. Pemrogram perakitan memiliki akses ke semua fitur
perangkat keras dari mesin target yang mungkin tidak dapat diakses oleh
pemrogram bahasa tingkat tinggi. Selain itu, mempelajari bahasa rakitan dapat
sangat membantu dalam memahami detail tingkat rendah dari organisasi dan
arsitektur komputer.
3.2. Saran
Untuk mempermudah kita memahami bahasa rakitan (assembly), alangkah
baiknya kita harus memahami terlebih dahulu materi gerbang logika, bilangan
biner, bilangan hexadecimal, dan dasar-dasar pemrograman.
17
DAFTAR PUSTAKA
Arman, T. (2019). Memahami Bahasa Assembly Lewat Arsitektur Komputer. academia, 100.
18