Anda di halaman 1dari 5

Laporan Pendahuluan

Praktikum Sistem Tertanam

Nama

: Muhammad Arfiadi Pratama

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

IBM System/370 Extended Architecture (370-XA)

Enterprise Systems Architecture/370 (ESA/370)

Enterprise Systems Architecture/390 (ESA/390)

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

Gambar 1.1 General Purpose Register


Secara umum register-register dalam kelompok ini dapat digunakan untuk berbagai fungsi,
namun mereka memiliki fungsi-fungsi khusus seperti Register AX digunakan pada operasi
aritmatika terutama dalam operasi pembagian dan pengurangan. Register BX digunakan untuk
menunjukan suatu alamat offset dari suatu segmen. Register CX digunakan secara khusus pada
operasi looping dimana register ini menentukan berapa banyaknya looping yang akan terjadi.
Register DX digunakan untuk menampung sisa hasil pembagian 16 bit.
Index Pointer Register
Register IP berpasangan dengan CS, menunjukan alamat di memori tempat dari instuksi
selanjutnya yang akan dieksekusi. Register IP juga merupakan register 16 bit.

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.

Gambar 2.2 Susunan Flags Register 8088

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

Anda mungkin juga menyukai