Anda di halaman 1dari 76

PRAKATA

Dengan rahmat-Nya, Buku “Konsep dan Terapan Bahasa Rakitan”, telah selesai
disusun. Semoga dapat membantu dalam memahami pemrograman bahasa tingkat rendah
dengan bahasa Rakitan.
Buku ini ditulis berdasarkan keinginan penulis dari hasil pengalaman mengajar di
laboratorium dan kelas untuk mata kuliah Bahasa Rakitan. Dengan harapan bagi yang akan
mempelajari pemrograman selain bahasa tingkat tinggi dengan bahasa assembly dapat
menjadi alat bantu dalam memahami sebuah mesin komputer pada level bahasa tingkat
bawah. Buku ajar ini berisi tentang sebagian materi bahasa pemrograman bahasa tingkat
rendah, yang terdiri dari 21 bab dengan masing-masing bab membahas :
1. Pengenalan Dasar : Membahas tentang sistem computer, apa itu bahasa assembly, dan
pengatar dari sebuah bahasa assembly Pengenalan dan mengenali bahasa assembly
dan elemen-elemen dasarnya.
2. Sistem Bilangan : Membahas tentang sistem bilangan pada sebuah sistem computer
serta hubungan dengan format data bilangan computer.
3. Arsitektur Perangkat Keras dan Perangkat lunak : Membahas tentang komponen
arsitektur sistem yang terdiri dari perangkat keras dan perangkat lunak. Konsep kerja
mikroprosessor beserta register-register dengan mode pengalamatan.
4. Dasar-Dasar Bahasa Assembly : Membahas Perintah-perintah dan instruksi serta
mode pengalamatan pada bahasa assembly, tentang interrupt menggunakan tool debug
berserta penerapan pemrosesan kondisi dan contoh program menggunakan debug.
5. Menggunakan Tools Assembler TASM (Turbo Assembler) untuk membahas tentang
penggunaan yang dapat dilakukan diantaranya :
a. Layanan Masukan/Keluaran (Input/Output) : Membahas untuk input/output.
b. Pemrosesan Kondisi : Instruksi-instruksi kondisi dan pencabangan.
c. Aritmetika : Instruksi Geser dan Putar, penjumlahan, pengurangan, perkalian
dan pembagian.
d. Procedure dan macro, operasi pada layar, grafik manajemen file dan
pemrograman exe.

Konsep & Terapan Bahasa Rakitan 1


6. Menggunakan Tools Assembler dengan EMU8086, sebagai pengenalan yang berbasis
pada GUI (Grafical User Interface) untuk sebuah bahasa assembly. Serta Contoh
Program : Contoh-contoh program dalam bahasa assembly.

Setiap penjelasan pada buku ini akan disertai dengan contoh program yang sederhana
agar mudah dimengerti. Terselesaikannya penyusunan buku ini juga tidak terlepas dari
bantuan beberapa pihak. Beberapa bagian materi diambil dari beberapa sumber yang telah
disebutkan pada daftar pustaka.
Semoga tulisan yang sederhana ini akan memberikan sedikit kemudahan bagi siapa saja yang
berminat atau sedang mempelajari bahasa assembly dan pemrograman bahasa tingkat rendah.

Jakarta April 2014

Riki Ruli A. Siregar

Konsep & Terapan Bahasa Rakitan 2


DAFTAR ISI

P R A K A T A..........................................................................................................................1
DAFTAR ISI.............................................................................................................................3
PEMBAHASAN : 1..................................................................................................................9
PENGENALAN DASAR.........................................................................................................9
1.1 Pengenalan Sistem Komputer .....................................................................................9
1.2 Apa Itu Bahasa Assembly ..........................................................................................13
1.3 Pengantar Bahasa Assembly ......................................................................................16
PEMBAHASAN : 2................................................................................................................22
SISTEM BILANGAN............................................................................................................22
2.1 Bilangan ....................................................................................................................23
2.2 Bilangan Desimal ......................................................................................................24
2.3 Bilangan Biner...........................................................................................................26
2.1.1 Operasi Aritmatika pada bilangan Biner : .........................................................31
2.1.2 Pecahan Biner ke Desimal .................................................................................34
2.4 Bilangan Oktal...........................................................................................................35
2.4.1 Operasi Aritmatika pada Bilangan Oktal.................................................................37
2.5 Bilangan Hexadesimal...............................................................................................41
2.6 Contoh Konversi Sistem Bilangan ............................................................................47
2.7 Format Data Komputer..............................................................................................51
2.7.1 Data ASCII.........................................................................................................51
2.7.2 Bentuk BCD – Binary Code Desimal ................................................................54
2.7.3 Bentuk BCO - Biner Code Oktal .......................................................................55
2.7.4 Metoda Balikan..................................................................................................55
2.7.5 BILANGAN BERTANDA DAN TIDAK.........................................................56
PEMBAHASAN : 3................................................................................................................60
ARSTEKTUR SISTEM KOMPUTER ................................................................................60
3.1 CENTRAL PROCESSING UNIT (CPU) ...................................................................60
3.2 PENGERTIAN REGISTER DAN PENGALAMATAN MEMORI ........................61
3.3 JENIS-JENIS REGISTER .....................................................................................68

Konsep & Terapan Bahasa Rakitan 3


3.3.1 General Purpose Register..................................................................................68
3.3.2 Segmen Register. ...............................................................................................70
3.3.3 Pointer dan Index Register.................................................................................70
3.3.4 Index Pointer Register........................................................................................71
3.3.5 Flags Register. ...................................................................................................71
3.4 MODE PENGALAMATAN...................................................................................73
3.4.1 Immediate Addressing (Pengalamatan Segera)..................................................74
3.4.2 Direct Addressing (Pengalamatan Langsung) ...................................................74
3.4.3 Indirect Addressing (Pengalamatan Tidak Lansung).........................................74
3.4.4 Register Addressing (Pengalamatan Register)...................................................75
3.4.5 Register Indirect Addressing (Pengalamatan Tidak Langsung Register) ..........75
3.4.6 Displacement Addressing...................................................................................75
3.4.7 Stack Addressing................................................................................................75
PEMBAHASAN : 4................................................................................................................77
PENGANTAR DEBUG .........................................................................................................77
4.1 PENGERTIAN DEBUG ...........................................................................................77
4.2 PENJELASAN PERINTAH DEBUG ......................................................................79
4.3 PROGRAM BAHASA MESIN REPRESENTASI HEKSADESIMAL ..................87
4.4 INSTRUKSI BAHASA ASSEMBLY ........................................................................90
4.5 KOMPONEN DASAR BAHASA ASSEMBLY......................................................98
4.6 MEMBUAT PROGRAM DENGAN DEBUG .......................................................101
PEMBAHASAN : 5..............................................................................................................106
PENERAPAN KONDISI ....................................................................................................106
PADA DEBUG .....................................................................................................................106
5.1 PENERAPAN KONDISI PROGRAM PADA DEBUG ........................................106
5.2 MENCETAK STRING PADA DEBUG.................................................................116
5.3 CONTOH-CONTOH PROGRAM PADA DEBUG...............................................119
PEMBAHASAN : 6..............................................................................................................134
MENGGUNAKAN ..............................................................................................................134
TASM (TURBO ASSEMBLER) ........................................................................................134
6.1 PENGANTAR TURBO ASSEMBLER .................................................................135
6.2 MODEL PROGRAM COM....................................................................................139
6.3 BENTUK ANGKA .................................................................................................139

Konsep & Terapan Bahasa Rakitan 4


6.4 LABEL ....................................................................................................................140
6.5 KOMENTAR ..........................................................................................................140
6.6 PERINTAH MOV...................................................................................................140
6.7 PERINTAH INT .....................................................................................................141
6.8 POLA SUSUNAN PEMROGRAMAN ..................................................................141
6.9 MEMBUAT PROGRAM SEDERHANA ..............................................................142
6.10 KOMPILASI DAN RUNNING PROGRAM .........................................................144
6.11 LATIHAN ...............................................................................................................145
PEMBAHASAN : 7..............................................................................................................146
OPERASI PERULANGAN.................................................................................................146
(LOOPING) ..........................................................................................................................146
7.1 OPERASI LOOPING..............................................................................................147
7.2 INCREAMENT (INC) ............................................................................................148
7.3 DECREAMENT (DEC)..........................................................................................149
PEMBAHASAN : 8..............................................................................................................150
OPERASI ARIMATIKA.....................................................................................................150
8.1 OPERASI ARITMATIKA......................................................................................150
8.1.1 OPERASI PERTAMBAHAN .............................................................................150
8.1.1.1 ADD .................................................................................................................150
8.1.1.2 ADC..................................................................................................................152
8.1.1.3 INC...................................................................................................................153
8.2 OPERASI PENGURANGAN.................................................................................154
8.2.1 SUB..................................................................................................................154
8.2.2 SBB...................................................................................................................155
8.2.3 DEC..................................................................................................................157
8.3 OPERASI PERKALIAN.........................................................................................157
8.4 PEMBAGIAN .........................................................................................................159
8.5 PROSEDUR PERCOBAAN...................................................................................160
8.6 LATIHAN ...............................................................................................................161
PEMBAHASAN- 9...............................................................................................................162
OPERASI LOGIKA ............................................................................................................162
DAN PERGESERAN BIT...................................................................................................162
9.1 BOOLEAN DAN INSTRUKSI PERBANDINGAN..............................................162

Konsep & Terapan Bahasa Rakitan 5


9.1.1 Operasi AND ...................................................................................................163
9.1.2 Operasi OR.......................................................................................................164
9.1.3 Operasi NOT....................................................................................................165
9.1.4 Gerbang XOR ..................................................................................................166
9.1.5 TEST ................................................................................................................167
9.1.6 SHL ( Shift Left ).............................................................................................168
9.1.7 SHR ( Shift Right ) ..........................................................................................169
9.1.8 Rotate Left (ROL)............................................................................................170
9.1.9 Rotate Right (ROR) .........................................................................................170
PEMBAHASAN -10.............................................................................................................172
POINTER .............................................................................................................................172
10.1 DEFINISI POINTER ..............................................................................................172
10.2 TIPE DATA ............................................................................................................173
10.3 PENYIMPANAN DATA DALAM MEMORI.......................................................175
10.4 MENGGUNAKAN POINTER ...............................................................................176
PEMBAHASAN-11..............................................................................................................179
MODE PENGALAMATAN ...............................................................................................179
(ADDRESSING MODE) .....................................................................................................179
11.1 DEFINISI MODE PENGALAMATAN .................................................................179
11.2 MODE PENGALAMATAN...................................................................................181
11.3 PERPINDAHAN DATA SELAIN MOV ...............................................................190
PEMBAHASAN-12..............................................................................................................193
MENCETAK KALIMAT ...................................................................................................193
(STRING)..............................................................................................................................193
12.1 MENCETAK KALIMAT DENGAN DOS ............................................................193
12.2 DEKLARASI VARIABLE .....................................................................................195
12.3 TUGAS....................................................................................................................198
PEMBAHASAN-13..............................................................................................................199
INTRUKSI KONDISI / LOMPAT.....................................................................................199
13.1 DEFINISI OPERASI JUMP ...................................................................................199
13.2 LATIHAN : .............................................................................................................207
PEMBAHASAN-14..............................................................................................................209
S T A C K..............................................................................................................................209

Konsep & Terapan Bahasa Rakitan 6


14.1 DEFINISI STACK ..................................................................................................209
14.2 CARA KERJA STACK ...........................................................................................210
14.3 PUSH DAN POP.....................................................................................................212
14.4 PUSF dan POPF ......................................................................................................215
PEMBAHASAN-15..............................................................................................................216
INPUT KARAKTER ...........................................................................................................216
15.1 DEFINISI INPUT KARAKTER.............................................................................216
PEMBAHASAN-16..............................................................................................................224
PROCEDURE & MACRO .................................................................................................224
16.1 DEFINISI PROCEDUR..........................................................................................224
16.2 MAKRO ..................................................................................................................227
16.3 MACRO ATAU PROCEDURE ? ..........................................................................231
PEMBAHASAN-17..............................................................................................................233
OPERASI PADA LAYAR ..................................................................................................233
17.2 TAMPILAN TEKS PADA LAYAR ......................................................................234
17.2.1 Menampilkan Teks Dan Atributnya.................................................................234
17.2.2 MEMBUAT PROGRAM RUNTUH...............................................................235
PEMBAHASAN-18..............................................................................................................239
G R A F I K...........................................................................................................................239
18.1 MODUS GRAFIK ..................................................................................................239
18.2 MENGGAMBAR SATU PIXEL............................................................................239
18.3 INFORMASI WARNA PIXEL ..............................................................................240
18.4 MEMBUAT MENU SOROT..................................................................................241
18.5 MENGGAMBAR KOTAK.....................................................................................246
18.6 MENGGAMBAR OBJEK GAMBAR NON LINEAR ..........................................248
18.6 ANIMASI DENGAN HALAMAN LAYAR..........................................................250
PEMBAHASAN-19..............................................................................................................256
FILE DAN DIREKTORI ....................................................................................................256
19.1 PENGENALAN FILE HANDLE ...........................................................................256
19.2 OPERASI DIREKTORI..........................................................................................257
19.2.1 MENGGANTI DIREKTORI...........................................................................257
19.2.2 MEMBUAT DIREKTORI...............................................................................257
19.2.3 MEMBUAT DIREKTORI...............................................................................258

Konsep & Terapan Bahasa Rakitan 7


19.3 OPERASI FILE.....................................................................................................260
19.3.1 MEMBUAT FILE BARU................................................................................260
19.3.2 MEMBUKA FILE YANG TELAH ADA.......................................................261
19.3.3 MENUTUP FILE.............................................................................................262
19.3.6 SALIN FILE ....................................................................................................264
19.3.7 MENGHAPUS FILE .......................................................................................271
19.3.8 MEMINDAHKAN PENUNJUK(POINTER) FILE........................................272
19.3.9 MENGATUR ATRIBUT FILE .......................................................................273
PEMBAHASAN-20...............................................................................................................276
PROGRAM EXE .................................................................................................................276
20.1 PROGRAM EXE ....................................................................................................276
20.2 MODEL PROGRAM EXE .....................................................................................276
20.3 MEMBUAT PROGRAM EXE...............................................................................278
PEMBAHASAN : 21............................................................................................................280
MENGGUNAKAN EMULATOR 8086.............................................................................280
21.1 PENGANTAR EMU8086.......................................................................................280
21.2 MEMULAI EMU8086............................................................................................281
21.3 Directive File Keluaran ...........................................................................................284
21.4 PENGGUNAAN EMULATOR..............................................................................284
21.5 LATIHAN PROGRAM ..........................................................................................287
DAFTAR PUSTAKA...........................................................................................................301
LAMPIRAN..........................................................................................................................302
DAFTAR INSTRUKSI ASSEMBLY.................................................................................302
LAMPIRAN..........................................................................................................................337

Konsep & Terapan Bahasa Rakitan 8


PEMBAHASAN : 1

PENGENALAN DASAR

Deskripsi singkat : Dalam pembahasan bab ini akan dibahas mengenai pengenalan
sistem komputer dan pemrograman dengan bahasa assembly serta masalah-masalah yang
dapat diselesaikan dengan bahasa assembly.

Tujuan Pembelajaran :
1. Dapat memahami fungsi dan konsep dua bidang ilmu yang berbeda yang memiliki
hubungan yaitu perangkat keras (hardware) dan perangkat lunak (software).
2. Dapat memahami dan mampu menerangkan perbedaan antara bahasa pemrograman
assembly mikrokontroler dan mikroprosesor.
3. Mengetahui dan mengerti konsep dan aplikasi pada sebuah bahasa rakitan serta
komponen yang terlibat sebagai bahasa tingkat rendah.
4. Mengetahui beberapa fungsi servis dan interupsi yang digunakan pada sebuah bahasa
rakitan.

1.1 Pengenalan Sistem Komputer


Secara umum komputer terbagi atas dua macam ilmu yang berbeda. Pertama, perangkat
keras (hardware). Bidang disiplin ilmu yang diperlukan adalah pengetahuan tentang ilmu
Fisika atau elektronika. Kedua, perangkat lunak (software). Fungsinya adalah sebagai
pengatur hardware. Tanpa software, komputer bukanlah suatu barang yang berguna, tetapi
hanyalah sebuah benda yang tidak lebih berupa gabungan atau rakitan komponen-komponen
dalam sebuah rangkaian yang saling terhubung. Dalam perangkat keras, komponen yang
paling penting adalah mikroprosesor, selain komponen pendukung lainnya seperti memori,
hardisk, DVD, dan lainnya.
Mikroprosesor pertama di dunia adalah Intel 4004, yang merupakan mikroprosesor 4-bit
sebuah kontroler yang bisa diprogram dalam sebuah chip. Mikroprosesor tersebut mampu
mengalamati 4096 lokasi memori selebar 4-bit. Mikroprosesor 4004 hanya memiliki 45
instruksi. Mikroprosesor ini digunakan dalam sistem video game pertama dan sistem kontrol
kecil berbasis mikroprosesor. Masalah utama mikroprosesor pertama ini adalah kecepatan,
lebar Word, dan ukuran memorinya. Evolusi mikroprosesor 4 bit berakhir adalah ketika Intel
Konsep & Terapan Bahasa Rakitan 9
mengeluarkan 4040. Mikroprosesor 4040 beroperasi pada kecepatan yang lebih tinggi
meskipun tidak ada peningkatan dalam hal lebar Word dan ukuran memori. Walaupun terjadi
evolusi, ada beberapa yang masih bertahan pada aplikasi tingkat rendah, seperti oven
microwave dan sistem kontrol kecil. Sampai pada tahun 2012, prosesor canggih dari Intel
adalah Intel Core i7 yang berisi lebih dari 700 jutaan transistor didalamnya dan dengan
kecepatan yang sangat tinggi, disamping itu banyak yang membuat dari para kompatibelnya
yang focus pada mikroprosessor, seperti prosesor AMD.

Gambar 1.1 Evolusi Mikroprosesor

Mikroprosesor adalah piranti keras yang tidak akan bisa bekerja kalau tidak ada perangkat
lunak. Inilah yang membedakan mikroprosesor dengan rangkaian digital diskrit.
Kemampuannya untuk diprogram, dan diprogram ulang adalah suatu kelebihan didalam
sistem mikroprosesor. Contohnya dalam suatu sistem pengendali lampu lalu lintas dengan
rangkaian diskrit perlu menambahkan atau merubah rangkaian bila diperlukan perubahan
sistem, tetapi dengan sistem mikroprosesor, bisa dilakukan dengan hanya merubah program.
Perhatikan juga bahwa PC saat ini bisa multi fungsi dengan hanya mengganti programnya
saja. Dalam perkembangannya, mikroprosesor dibuat menurut kebutuhan aplikasinya yang
lebih spesifik, dalam hal ini menjadi beberapa jenis, yaitu;

Konsep & Terapan Bahasa Rakitan 10


1) Mikroprosesor RISC (Reduced Instruction Set of Computing) dan CISC (Complex
Instruction Set of Computing). Jenis ini yang digunakan untuk pengolahan informasi
dengan software yang rumit dan digunakan untuk kebanyakan PC saat ini.
2) Pengolah Sinyal Digital – DSP (Digital Signal Processor). Memiliki software dan
hardware yang ditujukan untuk mempermudah memproses sinyal-sinyal digital.
Digunakan pada perangkat audio – video modern seperti VCD, DVD, home teater dan
juga pada card-card multimedia di komputer.

Mikroprosesor dapat bekerja karena didalamnya terdapat bahasa-bahasa mesin (machine


languages) yang telah "dimasukkan" terlebih dahulu ke dalam memori sistem rangkaian
berbasis mikroprosesor itu. Di dalam sebuah mikroprosesor, paling tidak terdiri dari
rangkaian-rangkaian digital: memori/register, pengolah logika aritmatika, rangkaian kontrol
operasi sekuensial.

Gambar 1.2 Skema Mikroprosesor

Mikrokontroler adalah salah satu bagian dasar dari suatu sistem komputer. Meskipun
berbentuk jauh lebih kecil daripada personal komputer (PC) dan mainframe, mikrokontroler
dibangun dari elemen-elemen dasar yang sama. Secara sederhana, komputer akan
menghasilkan keluaran spesifik berdasarkan masukan yang diterima dan program yang
dikerjakan. Seperti umumnya komputer, mikrokontroler adalah alat yang mengerjakan
instruksi-instruksi yang diberikan kepadanya. Tahun 1976 Intel meluncurkan mikrokontroler
pertama yang disebut seri MCS-48 yang berisi lebih dari 17.000 transistor, hingga saat ini
seri ini masih digunakan untuk aplikasi khusus. Mikrokontroler, adalah mikroprosesor yang
dikhususkan untuk instrumentasi dan kendali. Contoh aplikasi pada kendali motor, berperan
seperti PLC (Programmable Logic Controller), pengaturan pengapian dan injeksi bahan

Konsep & Terapan Bahasa Rakitan 11


bakar pada kendaraan bermotor atau alat mengukur suatu besaran, seperti suhu, tekanan,
kelembaban dan lain-lain.
Sebagaimana dijelaskan diatas, mikrokontroler adalah pengembangan dari mikroprosesor
untuk keperluan instrumentasi ‘sederhana’, misalnya untuk pengaturan motor, pengaturan
permukaan cairan, pengukuran suhu, pH, konduktifitas, aplikasi PLC sederhana dan
semacamnya. Mikrokontroler adalah suatu chip yang dibuat dengan ciri-ciri kekhasannya,
biasanya adalah ;
1) Memiliki memori internal relatif sedikit.
2) Memiliki unit I/O langsung
3) Pemroses bit, selain byte
4) Memiliki perintah / program yang langsung berhubungan dengan I/O
5) Program relatif sederhana.
6) Beberapa varian memiliki memori yang tidak hilang bila catu padam didalamnya
untuk menyimpan program
Sedangkan dalam hal aplikasi, sistem mikokontroler memiliki karakteristik sebagai berikut;
1) Memiliki program khusus yang disimpan dalam memori untuk aplikasi tertentu, tidak
seperti PC yang multifungsi karena mudahnya memasukan program. Program
mikrokontroler relatif lebih kecil daripada program-program pada PC.
2) Konsumsi daya kecil.
3) Rangkaian sederhana dan kompak.
4) Murah, karena komponen sedikit.
5) Unit I/O yang sederhana, misalnya keypad, LCD, LED, Latch.
Lebih tahan terhadap kondisi lingkungan ekstrem misalnya temperatur, tekanan,
kelembaban dan sebagainya.

Konsep & Terapan Bahasa Rakitan 12


Gambar 1.3 Struktur Sistem Komputer

1.2 Apa Itu Bahasa Assembly


Bahasa assembly diprakarsai oleh IBM pada tahun 1956-1963. Bahasa assembly termasuk
bahasa tingkat rendah (low level language). Pada tahun 1957, sebuah tim yang dipimpin oleh
John W. Backus berhasil mengembangkan sebuah bahasa baru yang lebih mengarah pada
keperluan untuk menganalisis persoalan numeric. Bahasa assembly disebut bahasa level-
bawah karena dalam struktur dan fungsi dekat dengan bahasa mesin. Sebaliknya, bahasa
tingkat tingggi seperti Pascal, Basic, Fortran, Cobol, C/C++, JAVA mempunyai perintah-
perintah yang handal yang diterjemahkan ke dalam berbagai instruksi mesin oleh kompiler.

Konsep & Terapan Bahasa Rakitan 13


Gambar 1.4 Level Sistem Komputer

Ekstensi yang dihasilkan dari bahasa assembly adalah file dengan ekstensi COM dan
EXE. Secara umum kedua jenis file tersebut memiliki perbedaan antara program yang
berekstensi COM dan EXE, yang merupakan ukuran luas daerah yang menyebabkan kelainan
pemrograman dalam assembler.
Setiap jenis CPU memiliki bahasa mesin-nya masing-masing. Instruksi bahasa mesin
dinyatakan dalam bilangan numeric (Binari) yang tersimpan sebagai byte di memori. Masing-
masing instruksi memiliki kode numerik yang unik yang disebut sebagai “operation code”
atau “opcode ”. Setiap perintah diawali dengan suatu opcode dan dapat diikuti oleh data.
Bahasa assembly akan meningkatkan pemahaman tentang level yang lebih rendah.
Pada pembahasan ini memberikan titik pandang bahwa bahasa assembly sebaiknya dipelajari
secara kontekstual, sehingga interaksi perangkat keras dan perangkat lunak komputer
kemungkinan akan lebih mudah dipahami.
Bahasa Assembly adalah bahasa pemrograman dengan korespondensi satu-satu antara
perintah-perintah/pernyataannya dan bahasa mesin komputer. Bahasa assembly tidak satu
jenis sebagaimana CPU komputer yang bermacam-macam. Setiap bahasa assembly secara
langsung dipengaruhi oleh set instruksi mesin komputer dan arsitektur perangkat keras.
Secara singkat, bahasa assembly IBM-PC mengacu pada instruksi-instruksi yang dikenali
oleh keluarga mikroprosesor Intel 8086-80486.

Konsep & Terapan Bahasa Rakitan 14


Assembler adalah program yang mengkonversi kode program sumber ke dalam bahasa
mesin. Pada tulisan ini akan mengacu pada assembler yang membuat instruksi mesin untuk
mikrokomputer IBM yang sesuai. Sebagaimana dijelaskan sebelumnya bahwa bahasa
Assembly menggunakan mnemonic sebagai penganti bagi instruksi bahasa Mesin, sehingga
program yang ditulis dalam bahasa Assembly tidak dapat secara langsung dieksekusi oleh
CPU. Dalam hal ini Assembler berperan untuk menterjemahkan mnemonic tersebut menjadi
bahasa Mesin yang dapat dieksekusi oleh CPU. Untuk melakukan assembler dapat
menggunakan program DEBUG.EXE maupu berbagai aplikasi compiler seperti TASM,
MASM, NASM, FASM maupun emulator8086. Semua komputer tersebut menggunakan
mikroprosesor keluarga intel, mulai dari intel 8088 sampai 80486. Program akan berjalan
dibawah sistem operasi PC-DOS/MS-DOS versi 3.0 atau lebih tinggi.
Kesimpulan dari penjelasan diatas adalah Bahasa assembly kumpulan instruksi yang
spesifik untuk sistem komputer tertentu. Assembler adalah program yang menerjemahkan
program yang ditulis dalam bahasa assembly ke dalam bahasa mesin, yang dapat dieksekusi
oleh komputer. Setiap tipe komputer memiliki bahasa assembly yang berbeda, karena
rancangan komputer mempengaruhi instruksi yang dapat dieksekusi.
Bahasa assembly disebut bahasa level-bawah karena dalam struktur dan fungsi dekat
dengan bahasa mesin. Sebaliknya, bahasa tingkat tinggi seperti Pascal, Basic, Fortran, Cobol
dan C++ atau Java mempunyai perintah-perintah yang handal yang diterjemahkan ke dalam
berbagai instruksi mesin oleh kompiler.

Gambar 1.5 Kompiler Assembler Komputer

Konsep & Terapan Bahasa Rakitan 15


1.3 Pengantar Bahasa Assembly
Seiring dengan perkembangan mikroprosesor yang telah disebutkan pada penjelasan
sebelumnya. Pemrograman assembly juga berkembang mulai dari tasm 1.9, 2.0, hingga 5.01
yang bisa digunakan untuk meng-compile hingga 32 bit, sedangkan untuk 64 bit bisa
digunakan Fasm (Fast Assembler) dan beberapa pemrograman yang dapat digunakan secara
grafis seperti EMU8086, pada saat dikompiler menjadi file eksekusi yang dikonversi
menjadi 32 bit. Semua itu tergantung pada linker (yang mengubah file obj menjadi file COM
ataupun EXE).
Bahasa assembly dikategorikan sebagai bahasa tingkat rendah (low level language). Hal
itu untuk menggambarkan kekhususannya sebagai bahasa yang berorientasi pada machine
dependent. Ciri dari perbedaan antara bahasa assembly dan bahasa mesin, bahasa assembly
merupakan representasi teks dari bahasa mesin, yang dimana satu pernyataan
merepresentasikan satu instruksi mesin dan sebagai lapisan inti antara program bahasa tingkat
tinggi dan kode mesin. Sedangkan bahasa mesin merupakan bahasa alamiah/ibu dari sebuah
sistem komputer dengan instruksi dalam Words (kata) di lakukan dengan beberapa set
intruksi yang direpresentasikan dalam bit ke operasi mesin yang akan dieksekusi oleh
hardware.

Applications

High Level Language


Low Level language
Hardware
Assembly Language

C,VB,JAVA
Word, Excel,Photoshop

Gambar 1.6 Komputer Architecture Languages

Dalam bahasa assembly program sumbernya menganut prinsip 1 baris untuk satu
perintah, setiap baris perintah tersebut bisa terdiri atas beberapa bagian, yaitu bagian label,

Konsep & Terapan Bahasa Rakitan 16


bagian mnemonic, dan bagian Operand yang bisa lebih dari satu. Label mewakili nomor
memori program dari instruksi pada baris yang bersangkutan, misal pada saat menulis JUMP,
label ini ditulis pada bagian Operand untuk menyatakan nomor memori program yang dituju.
Dengan demikian label selalu mewakili nomor memori program dan harus ditulis di bagian
awal baris instruksi. Selain label dikenal pula simbol, yakni satu nama yang mewakili satu
nilai tertentu dan nilai yang diwakili bisa apa saja tidak harus nomor memori program. Cara
penulisan simbol sama dengan penulisan label, harus dimulai di huruf pertama dari baris
instruksi.
Pada penulisan di bahasa assembly, menggunakan dengan istilah mnemonic code.
Mnemonic code merupakan kode alphabet pendek yang membantu memori dalam mengingat
suatu instruksi CPU. Mnemonic merupakan singkatan perintah, dikenal dua macam
mnemonic, yakni mnemonic yang dipakai sebagai instruksi mengendalikan prosesor,
misalnya ADD, MOV, DJNZ dan lainnya. Ada pula mnemonic yang dipakai untuk mengatur
kerja dari program assembly misalnya ORG, EQU atau DB, mnemonic untuk mengatur kerja
dari program assembly ini dinamakan sebagai “assembly directive”. Dapat berupa: instruksi
atau directive instruksi atau directive. Contoh dalam penulisan instruksi : mov (Move), int
(Interrupt), sedangkan pada directive : DB (Define Byte ), ORG.
Operand adalah bagian yang letaknya di belakang bagian mnemonic, merupakan
pelengkap bagi mnemonic. Kalau sebuah instruksi diibaratkan sebagai kalimat perintah, maka
mnemonic merupakan subjek (kata kerja) dan Operand merupakan objek (kata benda) dari
kalimat perintah tersebut.
Sebuah instruksi bisa berisi nol, satu atau dua Operand Sebuah Operand bisa berupa:
register, variabel memori, atau immediate value Contoh:
10 (immediate value)

count (variabel memori)

AX (register)

Komentar digunakan untuk menjelaskan maksud sekumpulan baris program atau satu
baris program, setiap komentar didahului oleh tanda titik koma (;). Komentar tidak dirakit ke
dalam bahasa mesin. Berikut ini contoh program menggunakan emu8086.
name "Coba" ; Program menampilkan Latihan
org 100h ; set segment register:
mov ax, 0b800h
mov ds, ax
; print program "Latihan"
mov [02h], 'L'

Konsep & Terapan Bahasa Rakitan 17


mov [04h], 'a'
mov [06h], 't'
mov [08h], 'i'
mov [0ah], 'h'
mov [0ch], 'a'
mov [0eh], 'n'
mov [10h], '-'
mov [12h], 'S'
mov [14h], 'a'
mov [16h], 't'
mov [18h], 'u'
mov cx, 12 ; number of characters.
mov di, 03h ; start from byte after 'h'
mov ah, 0
int 16h

Gambar 1.7 Program menggunakan Emulator 8086

Konsep & Terapan Bahasa Rakitan 18


Gambar 1.8 Keluaran Program

Judul (name) akan memulai suatu program bahasa assembly. Pada judul fungsinya
secara umum akan sesuai dengan bagaimana suatu program dihasilkan. Fungsi beberapa
pengarah yang digunakan pada program di atas dapat dijelaskan sebagai berikut:
 NAME merupakan nama program yang akan dibuat.
 ORG singkatan dari originate untuk menentukan alamat awal suatu blok dalam
program baik untuk blok data maupun blok perintah.
Tubuh program dapat saja mengandungi label, mnemonik, Operand, komentar dan
pengarah. Secara umum susunan perintah pada tubuh program dalam satu baris adalah
sebagai berikut:
Label : MNEMONIK Operand ; Komentar
Label akan dinyatakan apabila baris program akan menjadi tempat lompatan dari
baris program lain. Label dituliskan sebagaimana adanya suatu pengenal dan dapat
dinyatakan sesuai maksud lompatan dan diakhiri dengan titik dua (:).
Mnemonik adalah sekumpulan huruf yang terdiri dari dua sampai lebih, singkatan
yang mewakili dari maksud perintah dinyatakan, misalnya MOV disingkat dari
MOVE yang berarti pemindahan nilai, yaitu MOV AH,02h berarti AH=02h.
Mnemonik dapat saja memerlukan Operand, dan kadangkala lebih dari dua Operand.
Mnemonik berlaku khusus, seperti INT disingkat dari interrupt yang diartikan
sela/jeda, merupakan pemanggilan perangkat keras yang dihasilkan secara eksternal
dari sinyal perangkat keras atau pemanggilan perangkat lunak secara internal dari

Konsep & Terapan Bahasa Rakitan 19


pelaksanaan perintah atau dengan peristiwa lain. INT berasal dari BIOS (Basic Input-
Output System) dan SO (sistem operasi), misalnya INT 16h dan INT 20h berasal dari
SO yang masing-masing berfungsi dan mempunyai ketentutan sendiri, yaitu :
 INT 21h Layanan 16h
Fungsi : Untuk menampilkan untaian karakter yang
diakhiri $.
Masukan : AH = 02h
DS:DX = alamat untaian
 INT 20h
Fungsi : Untuk kembali ke prompt sistem operasi
Masukan : -

Operand mengandungi nilai-nilai dengan mana pengoperasian perintah mnemonik


didahulukan. Sedikit saja perintah yang tidak memerlukan Operand, dan kebanyakan
pula perintah memerlukan dua Operand. Jika demikian, Operand pertama disebut
tujuan (destination), sedangkan Operand kedua (jika ada) disebut sumber (source).
Operand mengambil banyak bentuk yang berbeda sesuai dengan kebutuhan dan
syarat-syarat penggunaannya, misalnya MOV memerlukan dua Operand, yaitu AH
dan 09h, yang tidak lain berupa salah satu register dan data (nilai) langsung.
Sedangkan MOV DX, OFFSET Pesan berlaku cara berbeda, dengan mana Operand
sumber menggunakan pengarah untuk menunjuk alamat untaian karakter yang
diwakili oleh peubah Pesan. Register adalah salah satu Operand, yang berasal dari
sistem komputer. Untuk melakukan suatu pekerjaan, pengolah mikro
(microprocessor) menggunakan register sebagai tempat pengolahannya.
Register dikategorikan menjadi dua bagian: register serbaguna dan register khusus.
Register serba guna (general-puspose register) atau disingkat register umum terdiri dari
empat register yaitu accumulator (A), base (B), count (C), dan data (D), dan masing-masing
diberi akhiran X bila berukuran 16-bit: AX, BX, CX dan DX. Kemudian, masing-masing
juga dapat dibagi menjadi dua, sebagai register 8- bit, dan diberi akhiran H dan L untuk
menkitakan high dan low: AH, AL, BH, BL, CH, CL, DH dan DL. Untuk pengolah Intel
yang terbaru dengan menggunakan register 32-bit masing-masing diberi tambahan awalan E
(extended): EAX, EBX, ECX dan EDX.

Konsep & Terapan Bahasa Rakitan 20


Register khusus terdiri dari register cetakan (offset) yang berfungsi menunjuk alamat
memori per 16-bit atau 32-bit, register penggal (segment) yang berfungsi menunjuk alamat
blok memori, dan register bendera yang bertugas khusus sebagai rujukan kendali beberapa
pernyataan. Semua ini akan dibicarakan secara lebih luas pada bab-bab berikutnya.

Konsep & Terapan Bahasa Rakitan 21


PEMBAHASAN : 2

SISTEM BILANGAN

Deskripsi singkat : Dalam pembahasan bab ini akan dibahas mengenai pengenalan
sistem Bilangan pada komputer dan bahasa assembly serta fungsi-fungsi yang dalam
pengaksesan ke port dengan bahasa assembly.

Tujuan Pembelajaran :
1. Dapat memahami fungsi bilangan biner, octal, desimal, heksadesimal yang
dibutuhkan untuk mempelajari bahasa assembler.
2. Memahami jenis-jenis sistem bilangan yang digunakan pada teknik mikroprosessor
3. Memahami konversi sistem bilangan desimal ke sistem bilangan biner
4. Memahami konversi sistem bilangan desimal ke sistem bilangan oktal
5. Memahami konversi sistem bilangan desimal ke sistem bilangan heksadesimal
6. Memahami konversi sistem bilangan biner ke sistem bilangan oktal atau sebaliknya
7. Memahami konversi sistem bilangan biner ke sistem bilangan heksadesimal atau
sebaliknya
8. Memahami konversi sistem bilangan desimal dan sistem bilangan biner antara 0 dan 1
9. Mampu merubah bilangan desimal ke bentuk BCD atau sebaliknya
10. Mampu merubah bilangan desimal ke bentuk BCH atau sebaliknya
11. Memahami ASCII Code untuk pembentukan karakter

Konsep & Terapan Bahasa Rakitan 22


2.1 Bilangan
Sistem bilangan (Number System) adalah suatu cara untuk mewakili besaran dari suatu
sistem fisik. Sistem bilangan yang banyak digunakan oleh manusia adalah sistem bilangan
desimal, yaitu sistem bilangan yang menggunakan 10 macam simbol untuk mewakili besaran.
Sistem ini banyak dipergunakan oleh manusia karena konsep yang digunakan adalah manusia
memiliki 10 buah jari yang bisa membantu perhitungan-perhitugan menggunakan sistem
desimal. Sistem bilangan pada sebuah komputer, diwakili oleh bentuk elemen dua keadaan
(Two-State Elements), yaitu keadaan off (tidak ada arus) dan keadaan on (ada arus). Konsep
ini yang digunakan dalam sistem bilangan biner, yaitu hanya menggunakan 2 macam nilai
untuk mewakili suatu besaran nilai. Disamping sistem bilangan biner (Binary Number
System), komputer juga menggunakan sistem bilangan yang lain, yaitu sistem bilangan octal
(Octal Number System) dan sistem bilangan hesadesimal (Heksadesimal Number System).
Sistem bilangan menggunakan suatu bilangan dasar atau basis (base atau disebut juga radix)
tertentu. Basis yang dipergunakan oleh masing-masing sistem bilangan tergantung pada
bobot bilangan yang dipergunakan.
Sistem bilangan yang dibutuhkan untuk mempelajari bahasa assembler adalah :
1. Basis bilangan biner (basis 2)
2. Basis bilangan Oktal (basis 8)
3. Basis bilangan Desimal (Basis 10)
4. Basis bilangan Heksadesimal (basis 16)

Tabel 2.1 Sistem Bilangan


Sistem Bilangan Radix Digit Mutlak

Binary 2 01

Ternary 3 012

Quarternary 4 0123

Quinary 5 01234

Senary 6 012345

Septenary 7 0123456

octenary (octal) 8 01234567

Konsep & Terapan Bahasa Rakitan 23


Nonary 9 012345678

denary (desimal) 10 0123456789

Undenary 11 0123456789A

duodenary 12 0123456789AB

tredenary 13 0123456789ABC

quatuordenary 14 0123456789ABCD

quidenary 15 0123456789ABCDE

hexadenary (hexadesimal) 16 0123456789ABCDEF

2.2 Bilangan Desimal


Sistem ini menggunakan 10 macam simbol yaitu 0, 1, 2, 3, 4, 5, 6, 7, 8, dan 9. Sistem ini
menggunakan basis 10. Bentuk nilai ini dapat berupa integer desimal atau pecahan.
Integer desimal adalah nilai desimal yang bulat, misalnya 8598 dapat diartikan :
8 x 103 = 8000
5 x 102 = 500
9 x 101 = 90
8 x 100 = 8
8598
position value/palce value
absolute value

Absolue value merupakan nilai mutlak untuk masing-masing digit bilangan,


sedangkan position value adalah merupakan penimbang atau bobot dari masing-masing digit
tergantung dari letak posisinya, yaitu bernilai basis dipangkatkan dengan urutan posisinya.

Konsep & Terapan Bahasa Rakitan 24


Tabel 2.2 Nilai Posisi dari Nilai Mutlak
Posisi Digit (dari
Position Value
kanan)

1 100 =1

2 101 =10

3 102 =100

4 103 =1000

5 104= 10000

……. …….

……. …….

Dengan demikian, nilai 8598 dapat juga diartikan sebagai


(8*1000)+(5*100)+(9*10)+(8*1).
Pecahan desimal adalah nilai desimal yang mengandung nilai pecahan dibelakang
koma, misalnya nilai 183,75 adalah pecahan desimal yang dapat diartikan :
1 x 10 2 = 100
8 x 10 1 = 80
3 x 10 0 = 3
7 x 10 –1 = 0,7
5 x 10 –2 = 0,05
183,75
Integer desimal maupun pecahan desimal dapat ditulis dalam bentuk eksponen. Misalnya,
nilai 89,15 dapat dituliskan 0,8915 * 102. Setiap nilai desimal yang bukan 0 (nol) dapat
dituliskan dalam bentuk standar (Standard Exponential Form) seperti pada tabel 2.3 dibawah
ini.

Konsep & Terapan Bahasa Rakitan 25


Tabel 2.3 Standard Exponential Form

Terlihat bahwa mantissa selalu lebih besar atau sama dengan -0,1 dan lebih kecil atau
sama dengan 0,1. Bentuk penulisan dengan Standard Exponential Form disebut Floating-
Point Number. Sistem bilangan desimal menggunakan komplemen, dilakukan untuk
mengurangi dua buah bilangan dimana kedua bilangan kedua lebih besar daripada
bilangan pertama. Di dalam sistem bilangan desimal, ada 2 macam komplemen yang
digunakan, yaitu komplemen 9 (9’s complement atau nine’s complement yang merupakan
komplemen basis minus 9) dan komplemen 10 (10’s complement atau ten’s complement yang
merupakan komplemen basis).

Contoh pengurangan dalam bentuk desimal.


34(10) – 165(10)
Caranya:
 9’s complement (bilangan kedua)
 9’s complement (165) (999-165) = 834
 Komplemen 10 (10’s complement (bilangan kedua) + 1) = 835
 Jumlahkan 34(10) + 835(10) = 869(10)

2.3 Bilangan Biner


Semua bilangan, data maupun program itu sendiri akan diterjemahkan oleh komputer ke
dalam bentuk biner. Jadi pendefinisian data dengan jenis bilangan apapun (desimal, oktaf dan
hexadesimal) akan selalu diterjemahkan oleh komputer ke dalam bentuk biner.
Komputer memproses data maupun program berupa sejumlah bilangan biner yang
menyatakan keadaan hidup atau mati (on or of) dengan angka 1 dan 0. Sesuai dengan uraian
diatas, maka dapat disimpulkan bahwa semua yang diproses komputer sebenarnya hanya
angka 0 dan 1, sehingga sistem bilangan biner yang terdiri dari angk 0 dan 1 sangatlah
Konsep & Terapan Bahasa Rakitan 26
penting untuk dipelajari lebih lanjut. Bilangan biner hanya terdiri dari 1 dan 0, maka dapat
disimpulkan bahwa bilangan biner itu berbasis 2.
Setiap angka digit dalam sistem bilangan biner disebut Bit, jika bentuk 4 bit disebut
Nibble, bentuk 8 disebut Byte , bentuk 2 (two) Byte disebut Word, bentuk two Word disebut
Double Word.

Gambar 2.1 Digit dalam sistem biner

Catatan :
1. Bilangan 0 dan 1 merupakan bilangan biner yang disebut BIT (Binary digit).
2. Kumpulan dari 4 bit disebut NIBBLE. Nibble beranjak dari bilangan 0 sampai
dengan 15 (bilangan desimal) dan 0 sampai dengan F (bilangan hex).
3. Satu BYTE terdiri dari 8 bit atau 2 nibble. Angka beranjak dari bilangan 0
sampai dengan 255 (desimal) dan 00 sampai dengan FF (hexadesimal)
4. Satu WORD terdiri dari 16 bit.
5. Satu DOUBLE WORD terdiri dari 32 bit
6. Satu PARAGRAF terdiri dari 128 bit.
7. Sati PAGE (halaman) terdiri dari 256 byte (2048 bit)

Konsep & Terapan Bahasa Rakitan 27


Gambar 2.3 Hubungan Bit, Nibble, Byte dan Word

Notasi biner merupakan integer dengan menggunakan simbol 0 dan 1. Jika pada notasi
basis memiliki kuantitas posisi satuan, puluhan, ratusan dan seterusnya, pada notasi biner
memiliki kuantitas posisi satu (20), dua (21), empat (22), delapan (23), dan seterusnya. Untuk
mengubah integer basis dua (biner) menjadi basis sepuluh yaitu dengan cara mengalikan
setiap digit dengan kuantitas posisinya.

Contoh:
1101(2) = 1 x 23 + 1 x 22 + 0 x 21 + 1 x 20
=8+4+0+1
= 13(10)
Jadi 1101(2) = 13(10)

11001(2) = 1 × 24 + 1 × 23 + 1 x 22 + 0 x 21 + 1 x 20
= 16 + 8 + 1
= 25

Komputer pribadi IBM disebut komputer 16-bit karena instruksinya dapat


mengoperasikan sejumlah 16-bit bilangan. Integer biasanya disimpan dalam memori sebagai
byte, Word atau Double Word. Untuk masing-masingnya mempunyai batasan bawah dan
atasnya, sebagai berikut :

Konsep & Terapan Bahasa Rakitan 28


Tabel 2.4 Instruksi Penyimpan Memori
Tipe penyimpan Bit Range (bawah-atas)

Byte 8 0-255

Word 16 0-65,535

Double Word 32 0-4,294,967,295

Walaupun masing-masing billangan membutuhkan jumlah bit yang berbeda-beda,


pada kenyataannya semua bilangan disimpan di memori sebagai nilai biner karena arsitektur
komputer adalah biner. Setiap bit memori adalah 1 atau 0, tetapi lokasi terkecil memori yang
diberi alamat adalah byte.
Ada aturan untuk menambahkan "b" pada akhir angka biner, dengan cara ini kita
dapat menentukan bahwa 101b adalah angka biner dengan nilai desimal dari 5. Angka biner
10100101b sama dengan nilai desimal dari 165 dan 10000101b sama dengan 133 :

Gambar 2.4 Penentuan biner 10100101b ke desimal 165

Gambar 2.5 Penentuan biner 10000101b ke desimal 133

Konsep & Terapan Bahasa Rakitan 29


Agar lebih mengerti tentang nilai posisi dari sistem bilangan biner, perhatikan posisi
digit seperti pada tabel 2.5 dan tabel 2.6.

Tabel 2.5 Posisi Digit dari Sistem Bilangan Biner


Posisi Digit (dari
Position Value
kanan)

1 20 =1

2 21 =2

3 22 =4

4 23 =8

5 24=16

……. …….

……. …….

Tabel 2.6 Posisi Sistem Bilangan Biner dan Desimal

Untuk mengetahui lebih jelas mengenai bilangan konversi biner ke desimal, dapat dilihat
pada tabel 2.7

Konsep & Terapan Bahasa Rakitan 30


Tabel 2.7 Konversi Bilangan Biner ke Desimal

Konsep sistem bilangan biner adalah menggunakan 2 macam simbol bilangan berbasis 2
digit angka, yaitu 0 dan 1. Berikut cara lain dengan contoh bilangan 1001 dapat diartikan :
1001
1x20 =1
0x21 =0
0x22 =0
1x23 =8
9 (10)

2.1.1 Operasi Aritmatika pada bilangan Biner :


a. Penjumlahan
Dasar penjumlahan biner adalah :
0+0=0
0+1=1
1+0=1
1+1=0 dengan carry of 1, yaitu 1 + 1 = 2, karena digit terbesar biner
1, maka harus dikurangi dengan 2 (basis), jadi 2 – 2 = 0 dengan carry of 1.
contoh :
1111
10100 +
100011

Konsep & Terapan Bahasa Rakitan 31


atau dengan langkah :

1+0 =1
1+0 =1

1+1 = 0 dengan carry of 1


1+1+1 =0

1+1 = 0 dengan carry of 1 1 0 0 0 1 1

b. Pengurangan
Bilangan biner dikurangkan dengan cara yang sama dengan pengurangan bilangan
desimal. Dasar pengurangan untuk masing-masing digit bilangan biner adalah :
0-0=0
1-0=1
1-1=0
0–1=1 dengan borrow of 1, (pijam 1 dari posisi sebelah kirinya).

Contoh :
11101
1011 -
10010

Atau dengan langkah – langkah :


1–1 =0

0–1 = 1 dengan borrow of 1

1–0–1 =0
1–1 =0
1–0 =1
1 0 0 1 0

Konsep & Terapan Bahasa Rakitan 32


Pengurangan menggunakan komplemen, dilakukan untuk mengubah pengurangan
menjadi bentuk penjumlahan. Didalam sistem biner terdapat 2 macam komplemen yang
dipergunakan, yaitu komplemen 1 (1’s complement atau one’s complement yang merupakan
komplemen basis minus 1) dan komplemen 2 (2’s complement atau one’s complement yang
merupakan komplemen basis).
Contoh pengurangan dalam ukuran byte (8 bit) berikut :
0000 0010(2) – 0000 0011(2)
Caranya :
 Not (bilangan kedua), Not (0000 0011) = 1111 1100
 Komplemen dua (Not (bilangan kedua) +1 ) = 1111 1101
 Jumlahkan 0000 0010(2) + 1111 1101(2) = 1111 1111(2)

c. Perkalian
Dilakukan sama dengan cara perkalian pada bilangan desimal. Dasar perkalian
bilangan biner adalah :

0x0=0
1x0=0
0x1=0
1x1=1
contoh
Desimal Biner
14 1110
12 x 1100 x
28 0000
14 + 0000
168 1110
1110 +
10101000

d. Pembagian
Pembagian biner dilakukan juga dengan cara yang sama dengan bilangan desimal.
Pembagian biner 0 tidak mempunyai arti, sehingga dasar pembagian biner adalah :

Konsep & Terapan Bahasa Rakitan 33


0:1=0
1:1=1

Desimal Biner
5 / 125 \ 25 101 / 1111101 \ 11001
10 - 101 -
25 101
25 - 101 -
0 0101
101 -
0

2.1.2 Pecahan Biner ke Desimal


Sebaliknya, untuk konversi dari pecahan biner ke desimal, dapat dilihat melalui
contoh berikut: Misalkan yang ingin dikonversi adalah 0.10112.
Dalam hal ini, kita perlu melihat terlebih dahulu bilangan di belakang koma, yaitu
10112. Untuk mendapatkan bilangan desimal, bilangan tersebut dikalikan berturut 2
dengan 1/21, 1/22, 1/23, …. 1/2n.
Masukkan nilai bilangan tersebut, maka :
1 x 1/21 = ½
0 x 1/22 = 0
1 x 1/23 = 1/8
1 x 1/24 = 1/16
Langkah berikutnya adalah menjumlah seluruh bilangan di atas, sehingga
menghasilkan : 1/2 + 0 + 1/8 + 1/16 = 11/16 = 0,687510.
Bilangan tersebut tinggal dijumlah ke bilangan di depan koma. Karena di depan
koma adalah 02, dimana kalau dikonversi ke desimal menjadi 010, maka hasil akhir adalah
:
010 + 0.687510 = 0.687510.

Konsep & Terapan Bahasa Rakitan 34


2.4 Bilangan Oktal
Selain mengenal bilangan biner, komputer juga mengenal beberapa sistem bilangan lain.
Salah satunya adalah bilangan octal. Bilangan octal meliputi angka 0 hingga 7, sesuai dengan
namanya octal yang berarti 8.
Pada bilangan oktal hanya menggunakan 8 simbol yaitu angka 0, 1, 2, 3, 4, 5, 6 dan 7 dan
0 1 2 3 4
setiap nilai tempat mempunyai kelipatan 8 , 8 , 8 , 8 , 8 , dst. Sistem bilangan octal
menggunakan basis 8. Dalam bahasa assembler, sistem bilangan octal jarang digunakan.
Konversi bilangan octal ke desimal memiliki cara yangsama dengan melakukan konversi
bilangan biner ke desimal.
Bilangan octal merupakan bilangan berdasar delapan, contoh bilangan terdiri angka 0
hingga 7, seperti terlihat dalam tabel 2.6.

Tabel 2.8 Bilangan Oktal, Biner dan Desimal

Nilai posisi sistem bilangan octal merupakan perpangkatan dari nilai 8, seperti yang
terlihat dalam tabel 2.9.

Konsep & Terapan Bahasa Rakitan 35


Tabel 2.9 Nilai Posisi pada Bilangan Oktal
Posisi Digit (dari
Position Value
kanan)

1 80 = 1

2 81 = 8

3 82 = 64

4 83 = 512

5 84= 4096

……. …….

……. …….

Position value system bilangan octal adalah perpangkatan dari nilai 8.


Contoh :
12(8) = …… (10)
2x80=2
1 x 8 1 =8
10
Jadi 10 (10)

Konsep & Terapan Bahasa Rakitan 36


2.4.1 Operasi Aritmatika pada Bilangan Oktal
1. Penjumlahan
Langkah-langkah penjumlahan octal :
1. Tambahkan masing-masing kolom secara desimal
2. Ubah dari hasil desimal ke octal
3. Tuliskan hasil dari digit paling kanan dari hasil octal
4. Jika hasil penjumlahan tiap-tiap kolom terdiri dari dua digit, maka digit paling
kiri merupakan carry of untuk penjumlahan kolom selanjutnya.
Tabel 2.10 Penjumlahan Satu Digit pada Bilangan Oktal
0 1 2 3 4 5 6 7
0 0 1 2 3 4 5 6 7
1 1 2 3 4 5 6 7 10
2 2 3 4 5 6 7 10 11
3 3 4 5 6 7 10 11 12
4 4 5 6 7 10 11 12 13
5 5 6 7 10 11 12 13 14
6 6 7 10 11 12 13 14 15
7 7 10 11 12 13 14 15 16

Pada tabel 2.7, penjumlahan angka 7 langsung menuju ke angka 10. Hal ini
merupakan bilangan oktal yang terdiri dari 0, 1, 2, 3, 4, 5, 6, 7 dimana nilai maksimal adalah
7. Dan apabila lebih dari 7 maka itu adalah carry of dan sisanya akan dijumlahkan pada
kolom berikutnya. Contoh :
1 + 6 = 7. ----- > tidak lebih dari 7. Maka tetap.
1 + 7 = 8. ----- > carry of 1 dan sisa 0, maka hasilnya adalah 10 (8 mod 8= hasil 1 sisa 0)
2 + 7 = 11. --- > carry of 1 dan sisa 1, maka hasilnya adalah 11 (9 mod 8= hasil 1 sisa 1)
Untuk memudahkan perhitungan, dapat digunakan persamaan berikut ini :
Hasil = n * 10 + (jumlah bilangan mod 8)
n = banyaknya modulo yang terjadi
Contoh:
7(8) + 6(8) + 4(8) =
17 mod 8 = hasil 2 sisa 1

= 21
Konsep & Terapan Bahasa Rakitan 37
Contoh :
Desimal Oktal
21 25
87 + 127 +
108 154
5 10 + 7 10 = 12 10 = 14 8
2 10 + 2 10 + 1 10 = 5 10 = 58
1 10 = 1 10 = 18

2. Pengurangan
Pengurangan Oktal dapat dilaukan secara sama dengan pengurangan bilangan
desimal.
Contoh :
Desimal Oktal
108 154
87 - 127 -
21 25
48 -78 +88 (borrow of) = 5 8
6 8 - 2 8- 1 8 =28
18 -18 =08

Untuk mengurangi dua buah bilangan, di mana bilangan kedua lebih besar daripada
bilangan pertama, biasanya komputer menggunakan metode yang disebut komplemen
(complement), yaitu dengan komplemen basis minus 7 (radix-minus-seven
complement) atau komplemen basis (radix complement). Kompelemen pada dasarnya
mengubah bentuk pengurangan menjadi bentuk penambahan. Di dalam sistem
bilangan octal ada 2 macam komplemen yang dipergunakan, yaitu komplemen 7 (7’s
complement atau seven’s complement yang merupakan komplemen basis minus 7) dan
komplemen 8 (8’s complement atau eight’s complement yang merupakan komplemen
basis).
Contoh pengurangan dalam bentuk octal adalah :
34(8) – 165(8)

Konsep & Terapan Bahasa Rakitan 38


Caranya :
 7’s complement (bilangan kedua): (165) (777-165) =612
 8’s complement (bilangan kedua) + 1 = 613
 Jumlahkan 34(8) = 613(8) = 647(8)
3. Perkalian
Langkah – langkah :
1. Kalikan masing-masing kolom secara desimal
2. Ubah dari hasil desimal ke octal
3. Tuliskan hasil dari digit paling kanan dari hasil octal
4. Kalau hasil perkalian tiap kolol terdiri dari 2 digit, maka digit paling kiri
merupakan carry of untuk ditambahkan pada hasil perkalian kolom
selanjutnya.
Contoh :
Desimal Oktal
14 16
12 x 14 x
28 70
14 + 4 10 x 6 10 = 24 10 = 30 8
168 4 10 x 1 10 + 3 10 = 7 10 = 7 8
16
14 x
70
16
1 10 x 6 10 = 6 10 =68
1 10 x 1 10 = 1 10 = 1 8

16
14 x
70
16 +
250
7 10 + 6 10 = 13 10 = 15 8
1 10 + 1 10 = 2 10 = 2 8

Konsep & Terapan Bahasa Rakitan 39


Perhatikan hasil kali antara 6 * 4 = 24, sehingga hasil yang didapat (24 mod 8 = 3 sisa
0) di-modulo/bagi dengan 8 dan diperoleh 3 sisa 0, lalu 4 * 1 =4 ditambah dengan carry
of (4 + 3 = 7) 3 = 7. Lakukan hal yang serupa pada proses penjumlahannya.

Tabel 2.11 Hasil Perkalian Digit Oktal


0 1 2 3 4 5 6 7
0 0 0 0 0 0 0 0 0
1 1 2 3 4 5 6 7
2 4 6 10 12 14 16
3 11 14 17 22 25
4 20 24 30 34
5 31 36 43
6 44 52
7 61

4. Pembagian
Pembagian octal juga dapat dilakukan dengan cara yangsama dengan pembagian
desimal. Contoh dari pembagian bilangan octal adalah :
11: 3 = 3
1204 : 27 = 34
Desimal Oktal
12 / 168 \ 14 14 / 250 \ 16
12 - 14 - 14 8 x 1 8 = 14 8
48 110
48 – 110 - 14 8 x 6 8 = 4 8 x 6 8 = 30 8
0 0 1 8 x 6 8= 6 8 +
110 8

Konsep & Terapan Bahasa Rakitan 40


2.5 Bilangan Hexadesimal
Sistem bilangan Oktal menggunakan 16 macam simbol bilangan berbasis 8 digit
angka, yaitu 0 , 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E dan F. Dimana A = 10, B = 11, C= 12,
D = 13 , E = 14 dan F = 15
Bilangan biner yang banyak susah untuk dibaca, sehingga bilangan heksadsimal
biasanya sering digunakan untuk menggambarkan memori komputer atau instruksi. Setiap
digit bilangan heksadesimal mewakili 4 bit bilangan biner, dan 2 digit bilangan heksadesimal
mewakili satu byte. Pada contoh berikut terlihat bahwa bilangan biner
000101100000011110010100 digambarkan oleh bilangan heksadesimal 160794 :
0001 0110 0000 0111 1001 0100
1 6 0 7 9 4

Position value system bilangan heksadesimal adalah perpangkatan dari nilai 16.
Contoh :
C7(16) = …… (10)
7 x 16 0 = 7
1
C x 16 = 192
199
Jadi 199 (10)
Nilai posisi sistem bilangan hexadesimal merupakan perpangkatan dari nilai 16
seperti pada tabel 2.12.
Tabel 2.12 Posisi Digit dari Bilangan Hexadesimal
Posisi Digit (dari
Position Value
kanan)
1 160 = 1
2 161 = 16
3 162 = 256
4 163 = 4096
5 164= 65536
……. …….
……. …….

Posisi digit heksadesimal. Setiap posisi digit heksadesimal mewakili bilangan pangkat dari
16.
Konsep & Terapan Bahasa Rakitan 41
163 162 161 160
Nilai 4096 256 16 1

Bilangan dapat dikonversi dari heksadesimal ke desimal dengan mengalikan masing-masing


digit dengan nilai posisinya. Misalnya bilangan 3BA4h, hasilnya
3 B A 4
Nilai posisi 4096 256 16 1
Hasil kali 12,288 2,816 160 4 = 15,268d
Pada saat perkalian huruf B diganti 11 dan A dengan 10.

Pada bahasa assembler, bilangan hexadesimal mutlak harus dikuasai. Hal ini karena
berbagai perintah dalam program yang dibuat menggunakan utility “DEBUG” dari “DOS”.
Seperti bilangan biner yang berdasarkan 2 atau bilangan octal yang berdasarkan 8,
bilangan heksadesimal berdasarkan 16, seperti terlihat pada tabel 2.13 yang sesuai dengar arti
heksadesimal sendiri, yaitu heksa = 6 dan desimal = 10.

Konsep & Terapan Bahasa Rakitan 42


Tabel 2.13 Konversi Heksadesimal, Desimal dan Biner

Contoh:
a. 3A = (3*161)+(A*160) = 58
b. A341 = (10*163)+(3*162)+(4*161)+(1*160) = 41793
Bilangan heksadesimal dapat konversi bilangan pecahan. Perhatikan contoh berikut :
a. 0, A2 = (10*16-1)+(2*16-2) = 0.625+0.0078125 = 0.6328125
b. 0,3B2 = (3*16-1)+(11*16-2) +(2*16-3) = 0.1875+0.04296875+0.00048828125 =
0.23095703125

Operasi Aritmatika Pada Bilangan Hexadesimal


a. Penjumlahan
Penjumlahan bilangan hexadesimal dapat dilakukan secara sama dengan penjumlahan
bilangan desimal, dengan langkah-langkah sebagai berikut :
Langkah-langkah penjumlahan hexadesimal :
1. Tambahkan masing-masing kolom secara desimal

Konsep & Terapan Bahasa Rakitan 43


2. Ubah dari hasil desimal ke hexadesimal
3. Tuliskan hasil dari digit paling kanan dari hasil hexadesimal
4. Jika hasil penjumlahan tiap-tiap kolom terdiri dari dua digit, maka digit paling
kiri merupakan carry of untuk penjumlahan kolom selanjutnya.
Contoh :
Desimal Hexadecimal
2989 BAD
1073 + 431+
4062 FD E
D 16 + 1 16 = 13 10 + 110 = 14 10 = E 16
A 16 + 3 16 = 10 10 + 3 10 = 13 10 =D 16
B16 + 4 16 = 1110 + 4 10 = 15 10 = F 16

Penjumlahan heksadesimal dapat juga dilakukan dengan bantuan tabel 2.14

Tabel 2.14 Hasil Penjumlahan Digit Heksadesimal

Konsep & Terapan Bahasa Rakitan 44


Menggunakan tabel tersebut, penjumlahan bilangan heksadesimal CBA dengan 627 dapat
dilakukan sebagai berikut :
CBA
627 +
12E1
Penjelasan :
A + 7 = 17 karena lebih dari 16, maka 17 mod 16 = 1 carry of 1
B + 2 + 1 = 14 karena kurang dari 16, maka 14 mod 16 = 1 carry of 0, lalu dikonversikan
menjadi E
C + 6 = 18 karena lebih dari 16, maka 18 mod 16 = 2 carry of 1

Pada tabel 2.12, merupakan contoh perhitungan dengan menggunakan tabel yang
tersedia, untuk melakukan perhitungan heksadesimal 64(16) =……. (10). Hasil yang didapat
adalah 100(10).
Tabel 2.15 Tabel Perhitungan Heksadesimal ke Desimal

b. Pengurangan
Pengurangan bilangan hexadesimal dapat dilakukan secara sama dengan pengurangan
bilangan desimal.

Konsep & Terapan Bahasa Rakitan 45


Contoh :
Desimal Hexadesimal

4833 12E1
1575 - 627 -
3258 CBA
16 10 (pinjam) + 1 10 - 710 = 10 10 = A 16
14 10 - 7 10 - - 1 10 (dipinjam) = 11 10 =B 16
1610 (pinjam) + 2 10 - 610 = 12 10 = C 16
1 10 – 1 10 (dipinjam) 0 10 = 0 16
c. Perkalian
Langkah – langkah :
5. Kalikan masing-masing kolom secara desimal
6. Ubah dari hasil desimal ke octal
7. Tuliskan hasil dari digit paling kanan dari hasil octal
8. Jika hasil perkalian tiap kolol terdiri dari 2 digit, maka digit paling kiri
merupakan carry of untuk ditambahkan pada hasil perkalian kolom
selanjutnya.
Contoh :
Desimal Hexadesimal
AC
172 1B x
27 x 764
1204 C 16 x B 16 =12 10 x 1110= 84 16
344 + A16 x B16 +816 = 1010 x 1110+810=7616
4644
AC
1B x
764
AC
C16 x 116 = 1210 x 110 =1210=C16
A16 x 116 = 1010 x110 =1010=A 16

Konsep & Terapan Bahasa Rakitan 46


AC
1B x
764
AC +
1224
616 + C16 = 610 + 1210 = 1810 =12 16
716+A16 +116 = 710 x 1010 + 110=1810 = 1216

d. Pembagian
Contoh :
Desimal Hexadesimal
27 / 4646 \ 172 1B / 1214 \ AC
27- 10E - 1B16xA16 = 2710x1010=27010= 10E16
194 144
189 – 144- 1B 16 x C16 = 2710 x 10 10 = 3240 10
54 0 =14416
54 –
0

2.6 Contoh Konversi Sistem Bilangan


Konversi bilangan adalah suatu proses dimana satu system bilangan dengan basis
tertentu akan dijadikan bilangan dengan basis yang berbeda.
 Konversi dari bilangan Desimal
1. Konversi dari bilangan Desimal ke biner
Yaitu dengan cara membagi bilangan desimal dengan dua kemudian diambil sisa
pembagiannya.
Contoh :
45 (10) = …..(2)
45 : 2 = 22 + sisa 1
22 : 2 = 11 + sisa 0
11 : 2 = 5 + sisa 1
5 : 2 = 2 + sisa 1
2 : 2 = 1 + sisa 0 101101(2) ditulis dari bawah ke atas

Konsep & Terapan Bahasa Rakitan 47


2. Konversi bilangan Desimal ke Oktal
Yaitu dengan cara membagi bilangan desimal dengan 8 kemudian diambil sisa
pembagiannya
Contoh :
385 ( 10 ) = ….(8)
385 : 8 = 48 + sisa 1
48 : 8 = 6 + sisa 0
601 (8)
3. Konversi bilangan Desimal ke Hexadesimal
Yaitu dengan cara membagi bilangan desimal dengan 16 kemudian diambil sisa
pembagiannya
Contoh :
1583 ( 10 ) = ….(16)
1583 : 16 = 98 + sisa 15
96 : 16 = 6 + sisa 2
62F (16)

 Konversi dari system bilangan Biner


1. Konversi ke Desimal
Yaitu dengan cara mengalikan masing-masing bit dalam bilangan dengan position
valuenya.
Contoh :
10 01
1x20 =1
0x21 =0
0x22 =0
1x23 =8
10 (10)
2. Konversi ke Oktal
Dapat dilakukan dengan mengkonversikan tiap-tiap tiga buah digit biner yang dimulai
dari bagian belakang.
Contoh :

Konsep & Terapan Bahasa Rakitan 48


11010100 (2) = ………(8)
11 010 100

3 2 4
diperjelas :
100 = 0 x 2 0 =0
0x21 =0
1x22 =4
4
Begitu seterusnya untuk yang lain.
3. Konversi ke Hexademial
Dapat dilakukan dengan mengkonversikan tiap-tiap empat buah digit biner yang
dimulai dari bagian belakang.

Contoh :
11010100
1101 0100
D 4

 Konversi dari sistem bilangan Oktal


 Konversi ke Desimal
Yaitu dengan cara mengalikan masing-masing bit dalam bilangan dengan position
valuenya.
Contoh :
12(8) = …… (10)
2x80=2
1 x 8 1 =8
10
Jadi 10 (10)
 Konversi ke Biner
Dilakukan dengan mengkonversikan masing-masing digit octal ke tiga digit biner.
Contoh :
6502 (8) ….. = (2)

Konsep & Terapan Bahasa Rakitan 49


2 = 010
0 = 000
5 = 101
6 = 110
jadi 110101000010
 Konversi ke Hexadesimal
Dilakukan dengan cara merubah dari bilangan octal menjadi bilangan biner kemudian
dikonversikan ke hexadesimal.
Contoh :
2537 (8) = …..(16)
2537 (8) = 010101011111
010101010000(2) = 55F (16)
Konversi dari bilangan Hexadesimal
1. Konversi ke Desimal
Yaitu dengan cara mengalikan masing-masing bit dalam bilangan dengan position
valuenya.
Contoh :
C7(16) = …… (10)
7 x 16 0 = 7
1
C x 16 = 192
199
Jadi 199 (10)
2. Konversi ke Oktal
Dilakukan dengan cara merubah dari bilangan hexadesimal menjadi biner terlebih
dahulu kemudian dikonversikan ke octal.
Contoh :
55F (16) = …..(8)
55F(16) = 010101011111(2)
010101011111 (2) = 2537 (8)

Konsep & Terapan Bahasa Rakitan 50


2.7 Format Data Komputer
2.7.1 Data ASCII
ASCII singkatan ( American Standard Code for Informatioan Interchange) mewakili
karakter alfanumerik dalam memori sistem komputer. Format data yang digunakan adalah
7 bit dengan bit ke-8 sebagai MSB (Most Significant Bit) yaitu bit yang paling siginifikan
yang digunakan untuk memuat bit parity merupakan bit tambahan yang disisipkan dalam
beberapa sistem.
ASCII merupakan kumpulan kode-kode yang dipergunakan untuk interaksi antara
user dengan komputer dengan menggunakan hardware keyboard sebagai alat interaksi.
ASCII merupakan karakter-karakter khusus yang dapat diinputkan melalui keyboard
seperti angka, haruf, simbol, simbol grafis, dan kode komunikasi. Kode
ASCII merupakan kode angka sebanyak 255 buah, dimana setiap angka mempunyai
karakter khusus. 1 kode ASCII mewakili/mempunyai/berukuran nilai 1 byte (8 bit).

Gambar 2.6 Tabel ASCII 0 -127

Konsep & Terapan Bahasa Rakitan 51


Gambar 2.7 Tabel ASCII 128 – 255
Dalam bidang mikrokomputer ASCII-Code mempunyai arti yang sangat khusus, yaitu
untuk mengkodekan karakter ( Huruf, Angka dan tanda baca yang lainnya ). Code-code
ini merupakan code standard yang dipakai oleh sebagian besar sistem mikrokomputer.
Selain huruf, angka dan tanda baca yang lain ada 32 ( mis ACK, NAK dsb. ) merupakan
kontrol untuk keperluan transportasi data. Di bawah ini adalah tabel 7 bit ASCII Code
beserta beberapa penjelasan yang diperlukan.

Konsep & Terapan Bahasa Rakitan 52


Konsep & Terapan Bahasa Rakitan 53
Untuk mendapatkan ASCII Code bagi karakter N adalah 100 1110 ( 4E16 )
dengan penjelasan bahwa 100 adalah b7, b6 dan b5 yang lurus keatas terhadap huruf
N dan dan berharga 4 sedangkan 1110 adalah b4, b3, b2 dan b1 yang lurus kesamping
kiri terhadap huruf N dan berharga E.

2.7.2 Bentuk BCD – Binary Code Desimal


Seperti telah diterangkan dalam uraian mengenai sistem bilangan oktal dan
heksadesimal di bagian depan, untuk menyatakan 1 angka desimal diperlukan 4 angka
biner. Tetapi dengan 4 bit sebenarnya dapat dinya-takan 16 macam simbol yang berbeda
sehingga kesepuluh simbol dalam bilangan desimal dapat dinyatakan dengan beberapa
himpunan (set) kode yang berbeda. Perlu dibedakan dengan tegas antara pengkodean dan
konversi. Kalau suatu bilangan dikonversikan ke bilangan lain maka kedua bilangan itu
mempunyai harga/nilai. Sebagai contoh, kalau angka 8 desimal dikonversikan ke biner,
maka satusatunya pilihan adalah 1000. Tetapi kalau angka 8 ini dikodekan ke biner, ada
bermacam-macam kode yang dapat dibentuk, walaupun hanya terdiri atas 4 bit.
Dari bermacam-macam kode untuk angka-angka desimal, kode BCD (singkatan
dari Binary Coded Desimal) merupakan kode yang paling sederhana karena kode itu
sendiri merupakan konversi dari desimal ke biner. Bilangan desimal pada setiap tempat
dapat terdiri dari 10 bilangan yang berbeda-beda. Untuk bilangan biner bentuk dari 10
elemen yang berbeda beda memerlukan 4 bit. Sebuah BCD mempunyai 4 bit biner untuk
setiap tempat bilangan desimal.
Contoh
Z(10) = 317
3 1 7 Desimal
0011 0001 0111 Biner Code Desimal

Dalam contoh ini BCD terdiri dari 3 kelompok bilangan masing-masing terdiri dari 4
bit , dan jika bilangan desimal tersebut di atas dikonversi ke dalam bilangan biner secara
langsung adalah 317(10) = 100111101(2) dan hanya memerlukan 9 bit. Untuk contoh proses
sebaliknya dapat dilihat di bawah ini.
Contoh
Biner Code Desimal 0101 0001 0111 0000
Desimal 5 1 7 0

Konsep & Terapan Bahasa Rakitan 54


Jadi bentuk BCD di atas adalah bilangan Z(10) = 5170.

2.7.3 Bentuk BCO - Biner Code Oktal


Bilangan oktal pada setiap tempat terdiri dari 8 bilangan yang berbeda-beda. Untuk 8
elemen yang berbeda-beda diperlukan 3 bit. Sebuah BCO mempunyai 3 bit biner untuk
setiap tempat bilangan oktal.
Contoh
Z(8) = 634
6 3 4 Bilangan Oktal
110 011 100 Biner Code Oktal
Untuk proses sebaliknya adalah setiap 3 bit dikonversi ke dalam bilangan oktal.

Contoh
Biner Code Oktal 101 100 000 001
Bilangan Oktal 5 4 0 1
Jadi bentuk BCO diatas adalah bilangan Z(8) = 5401.
Bentuk BCH - Biner Code Heksadesimal
Bilangan heksadesimal dalam setiap tempat dapat terdiri dari 16 bilangan yang
berbeda-beda ( angka dan huruf ). Bentuk biner untuk 16 elemen memerlukan 4 bit.
Sebuah BCH mempunyai 4 bit biner untuk setiap tempat bilangan heksadesimal.
Contoh
Z(16) = 31AF
Bilangan Heksadesimal AF Biner Code Heksadesimal 310011000110101111
Untuk proses sebaliknya, setiap 4 bit dikonversi ke dalam bilangan heksadesimal.

Contoh
Biner Code Heksadesimal Bilangan Heksadesimal A1010011000011000618
Jadi bentuk BCH diatas adalah bilangan Z(16) = A618.

2.7.4 Metoda Balikan


Metoda yang kita gunakan bisa dibalik yaitu dimulai dari bilangan Heksadesimal dirubah
kedalam bentuk BCH ( group digit biner empat-empat ). Buat group ulang ke bentuk
BCO (group digit biner tiga-tiga ) dari titik desimal untuk mengkonversikan ke dalam

Konsep & Terapan Bahasa Rakitan 55


bilangan Oktal. Akhirnya bilangan Oktal dapat dikonversikan ke dalam bentuk bilangan
desimal dengan metoda biasa dan dengan cara ini konversi basis bilangan dapat
dipermudah.

Contoh 1
Tunjukkan bilangan Heksadesimal 4B2,1A616 ke bentuk bilangan Biner, Oktal dan
Bilangan Desimal yang ekuivalen.
Lakukanlah :
a. Tulis ulang 4B2,1A616 dalam bentuk BCH
b. Groupkan ulang kedalam bentuk BCO dari titik Desimal
c. Tunjukkan ekuivalen Oktalnya setiap BCO
d. Akhirnya konversikan bilangan Oktal ke ekuivalen Desimal

Jika ke-4 langkah di atas dilakukan dengan benar akan menghasilkan,


a. 0100 1011 0010 , 0001 1010 01102
b. 010 010 110 010 , 000 110 100 1102
c. 2 2 6 2 , 0 6 4 68
d. 1202,10310

Contoh 2
Selesaikan bilangan Heksadesimal 2E3,4D16 ke bentuk bilangan Biner, Oktal dan
2E3,4D16 = 0010 1110 0011 , 0100 11012
= 001 011 100 011 , 010 011 0102
= 1 3 4 3 , 2 3 28
= 739,30110

2.7.5 BILANGAN BERTANDA DAN TIDAK

Pada assembler bilangan-bilangan dibedakan lagi menjadi 2, yaitu bilangan bertanda


dan tidak. Bilangan bertanda adalah bilangan yang mempunyai arti plus (+) dan
minus(-), misalkan angka 17 dan -17. Pada bilangan tidak bertanda, angka negative (yang
mengandung tanda '-') tidaklah dikenal. Jadi angka -17 tidak akan akan dikenali sebagai
Konsep & Terapan Bahasa Rakitan 56
angka -17, tetapi sebagai angka lain. Kapan suatu bilangan perlakukan sebagai bilangan
bertanda dan tidak? Assembler akan selalu melihat pada Sign Flag , bila pada flag ini
bernilai 0, maka bilangan akan diperlakukan sebagai bilangan tidak bertanda,
sebaliknya jika flag ini bernilai 1, maka bilangan akan diperlakukan sebagai bilangan
bertanda. Pada bilangan bertanda bit terakhir (bit ke 16) digunakan sebagai tanda plus
(+) atau minus (-). Jika pada bit terakhir bernilai 1 artinya bilangan tersebut adalah
bilangan negatif, sebaliknya jika bit terakhir bernilai 0, artinya bilangan tersebut adalah
bilangan positif.
Byte bertanda menggunakan 8 bit seluruhnya untuk nilai angkanya. Contoh,
11111111 = 255. Karena itu, 255 adalah nilai tertinggi yang dapat disimpan dalam byte
tidak bertanda. Nilai terbesar yang dapat disimpan dalam Word tidak bertanda adalah
65,535. Byte bertanda hanya menggunakan 7 bit untuk nilai sedangkan bit paling kiri
digunakan sebagai tanda. Bilangan mungkin positif atau negatif, jika tanda sama dengan 1
maka bilangan negatif sebaliknya jika tanda bernilai 0 maka bilangan positif :

Bit tanda

10001010 (bilangan negatif)


00001010 (bilangan positif)

One’s complement. Untuk menghitung bilangan One’s complement dari suatu bilangan
maka balikan seluruh nilai bitnya. Contoh, One’s complement dari 11110000b adalah
00001111b.
Two’s complement. Untuk menyimpan nilai negetif maka digunakan bilangan Two’s
complement. Two’s complement diperoleh dengan menambah satu pada bilangan One’s
complement
Contoh Two’s complement dari +6 (00000110b), balikan nilai bitnya untuk mendapatkan
ones compelent menjadi 11111001b, untuk memperoleh Two’s complement ditambah
satu menjadi : 11111010b (ini nilai Two’s complement untuk -6). Untuk mendapatkan
kembali nilai +6 sebagai berikut :
11111010 -6
0 0 0 0 0 1 0 1 One’s complement
+ 1

Konsep & Terapan Bahasa Rakitan 57


tambah 1
00000110 +6

Nilai maksimum dan minimum. Karena nilai paling kiri pada bilangan bertanda
digunakan untuk tanda bilangan, maka ukuran bilangan akan berkurang, yang digunakan
hanya 7 bit sehingga nilai paling besar yang bisa dicapai adalah +127.
Tabel berikut menunjukan nilai maksimum dan minimum untuk byte, word dan
double word bertanda :

Tabel 2.16 Nilai Maksimum dan Minimum byte, word dan double word
Tipe penyimpan Nilai terendah Nilai tertinggi

Byte -127 +127

Word -32,767 +32,767

Double word -2,147,483,647 +2,147,483,647

+--------------------------------------------+
| >>>> Bilangan <<<< |
+------------+---------------+---------------+
| Biner |Tidak Bertanda | Bertanda |
+------------+---------------+---------------+
| 0000 0101 | + 5 | + 5 |
| 0000 0100 | + 4 | + 4 |
| 0000 0011 | + 3 | + 3 |
| 0000 0010 | + 2 | + 2 |
| 0000 0001 | + 1 | + 1 |
| 0000 0000 | 0 | 0 |
| 1111 1111 | + 255 | - 1 |

Konsep & Terapan Bahasa Rakitan 58


| 1111 1110 | + 254 | - 2 |
| 1111 1101 | + 253 | - 3 |
| 1111 1100 | + 252 | - 4 |
| 1111 1011 | + 251 | - 5 |
| 1111 1010 | + 250 | - 6 |
+------------+---------------+---------------+

Konsep & Terapan Bahasa Rakitan 59


PEMBAHASAN : 3

ARSTEKTUR SISTEM KOMPUTER

Deskripsi singkat : Dalam pertemuan ini akan dibahas mengenai arsitektur pada sebuah
sistem komputer serta pengenalan register sebagai pengalamatan sistem komputer.

Tujuan Pembelajaran :
1. Mengetahui jenis-jenis register yang digunakan pada teknik mikroprosessor
2. Dapat memahami fungsi dari register-register yang digunakan pada sebuah sistem
komputer sebagai pengalamat data.
3. Memahami tugas dan kelompok register yang digunakan mikroprosesor.
4. Mengerti konversi alamat logic, alamat fisik pada pengelolaan memori.

3.1 CENTRAL PROCESSING UNIT (CPU)


Mikrokomputer menggunakan CPU tunggal, dalam kenyataannya terdapat banyak chip
yang mendukung PC, yang paling nampak adalah 80x87 co-prosesor matematika, tapi CPU
masih menjadi pengatur utamanya. Tugas yang paling mendasar yang ditangani oleh CPU
adalah :
1. Menemukan dan load instruksi berikutnya
2. Mengeksekusi instruksi :
a. Fetch data dari memori/register
b. Menyimpan data dalam memori/register
c. Melaksanakan penghitungan dan perbandingan
d. Memperbaharui penunjuk instruksi (pencabangan)

CPU dibagi menjadi dua bagian : Arithmetic Logic Unit (ALU) dan Control Unit (CU).
ALU melaksanakan operasi aritmetik, logic, dan penggeseran, CU mengambil data dan
instruksi dan menerjemahkan kode (decode) alamat untuk ALU.

Konsep & Terapan Bahasa Rakitan 60


Seluruh sisi chip adalah pin yang ditancapkan ke dalam soket dalam board sistem,
menghubungkannya ke bagian sistem komputer yang lain. Register berada dalam CPU.
Ketika sesuatu diambil dari memori, alamatnya dihitung oleh unit kendali dan dikirim
melalui bus alamat. Nilai dari memori (baik instruksi atau data) dikirim balik ke CPU melalui
bus data. Clock melakukan sinkronisasi setiap operasi CPU.
Bus data, bus adalah kabel parallel yang mengirimkan data antara berbagai bagian CPU.
Sinyal kendali dan bit data digunakan pada saat pengambilan Word memori dan
menempatkannya dalam register. Bus dikatakan bidireksional jika data dapat ditransfer dari
dua arah.
Register. Berada dalam CPU yaitu area penyimpan kecepatan tinggi, yang langsung
terhubung ke unit kendali dan ALU. Karenanya, penggunaan register untuk eksekusi lebih
cepat daripada menggunakan memori konvensional. Kumpulan instruksi Intel membutuhkan
penggunaan setidaknya satu register untuk semua instruksi.
Clock. Setiap operasi yang dilakukan di CPU harus disinkronkan oleh clock. Unit waktu
paling dasar untuk instruksi mesin yang disebut siklus mesin (machine cycle). Instruksi mesin
dalam prosesor Intel umumnya dilaksanakan antara 3 dan 20 clock.

Gambar 3.1 Skema Kerja Central Processing Unit

3.2 PENGERTIAN REGISTER DAN PENGALAMATAN MEMORI


Dalam pemrograman dengan bahasa Assembly, selalu berhubungan dengan apa yang
dinamakan sebagai Register. Register adalah sebagian memori dari mikroprosesor yang dapat
diakses dengan kecepatan yang sangat tinggi. Register merupakan sebagian kecil memori

Konsep & Terapan Bahasa Rakitan 61


komputer yang dipakai untuk tempat penampungan data dengan ketentuan bahwa data yang
terdapat dalam register dapat diproses dalam berbagai operasi dengan melihat berapa besar
kemampuan menampung register tersebut.
Memori dengan komputer memiliki hubungan yang tak dapat dipisahkan, karena setiap
komputer memerlukan memori sebagai tempat kerjanya. Memori ini dapat berfungsi untuk
memuat program dan juga sebagai tempat untuk menampung hasil proses.
Memori untuk menyimpan program maupun hasil dari pekerjaan bersifat volatile yang
berarti bahwa data yang disimpan cuma sebatas adanya aliran listrik. Jadi bila listrik mati
maka akan hilang semua data yang ada di dalamnya. Hal ini mengakibatkan diperlukannya
media penyimpan kedua yang biasanya berupa disket maupun hard disk.
Bila memori yang terdapat pada komputer adalah 1 megabyte maka ruang memorinya
adalah :
Tabel 3.1 Pengalamatan Ruang Memori
00000
00001
00002
00003
00004
.
.
.
FFFF9
FFFFA
FFFFB
FFFFC
FFFFD
FFFFE
FFFFF

Pengalamatan ruang memori pada gambar diatas merupakan pengalamatan mutlak


dengan kemampuan 20 bit. Sedangkan pada 8088 hanya berkemampuan 16 bit, berarti
masih kekurangan 4 bit untuk menampung suatu alamat memori.
Karena hal tersebut diatas, maka dilakukan penomoran dengan dua register. Sebuah
register berisi 16 bit dihitung dari kanan dan 16 bit yang lain dari sebelah kiri.
Pengalamatan ruang memori seperti pada tabel 3.2 dibawah ini :

Konsep & Terapan Bahasa Rakitan 62


Tabel 3.2 Pengalamatan Ruang Memori pada Alokasi Pemakaian
Blok Memori Alokasi Pemakaian
F 0 0 0 0 ROM BIOS, Diagnostic, BASIC
E 0 0 0 0 ROM program
D 0 0 0 0 ROM program
C 0 0 0 0 Perluasan BIOS untuk hardisk XT
B 0 0 0 0 Monokrom Monitor
A 0 0 0 0 Monitor EGA, VGS, dll
9 0 0 0 0 Daerah kerja pemakai s/d 640 KB
8 0 0 0 0 Daerah kerja pemakai s/d 576 KB
7 0 0 0 0 Daerah kerja pemakai s/d 512 KB
6 0 0 0 0 Daerah kerja pemakai s/d 448 KB
5 0 0 0 0 Daerah kerja pemakai s/d 384 KB
4 0 0 0 0 Daerah kerja pemakai s/d 320 KB
3 0 0 0 0 Daerah kerja pemakai s/d 256 KB
2 0 0 0 0 Daerah kerja pemakai s/d 192 KB
1 0 0 0 0 Daerah kerja pemakai s/d 128 KB
0 0 0 0 0 Daerah kerja pemakai s/d 64 KB

Peta memori mengalokasikan ruang memori kepada pemakai sebanyak 640 Kb


(655360 byte) sebagai ruang kerja (user workspace). Kira-kira 2 Kb diantaranya yang
menempati alamat-alamat terbawah, dipakai oleh DOS untuk keperluan-keperluan dasar
operasi. Dengan demikian pemakai akan mendapatkan tempat (space) sebesar 10 blok
memori utama (main memory) dimulai dari alama 00000 sampai dengan 9FFFF
heksadesimal.
1. Blok A - F (masing-masing berkapasitas 64 Kb), dialokasikan untuk keperluan-
keperluan program pengendali peralatan luar seperti monitor dan hardisk serta BIOS
(Basic Input Output System).
2. Blok memori A adalah lokasi-lokasi ruang memori yang mempunyai alamat dari
A0000 sampai dengan AFFFF, besarnya 65636 byte. Blok ini dipergunakan untuk
penempatan informasi-informasi yang akan ditayangkan ke monitor, melalui jenis-

Konsep & Terapan Bahasa Rakitan 63


jenis monitor mutakhir seperti EGA dan VGA. Disebut sebagai 'perluasan memori
tampilan' (display memory expansion).
3. Blok memori B, dianggap sebagai blok konvensional bagi pengiriman informasi ke
layar monitor. Produk-produk pertama IBM PC menggunakan blok ini untuk
keperluan tersebut melalui monitor monokrom.
4. Blok memori C dimanfaatkan sejak keluarnya IBM XT, yaitu peningkatan unjuk kerja
dari IBM PC orisinil. Pada IBM XT inilah pertama kali digunakan hardisk sebagai
mass storage. Program kendali untuk hardisk XT yang pada waktu itu baru
berkapasitas 10 MB, ditempatkan pada Blok C tersebut. XT sudah terdapat pemakaian
hardisk, pada PC orisinil tidak. XT terdapat 8 buah slot, PC orisinil terdapat 5 buah
slot.
5. Blok D dan E disediakan untuk penempatan program-program tertentu yang bisa
dimuat dalam ROM. Blok teratas yang merentang dari alamat F0000 sampai dengan
FFFFF adalah blok yang bisa dianggap memegang peranan paling penting, karena
disinilah ROM BIOS berkedudukan. ROM BIOS-lah yang pertama kali mengaktifkan
sistem komputer, memeriksa integritas sistem, memanggil DOS dan selama komputer
aktif juga selalu siap sedia untuk sewaktu-waktu melakukan tugas yang spesifik.
Alokasi-alokasi alamat terbawah letaknya di dalam blok 0, yang menempati alamat
0000 sampai dengan 0FFFF heksadesimal.Saat proses 'start-up' sistem akan meletakkan
pada blok 0 ini suatu daftar yang disebut sebagai 'Tabel Vektor Interupsi' (Interrupt
Vector Table). Tabel memuat sederetan alamat dari rutin perangkat lunak yang berfungsi
melakukan tugas-tugas tertentu. Rutin ini disebut 'Rutin Pelaksana Interupsi' (Interrupt
handling Routine), yang dipanggil melalui prosesor tertentu, antara lain dengan
software.Pada dasarnya isi dari BIOS software didominasi oleh rutin-rutin interupsi.

Register yang mengisi 16 bit dari kiri biasa disebut Register Segment dan Register yang
mengisi 16 bit dari kanan adalah Register Offset. Isi Register Segment disebut Segment dan
isi Register Offset disebut Offset.
Cara pengalamatan memori yang dilakukan komputer sering disebut Relative Address.
Contoh Relative Address dan Alamat Mutlak:
 A123:099A
Komposisi Bit Segment 1010 0001 0010 0011 0000
Komposisi Bit Offset 0000 1001 1001 1010

Konsep & Terapan Bahasa Rakitan 64


Alamat Mutlak 1010 0001 1011 1100 1010 (HEXA:A1BCA)
 5674:9001
Komposisi Bit Segment 0101 0110 0111 0100 0000
Komposisi Bit Offset 1001 0000 0000 0001
Alamat Mutlak 0101 1111 0111 0100 0001 (HEXA:5F741)

Untuk memberikan alamat sesungguhnya dari sebuah nilai alamat logika dalam
nilai segment:offset, maka diperlukan suatu cara untuk menterjemahkan nilai tersebut ke
dalam notasi alamat fisik. Metode konversinya yaitu dengan cara memisahkan nilai segment,
kemudian tambahkan satu digit '0' heksadesimal pada digit paling kiri, lalu ambil nilai
offsetnya, jumlahkan ke bawah seperti halnya menghitung bilangan-bilangan desimal sehari-
hari.
Contoh :
Diketahui : Nilai alamat logika adalah 0220:1234
Ditanyakan : Berapa nilai alamat fisiknya ?
Jawab:
Nilai segment : 0220
Geser satu digit menjadi : 02200
Nilai offset : 1234
02200
1234
------- +
03434
Untuk nilai binary, alamat segment harus diubah menjadi binary, lalu geserlah nilai
tersebut ke kiri sebanyak empat bit, artinya akan timbul empat binary digit 0 berturut-turut di
sebelah kanan. Kemudian nilai offset juga diubah ke dalam binary dan tambahkanlah
hasilnya ke nilai offset yang telah digeser tadi. Untuk mempermudah dalam membaca,
kembalikan nilai akhir dalam binary tersebut ke dalam notasi heksadesimal
Contoh :
Diketahui : Nilai alamat logika adalah 0220:1234
Ditanyakan : Berapa nilai alamat fisiknya ?
Jawab :
Nilai segment : 0220

Konsep & Terapan Bahasa Rakitan 65


Nilai binary-nya menjadi : 0000 0010 0010 0000
Geser 4 bit ke kiri menjadi : 0000 0010 0010 0000 0000
Nilai offset : 1234
Nilai binary-nya menjadi : 0001 0010 0011 0100

Tambahkan :
0000 0010 0010 0000 0000
0001 0010 0011 0100
------------------------------------ +
0000 0011 0100 0011 0100
Alamat fisik secara binary : 0000 0011 0100 0011 0100
Secara heksadesimal : 03434 heksa

Mikroprosesor 8086/8 memiliki 20 bit jalur alamat, sehingga total alamat yang dapat
ditangani oleh prosesor ini sebanyak 220 = 1 Megabyte . Total alamat ini kemudian dibagi-
bagi menjadi segmen-segmen (DS, CS, ES, dan SS) dengan ukuran 1 segmen sebesar 64
Kilobyte. Data-data dalam 1 segmen itu disebut offset. Kemudian pengalamatan secara logika
pada program (logical address) dituliskan dalam format segmen : offset. Dari logical address
berupa segmen : offset kita dapat mendapatkan alamat fisik (physical address) dengan rumus
PA = segmen x 10h + offset. Contoh : Kita ingin mengakses alamat Bootstrap (alamat
memori yang dituju pertama kali oleh mikroprosesor saat booting) yaitu di FFFF0h, maka
kita dapat menuliskannya dalam segmen:offset sebagai FFFF:0000. Terkadang dalam
menentukan segmen:offset dari alamat total terjadi overlapping, yaitu alamat yang sama
dapat diakses dari bermacam segmen:offset yang berbeda. Contoh : kita ingin mengakses
alamat fisik 1100h, dapat dinyatakan sebagai 0100:0100h ataupun 0110:0000h.
Untuk mendefinisikan dari pengalamatan mikroprosessor 8086 dapat mengalamatkan
sampai 1 MB memori, bahwa 8086 adalah procesor 16 bit. Banyaknya memori yang dapat
dicatat atau dialamatkan oleh procesor 16 bit adalah maksimal 216 byte (=64 KB).
Hal ini dapat dimungkinkan dengan adanya pengalamatan yang menggunakan sistem 20
bit walaupun sebenarnya procesor itu hanya 16 bit. Dengan cara ini dapat dialamatkan 220
byte (=1 MB) memori. Tetapi masih tetap ada satu kendala dalam pengalamatan 20 bit ini.
Yaitu bahwa sesuai dengan tipenya procesor ini hanya mampu mengakses 16 bit data pada

Konsep & Terapan Bahasa Rakitan 66


satu kali akses time. Sebagai pemecahannya dikembangkanlah suatu metode pengalamatan 20
bit yang dimasukkan ke dalam format 16 bit.
Pada metode pengalamatan ini baik 8086 membagi ruang memori ke dalam segmen-
segmen di mana besar 1 segmen adalah 64 KB (=216 byte). Jadi pada segmen 0000h (Tanda
"h" menunjukkan hexadesimal) terdapat 64 KB data, demikian pula dengan segmen 0001h
dan seterusnya.
Untuk mengetahui agar setiap data yang tersimpan dalam satu segmen yang besarnya 64
KB itu dapat diakses secara individual, dengan cara membagi-bagi setiap segmen menjadi
bagian-bagian yang disebut offset. Dalam satu segmen terdapat 216 offset yang diberi nomor
dari 0000h sampai FFFFh. Nomor offset selalu diukur relatif dari awal suatu segmen.
Sekarang kita lihat bagaimana sebenarnya letak suatu segmen dalam memori komputer
kita. Segmen 0000h berawal dari lokasi memori 0 hingga 65535 ( 64 KB). Segmen 0001h
berawal dari lokasi memori 16 (0010h) hingga 65551 (65535 + 16). Segmen 0002h berawal
dari lokasi 32 hingga 65567, demikian seterusnya.
Sistem penempatan segmen semacam ini akan menyebabkan terjadinya overlapping
(tumpang-tindih) di mana lokasi offset 0010h bagi segmen 0000h akan merupakan offset
0000h bagi segmen 0001h. Demikian pula offset 0011h bagi segmen 0000h akan merupakan
offset 0001h bagi segmen 0001h. Untuk lebih jelasnya dapat kita lihat urutan segment:offset
dibawah ini :
Segmen Offset
0000 + ----------------- + 0000
| |
0001 + - + ----------- +0000 | 0016
| | |
0002 +----+---------+ 0000 | 0016 | 0032
| | | |
0003+ --- + -------- +0000 | 0016 | 0032 | 0048
| | | | |
| | : : :
| : : : :
| : | | |
| | | + -----+65535
: | | |
: | + ---- +65535
| | |
| + ---- + 65535
| |
+ + 65535

Konsep & Terapan Bahasa Rakitan 67


Tabel 3.1 Bit Alamat Blok Memori
Jumlah Kapasitas Memori
Total Blok
Jalur (1 Blok Memori = 1 Byte)
Memori
Alamat
1 21=2 2 byte
2 22=4 4 byte

16 216=65536 65536 byte = 64 Kbyte

20 220=1048576 1048576 byte = 1024 Kbyte = 1 Mbyte

Dalam melakukan pekerjaannya mikroprosesor selalu menggunakan register-register


sebagai perantaranya, jadi register dapat di ibaratkan sebagai kaki dan tangannya
mikroprosesor. Prosesor 8088/8086 termasuk keluarga prosesor 16 bit, yang memiliki
kemampuan memproses data dengan lebar data 16 bit. Mikroprosesor ini mempunyai general
register (AX, BX, CX, DX) masing-masing panjangnya 16 bit. Dapat dibagi menjadi 2 buah
register 8 bit.

3.3 JENIS-JENIS REGISTER


Register yang digunakan oleh mikroprosesor dibagi menjadi 5 bagian dengan tugasnya
yang berbeda-beda pula, yaitu :

3.3.1 General Purpose Register.


Register yang termasuk dalam kelompok ini adalah register AX, BX, CX dan DX
yang masing-masing terdiri atas 16 bit. Register-register 16 bit dari kelompok ini mempunyai
suatu ciri khas, yaitu dapat dipisah menjadi 2 bagian dimana masingmasing bagian terdiri atas
8 bit, seperti pada gambar 3.1. Akhiran H menunjukkan High sedangkan akhiran L
menunjukkan Low.

Konsep & Terapan Bahasa Rakitan 68


Gambar 3.2 Register-register

Secara umum register-register dalam kelompok ini dapat digunakan untuk berbagai
keperluan, walaupun demikian ada pula penggunaan khusus dari masing-masing register
ini yaitu :
1. Register AX (Accumulator), secara khusus digunakan pada operasi aritmatika
terutama dalam operasi perhitungan. Berfungsi sebagai masukan untuk menampung
hasil perhitungan (add, sub, mul & div) dan menyimpan data sementara. Pada proses
pembagian, jika bilangan pembagi besarnya 16 bit, bilangan yang dibagi ditampung di
pasangan register DX : AX. Hasil ditampung pada register AX sedangkan sisa hasil
pembagian ditampung pada register DX. Jika 8 bit, ditempatkan di AX dari proses
pembagian, dan hasilnya ditempatkan pada register AL, sedangkan hasil pembagian
pada register AH.
2. Register BX (Base), biasanya digunakan untuk menunjukkan suatu alamat offset dari
suatu segmen. Register ini dapat mengambil dan menulis langsung dari/ke memori
BX, yang terdiri dari BH dan AL. Dapat juga menulis langsung dari/ke memori
dengan segmen (DS: Data Segmen). Dapat berfungsi sebagai Pointer (penunjuk) pada
basis data. Misal 32 bit EBX dijabarkan BH + BX + BL
3. Register CX (Count), digunakan secara khusus pada operasi looping (perulangan)
dimana register ini menentukan berapa banyaknya looping yang akan terjadi. Secara
spesifik sebagai counter untuk meletakkan jumlah lompatan pada looping yang
dilakukan, dan dapat sebagai penyimpan data sementara.

Konsep & Terapan Bahasa Rakitan 69


4. Register DX (Data), digunakan untuk menampung sisa hasil pembagian 16 bit. Pada
prosesor 80386 terdapat tambahan register 32 bit, yaitu EAX, EBX, ECX dan EDX.
Dapat membantu register AX dalam proses aritmatika. Merupakan salah satu register
offset dari DS (Data Segment), dan dapat sebagai penampung data sementara.

3.3.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.
1. Register CS (Code Segment) digunakan untuk menunjukkan tempat dari segmen
yang sedang aktif. Register ini akan menyimpan lokasi basis semua instruksi
yang dapat dieksekusi.
2. Register SS (Stack Segment) menunjukkan letak dari lokasi segmen yang
digunakan oleh stack .
3. Register DS (Data Segment) biasanya digunakan untuk menunjukkan tempat
segmen dimana data-data pada program disimpan. Umumnya isi dari register ini
tidak perlu diubah kecuali pada program residen. Karena pada register ini
merupakan default variable-variabel CPU pada nilai segmen.
4. Register ES (Extra Segment), sesuai dengan namanya adalah suatu register
bonus / tambahan yang tidak mempunyai suatu tugas khusus. Register ES ini
biasanya digunakan untuk menunjukkan suatu alamat di memori, misalkan alamat
memori video. Pada prosesor 80386 terdapat tambahan register segment 16 bit,
yaitu FS<Extra Segment> dan GS<Extra Segment>.

3.3.3 Pointer dan Index Register.


Register yang termasuk dalam kelompok ini adalah register SP, BP, SI dan DI yang
masing-masing terdiri atas 16 bit. Register- register dalam kelompok 16 ini secara umum
digunakan sebagai penunjuk atau pointer terhadap suatu lokasi di memori.
1. Register SP (Stack Pointer) yang berpasangan dengan register segment
SS(SS:SP) digunakan untuk mununjukkan alamat lokasi dari stack .
2. Register BP (Base Pointer) yang berpasangan dengan register SS (SS:BP)
mencatat suatu alamat di memori tempat data.

Konsep & Terapan Bahasa Rakitan 70


3. Register SI (Source Index) dan register DI (Destination Index) biasanya
digunakan pada operasi string dengan mengakses secara langsung pada alamat di
memori yang ditunjukkan oleh kedua register ini. Register ini berfungsi sebagai
pointer penyimpan data menuju dan menerima byte atau Word dalam string.
Pada prosesor 80386 terdapat tambahan register 32 bit, yaitu ESP, EBP, ESI dan
EDI.

3.3.4 Index Pointer Register


Register IP berpasangan dengan CS (CS:IP) menunjukkan alamat dimemori tempat
dari instruksi (perintah) selanjutnya yang akan dieksekusi. Register IP juga merupakan
register 16 bit. Pada prosesor 80386 digunakan register EIP yang merupakan register 32
bit.

3.3.5 Flags Register.


Sesuai dengan namanya Flag s (Bendera) register ini menunjukkan kondisi dari suatu
keadaan (ya atau tidak) yang terjadi pada sebuah processor. Karena setiap keadaan dapat
digunakan 1 bit saja, maka sesuai dengan jumlah bitnya, Flag s register ini mampu
mencatat sampai 16 keadaan.
Register flag adalah register 16-bit khusus dengan posisi bit sendiri dibuat untuk
menunjukan status CPU atau hasil operasi aritmatik. Setiap posisi bit yang relevan diberi
nama, posisi lain tidak didefinisikan.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
x x x x O D I T SZ xA x P x C

O = Overflow S = Sign
D = Directione Z = Zero
I = Interrupt A = Auxiliary Carry
T = Trap P = Parity
X = tidak terdefinisi C = Carry

Bit-bit dalam register disebut sebagai bit-bit flag . Adapun flag yang terdapat pada
mikroprosesor 8088 keatas adalah :

Konsep & Terapan Bahasa Rakitan 71


1. OF <OverFlow Flag >. Jika terjadi OverFlow pada operasi aritmatika, bit ini
akan bernilai 1. Kondisi ini terjadi pada bilangan bertanda ada penambahan atau
pengurangan. Kondisi akan menunjukkan hasilnya melebihi kapasitas dari mesin.
Untuk bilangan tidak bertanda, flag overflow akan diabaikan.
2. SF <Sign Flag >. Jika digunakan bilangan bertanda bit ini akan bernilai 1
3. ZF <Zero Flag >. Jika hasil operasi menghasilkan nol, bit ini akan bernilai 1.
4. CF <Carry Flag >. Jika terjadi penambahan atau borrow pada operasi
pengurangan atau carry pada penjumlahan, bit ini akan bernilai 1.
5. PF <Parity Flag >. Digunakan untuk menunjukkan paritas bilangan. Bit ini akan
bernilai 1 bila bilangan yang dihasilkan merupakan bilangan genap. Logika 0
(Odd) untuk paritas ganjil dan 1 (even) untuk paritas genap. Paritas adalah
jumlah angka 1 dalam satu bilangan yang menyatakan genap atau ganjil.
Contoh : 10010 (PE), 11011 (PE), 10101 (PO).
6. DF <Direction Flag >. Digunakan pada operasi string untuk menunjukkan arah
proses mengurangi atau menambahkan bagi register SI dan DI.
7. IF <Interrupt Enable Flag >. CPU akan mengabaikan interupsi yang terjadi jika
bit ini 0.
8. TF <Trap Flag >. Digunakan terutama untuk Debugging (mencari error atau
bug), dengan operasi step by step.
9. AF <Auxiliary Flag >. Digunakan oleh operasi BCD, seperti pada perintah AAA.
Diluar proses tersebut bit ini tidak digunakan oleh mikroprosessor.
10. NT <Nested Task>. Digunakan pada prosesor 80286 dan 80386 untuk menjaga
jalannya interupsi yang terjadi secara beruntun.
11. IOPL <I/O Protection level>. Flag ini terdiri atas 2 bit dan digunakan pada
prosesor 80286 dan 80386 untuk mode proteksi.
12. PE <Protection Enable>. Digunakan untuk mengaktifkan mode proteksi. Flag
ini akan bernilai 1 pada mode proteksi dan 0 pada mode real.
13. MP <Monitor Coprosesor>. Digunakan bersama flag TS untuk menangani
terjadinya intruksi WAIT.
14. EM <Emulate Coprosesor>. Flag ini digunakan untuk mensimulasikan
coprosesor 80287 atau 80387.
15. TS <Task Switched>. Flag ini tersedia pada 80286 keatas.

Konsep & Terapan Bahasa Rakitan 72


16. ET <Extension Type>. Flag ini digunakan untuk menentukan jenis coprosesor
80287 atau 80387.
17. RF <Resume Flag >. Register ini hanya terdapat pada prosesor 80386 keatas.
18. VF <Virtual 8086 Mode>. Bila flag ini bernilai 1 pada saat mode proteksi,
mikroprosesor akan memungkinkan dijalankannya aplikasi mode real pada mode
proteksi. Register ini hanya terdapat pada 80386 keatas.

Flag status. Bit-bit flag status menggambarkan keluaran operasi aritmetik dan logic
yang dilaksanakan oleh CPU. Terdapat flag Overflow, Sign, Zero, Auxiliary Carry,
Parity dan Carry.
Flag Carry diset ketika hasil operasi aritmetik tidak bertanda lebih besar dari ukuran
Operand tujuan. Contoh, jika nilai 200 dan 56 dijumlahkan dan ditempatkan dalam
register 8-bit (seperti AL), hasilnya akan terlalu besar dan tidak mencukupi, maka flag
Carry akan diset. Nilai flag 1 = ada carry, 0 = tidak ada carry.
Flag Overflow diset pada saat hasil operasi aritmetik bertanda terlalu besar untuk
dimuat ke dalam Operand tujuan. Nilai flag 1 = overflow dan 0 = tidak overflow.
Flag Sign diset ketika hasil operasi aritmetik dan logic menghasilkan nilai negatif.
Karena bilangan negatif selalu bernilai 1 pada bit posisi tertingginya, flag Sign selalu
merupakan salinan bit tanda Operand tujuan. Nilai flag 1 = negatif, 0 = positif.
Flag Zero diset ketika hasil operasi aritmetik dan logic menghasilkan nilai 0. Flag
sering digunakan oleh instruksi jump dan loop, untuk dapat mencabang ke logasi bari
dalam program berdasarkkan perbandingan dua buah nilai. Nilai flag 1 = nol , 0 = bukan
nol.
Flag Auxiliary Carry diset ketika operasi menyebabkan carry dari bitn 3 ke bit 4
(atau meminjam dari bit 4 ke bit 3) Operand. Flag ini jarang digunakan oleh pemrogram,
nilai flag 1 = ada carry dan 0 = tidak ada carry.
Flag Parity menggambarkan jumlah bit dalam hasil operasi yang diset. Jika terdapat
bilangan genap maka Paritynya genap. Jika terdapat bilangan ganjil maka paritinya ganjil.

3.4 MODE PENGALAMATAN

Mode pengalamatan adalah bagaimana cara menunjuk dan mengalamati suatu lokasi
memori pada sebuah alamat di mana operand akan diambil. Mode pengalamatan diterapkan

Konsep & Terapan Bahasa Rakitan 73


pada set instruksi, dimana pada umumnya instruksi terdiri dari opcode (kode operasi) dan
alamat. Setiap mode pengalamatan memberikan fleksibilitas khusus yang sangat penting.
Tujuan dari mode pengalamatan pada memori yaitu mengatasi keterbatasan format
instruksi diantaranya :
 Dapat mereferensi lokasi memori yang besar
 Mode pengalamatan yang mampu menangani keterbatasan tersebut
 Masing – masing prosesor menggunakan mode pengalamatan yang berbeda – beda.
 Memiliki pertimbangan dalam penggunaannya.
 Ada beberapa teknik pengalamatan :
a. Immediate Addressing
b. Direct Addressing
c. Indirect Addressing
d. Register Addressing
e. Register Indirect Addressing
f. Displacement Addressing
g. Stack Addressing

3.4.1 Immediate Addressing (Pengalamatan Segera)


Dalam mode pengalamatan immediate addressing sangat umum dipakai karena nilai
yang akan disimpan dalam memori langsung mengikuti kode operasi dalam memori. Dengan
kata lain, tidak diperlukan pengambilan nilai dari alamat lain untuk disimpan, nilai yang akan
dipakai diambil langsung dalam alamat memori lain. Pengalamatan ini memindahkan salinan
data yang berukuran byte atau word langsung ke register tujuan. Contohnya: MOV AX,10h.
Dalam instruksi ini akan dibaca data dari RAM internal dengan alamat 10h dan kemudian
disimpan dalam akumulator.

3.4.2 Direct Addressing (Pengalamatan Langsung)


Dalam mode pengalamatan direct addressing, nilai yang akan dipakai diambil
langsung dalam alamat memori lain. Pengalamatan ini memindahkan salinan data yang
berukuran byte atau word langsung ke register tujuan. Contohnya instruksi MOV CX, list
menyalin isi dari lokasi memori list ke ke dalam register CX. Contoh ADD AX ; tambahkan
isi pada lokasi alamat A ke akumulator

3.4.3 Indirect Addressing (Pengalamatan Tidak Lansung)


Konsep & Terapan Bahasa Rakitan 74
Pengalamatan ini mengacu pada alamat word di dalam memori, yang pada gilirannya
akan berisi alamat operand yang panjang. Pengalamatan ini memindahkan salinan data yang
berukuran byte atau word antara register dan lokasi memori yang alamatnya ditunjuk oleh
suatu register index atau register basis. Contoh : MOV AX, [BX].

3.4.4 Register Addressing (Pengalamatan Register)


Register adalah merupakan sebagian memori dari mikro prosessor yang dapat diakses
dengan kecepatan tinggi. Metode pengalamatan register ini mirip dengan mode
pengalamatan langsung. Perbedaannya terletak pada field alamat yang mengacu pada register,
bukan pada memori utama. Field yang mereferensi register memiliki panjang 3 atau 4 bit,
sehingga dapat mereferensi 8 atau 16 register general purpose. Pengalamatan ini
memindahkan salinan data yang berukuran byte atau word dari register tujuan atau lokasi
memori sumber ke dalam register atau lokasi tujuan memori. Contohnya instruksi MOV CX,
DX akan menyalin register DX ke dalam register CX.

3.4.5 Register Indirect Addressing (Pengalamatan Tidak Langsung Register)


Metode pengalamatan register tidak langsung mirip dengan mode pengalamatan tidak
langsung Perbedaannya adalah field alamat mengacu pada alamat register. Letak operand
berada pada memori yang dituju oleh isi register

3.4.6 Displacement Addressing


Displacement Addressing adalah menggabungkan kemampuan pengalamatan
langsung dan pengalamatan register tidak langsung. Mode ini mensyaratkan instruksi
memiliki dua buah field alamat.

3.4.7 Stack Addressing


Adalah array lokasi yang linier = pushdown list = last-in-first-out. Stack merupakan
blok lokasi yang terbalik. Nilai akan dikumpulkan sampai ke puncak stack sehingga setiap
saat blok akan terisi secara parsial. Yang berkaitan dengan stack adalah pointer yang nilainya
merupakan alamat bagian paling atas stack. Dua elemen teratas stack dapat berada di dalam
register CPU, yang dalam hal ini stack pointer mereferensi ke elemen ketiga stack. Stack
pointer tetap berada dalam register. Dengan demikian, referensi-referensi ke lokasi stack di
dalam memori pada dasarnya merupakan pengalamatan register tidak langsung.

Konsep & Terapan Bahasa Rakitan 75


Tabel 3.2 Perbandingan Alamat

Mode Algoritma Keuntungan Kerugian utama


Utama

Immediate Operand = A Tidak ada referensi Besaran operand


memori terbatas

Direct EA = A Sederhana Ruang alamat terbatas

Indirect EA = (A) Ruang alamat besar Referensi memori


bergkita

Register EA = R Tidak ada referensi Ruang alamat terbatas


memori

Register Indirect EA = ( R ) Ruang alamat besar Referensi memori


ekstra

Displacement EA = A+ ( R ) Fleksibelitas Kompleksitas

Stack EA = Puncak Stack Tidak ada referensi Aplikasi memori


terbatas

Keterangan :

 A = isi suatu field alamat dalam instruksi


 EA = alamat aktual (efektif) dari sebuah lokasi yang beroperasi yang di
rekomondasikan
 R = Register
 (X) = isi lokasi X

Konsep & Terapan Bahasa Rakitan 76

Anda mungkin juga menyukai