Nama
NPM
: 1206238936
Fak/Program Studi
: FMIPA/Fisika
Nomor Modul
:1
Nama Modul
: Assembly
Teman Kelompok
: Ibrohim Hanifa
Tanggal Percobaan
: 27 September 2015
DEPARTEMEN FISIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS INDONESIA
2015
1. TUJUAN
1. Mengenal bahasa assembly.
2. Mengetahui cara mengakses register memori menggunakan bahasa assembly.
3. Menggunakan bahasa assembly untuk melaksanakan operasi aritmatik.
2. TEORI DASAR
Bahasa Assembly
Bahasa assembly adalah bahasa pemrograman yang mendekati bahasa mesin baik dari bentuk dan
kontennya. Bahasa assembly biasa digunakan untuk mengendalikan suatu program lebih dalam
hingga satuan byte bahkan hingga satuan bit dan saat kondisi dimana kita menggunakan banyak
perintah subroutines untuk fungsi yang tidak diberikan oleh bahasa pemrograman lainnya.
Bahasa assembly terdiri dari beberapa pernyataan yang mewakili perintah atau komentar.
Pernyataan untuk perintah dibagi menjadi 3 grup yaitu perintah mesin, perintah assembler, dan
perintah makro.
Perintah mesin adalah representasi simbolis dari perintah bahasa mesin dari beberapa instruksi set
berikut
IBM System/370
z/Architecture
Hal tersebut disebut perintah mesin karena assembler menerjemahkan itu ke bahasa mesin
sehingga komputer dapat berjalan.
Perintah assembler adalah permintaan untuk melakukan beberapa operasi tertentu saat perakitan
modul sumber. Contohnya, mendefinisikan data konstanta, menyimpan data, dan mendefinisi
bagian akhir dari modul sumber. Kecuali perintah-perintah yang mendefinisikan konstanta dan
instruksi yang digunakan untuk menghasilkan perintah no-operation untuk penyelarasan.
Assembler tidak menerjemahkan perintah assembler ke kode objek
Perintah makro adalah permintaan kepada program assembler untuk memproses urutan perintah
yang sudah didefinisi (macro definition). Assembler menghasilkan perintah mesin dan perintah
assembler yang dimana pada saat proses terjadi mereka merupakan original input dari modul
sumber.
Register
Dalam pemrograman dengan bahasa Assembky, kita akan bertemu dengan Register. Register
adalah sebagian memori dari microprocessor yang dapat diakses dengan kecepatan yang sangat
tinggi. Dalam melakukan perintah-perintah, microprocessor selalu menggunakan register-register
sebagai perantaranya.
Register yang digunakan oleh mikroprosesor dibagi menjadi lima bagian dengan tugasnya
masing-masing.
Segmen Register
Register yang termasuk dalam Segmen Register terdiri atas register CS, DS, ES, dan SS yang
masing-masing merpakan register 16 bit. Register-register dalam kelompok ini secara umum
digunakan untuk menunjukan alamat dari suatu segmen. Register CS (Code Segment) digunakan
untuk menunjukkan tempat dari segmen yang sedang akrif, sedangkan register SS (Stack
Segment) menunjukan letak dari segmen yang digunakan oleh stack. Kedua register ini tidak bisa
sembarang diubah karena akan menyebabkan error pada program.
Register DS (Data Segment) biasanya digunakan untuk menunjukan tempat segmen dimana
data-data pada program disimpan. Umumnya isi dari register ini tidak perlu diubah kecuali pada
program residen. Register ES (Extra Segment) adalah suatu register yang tidak mempunyai suatu
tugas khusus. Register ES biasanya digunakan untuk menunjukan suatu alamat di memori
Pointer dan Index Register
Register pada kelompok ini adalah register SP, BP, SI, dan DI yang masing-masing terdiri dari
16 bit. Pointer dan Index Register secara umum digunakan sebagai penunjuk atau pointer
terhadap suatu lokasi di memori. Register SP (Stack Pointer) yang berpasangan dengan register
segment SS, digunakan untuk menunjukan alamat dari stack, sedangkan register BP (Base
Pointer) yang berpasangan dengan register SS, mencatat suatu alamat di memori tempat data.
Register SI (Source Index) dan register DI (Destination Index) biasanya digunakan pada operasi
string dengan mengakses secara langsung pada alamat di memori yang ditunjukan oleh kedua
register ini.
General Purpose Register
Register yang termasuk dalam kelompok ini adalah register AX, BX, CX, dan DX yang masingmasing terdiri atas 16 bit. Register-register ini memiliki ciri khas, yaitu dapat dipisah menjadi
dua bagian dimana masing-masing bagian terdiri atas 8 bit, seperti pada gambar 1.1. Akhiran H
menunjukan High dan akhiran L menunjukan Low
Flags Register
Flags register menunjukan kondisi dari suatu keadaan (ya atau tidak). Setiap keadaan dapat
digunakan 1 bit sehingga flags register ini mampu mencatat hingga 16 keadaan. OF (Overflow
Flag) jika terjadi OverFlow pada operasi aritmatika, bit ini bernilai satu. SF (Sign Flag) jika
digunakan bilangan bertanda bit ini akan bernilai satu. ZF (Zero Flag) jika hasil operasi
menghasilkan nol, bit ini akan bernilai satu. CF (Carry Flag) jika terjadi borrow pada operasi
pengurangan atau carry pada penjumlahan bit ini akan bernilai satu. PF (Parity Flag) digunakan
untuk menunjukan paritas bilangan. Bit ini bernilai satu jika bilangan yang dihasilkan merupakan
bilangan genap. DF (Direction Flag) digunakan pada operasi string untuk menunjukan arah
proses. IF (Interrupt Enable Flag) CPU akan mengabaikan interupsi yang terjadi jika bit ini nol.
TF (Trap Flag) digunakan terutama untuk debugging, dengan operasi step by step. AF (Auxiliary
Flag) digunakan oleh operasi BCD, seperti pada perintah AAA. NT (Nested Task) digunakan
pada prosesor 80286 dan 80386 untuk menjaga jalannya interupsi yang terjadi secara beruntun.
IOPL (I/O Protection Level) flag ini terdiri atas 2 bit dan digunakan pada prosesor 80286 dan
80386 untuk mode proteksi.
Referensi
http://www01.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1.asma400/asmr102
115.htm diakses pada tanggal 27 September 2015 pukul 23.40