pendahuluan - · pdf file1 pendahuluan modul ajar ini bertujuan untuk memudahkan ......
TRANSCRIPT
Bahasa Assembly
1
PENDAHULUAN
Modul ajar ini bertujuan untuk memudahkan mahasiswa mengenal bahasa
pemrograman Tingkat Rendah, selain pemograman tingkat tinggi seperti Bahasa
C, Pascal dll,, serta mampu mengoperasikan, memprogram dan mengaplikasikan
bahasa Assembly dalam sistem elektronika.
Walaupun bahasa tingkat tinggi terus berkembang dengan segala fasilitas
dan kemudahannya, peranan bahasa pemrograman tingkat rendah tetap tidak
dapatdigantikan. Bahasa assembly mempunyai keunggulan yang tidak mungkin
diikuti oleh bahasa tingkat apapun dalam hal kecepatan, ukuran file yang kecil
serta kemudahan dalam manipulasi sistem komputer.
Modul Ajar ini disusun berdasarkan pengalaman dari penulis sendiri
dalam menggunakan bahasa assembler. Oleh karenanya buku ini disusun dengan
harapan bagi anda yang tidak tahu sedikitpun tentang assembly dapat belajar
sehingga assembler akan tampak sama mudahnya dengan bahasa tingkat tinggi.
Untuk Mahasiswa program studi Teknik Elektronika, mata kuliah Bahasa
Assembly merupakan mata kuliah dasar dalam pemograman untuk bias
melangkah ke mata kuliah pemograman dan mikroprosessor, dan mata kuliah
Bahasa Assembly ini lebih dititik beratkan pada pembuatan flowchart supaya
dapat memecahkan masalah , dan juga memperkenalkan instruksi-instruksi yang
ada pada mikroprosessor 8085.
Dalam Bahasa assembly ini diperkenalkan Bahasa assembly milik
mikroprosessor 8085 karena dalam prakteknya mahasiswa diajarkan
mikroprosessor 8085.
A
Bahasa Assembly
2
TUJUAN KHUSUS
- Mahasiswa mengetahui Perbedaan konsep antara Organisasi Komputer
dan Arsitektur komputer.
- Mahasiswa dapat memahami tentang komponen komputer, struktur
komputer dan fungsi Komputer.
- Mahasiswa mengetahui Cara pemograman.
- Mahasiswa cara membuat Algoritma dan Flowchart
- Mahasiswa dapat memahami tentang Bahasa Pemograman
- Mahasiswa mengetahui Mode Pengalamatan.
- Mahasiswa mengetahui Instruksi-instruksi yang digunakan dalam
mikroprosessor 8085.
- Mahasiswa dapat memahami tentang cara-cara penulisan program.
- Mahasiswa mengetahui beberapa macam Golongan Instruksi
- Mahasiswa mengetahui Instruksi Aritmatika dan Logika.
- Mahasiswa mengetahui Instruksi Transfer data
- Mahasiswa mengetahui Instruksi Percabangan
- Mahasiswa mengetahui Instruksi Compare, Rotate dsb
B
Bahasa Assembly
3
Pokok Bahasan
Adapun pembahasan yang akan disajikan dalam modul ajar ini adalah
sebagai berikut:
1. Pendahuluan
2. Dasar –dasar Organisasi Komputer
3. Dasar Pemograman
4. Instruksi Dasar 8085
5. Instruksi Input dan Output
6. Instruksi Jump
7. Pemograman Lanjutan
Bahasa Assembly
4
DASAR-DASAR
ORGANISASI KOMPUTER
I.1. Pengantar.
Program Bahasa Assembly atau Assembler adalah suatu Program yang
mengambil Input (Program Sumber) yang dikodekan dalam Mnemonic atau
Symbol Bahasa mesin dan di konversikan ke dalam Program Bahasa mesin
Hexadesimal (Object Program). Alasan Utama Software tidak ditulis dalam
bahasa Mesin Hexadesimal secara langsung karena sewaktu-waktu sebuah
program yang akan dimodifikasi, tidak sulit dalam merelokasi pengalamatan.
Penemuan Mikroprosesor pada tahun 1970-an merupakan perkembangan
yang menentukan dari dunia Elektronika yang mengagumkan. Beberapa hal yang
menyebabkan kepopuleran Mikroprosesor yaitu :
• Ukurannya kecil
• Daya yang dibutuhkan rendah
• Harganya murah
Mikroprosesor dapat didefinisikan sebagai Rangkaian terpadu tunggal
yang mengandung ribuan gerbang digital yang dapat melakukan Operasi
Aritmatika, Logika, dan Kontrol dari Komputer. Komputer berasal dari kata to
compute yang artinya menghitung. Jadi computer adalah suatu peralatan
elektronik yang digunakan untuk perhitungan, tetapi karena perkembangan
teknologi computer saat ini begitu pesat, computer tidak lagi hanya berperan
C
Bahasa Assembly
5
sebagai mesin hitung tetapi sudah mempunyai berbagai fungsi untuk
mempermudah dan membantu pekerjaan manusia.
Komputer mempunyai Elemen-elemen fungsional sebagai berikut :
• Unit Kontrol dan Aritmatika
• Unit Memory Instruksi
• Unit Memory Data
• Unit Input/Output
Unit Aritmatika dan Kontrol memroses data dengan operasi aritmatika
dan logika. Bagian aritmatika mempunyai kemampuan operasi aritmatika yang
built-in dalam bentuk perangkat keras yang dapat melakukan fungsi tersebut.
Bagian Kontrol mengandung rangkaian yang memungkinkan instruksi yang
diproses dapat cepat dikerjakan secara berurutan.
Isi dari memori yang berupa instruksi dan data dapat diletakkan secara
kombinasi ataupun dipisah. Program yang berisi instruksi urutan-urutan perintah
harus ditulis dan disimpan dalam memori sebelum computer dijalankan. Data
dapat disimpan baik sebelum ataupun sesudah computer running.
Unit Input/Outpun adalah bagian penghubung computer dengan dunia luar
(Pheriperal), yang memungkinkan computer untuk berkomunikasi secara real
time. Piranti ini umumnya lambat bila dibandingkan dengan waktu proses
internal computer dan format data yang dikomunikasikan bias serial ataupun
parallel.
1.2 Komputer
Sebelum mempelajari organisasi komputer lebih jauh ada baiknya kita
mengetahui apa itu komputer? Komputer adalah suatu sistem pemrosesan yang
Bahasa Assembly
6
didalamnya terdapat unit masukan, unit keluaran, unit pemroses data dan juga
unit penyimpanan data. Sistem komputer secara keseluruhan dapat dilihat pada
gambar 1.1.
Gambar 1.1 Sistem komputer
Struktur adalah cara komponen - komponen komputer saling terkait dan
berhubungan. Sedangkan fungsi adalah operasi masing - masing komponen
sebagai bagian dari struktur. Dalam modul ini akan dijelaskan melalui
pendekatan top-down (dari sistem paling kompleks menuju sistem yang lebih
sederhana) sehingga diharapkan akan lebih jelas dan efektif
Operasi-operasi yang dilakukan komputer diantaranya operasi aritmetika,
operasi logika, operasi penggeseran dan operasi pemindahan, yang sebenarnya
adalah implementasi mesin komputer terhadap perintah kita.
Ada pekerjaan besar sehubungan dengan interkoneksi manusia dan
komputer. Seperti kita ketahui, komputer tidak bisa memahami bahasa kita dan
juga sebaliknya, untuk itu diadakan manipulasi dan transformasi data agar terjadi
kesesuaian antara komputer dan manusia sebagai penggunanya.
Input
Output Pemroses
Penyimpa
Bahasa Assembly
7
1.3 Organisasi Komputer
Organisasi Komputer adalah bagian yang terkait erat dengan unit - unit
operasional dan interkoneksi antar komponen penyusun sistem komputer dalam
merealisasikan aspek arsitekturalnya. Contoh aspek organisasional adalah rincian
dan teknologi hardware, perangkat antarmuka dan peripheral, teknologi dan
sistem memori, sinyal - sinyal kontrol.
Ada baiknya dipahami aspek arsitekturalnya karena kedua hal ini sangat
terkait. Arsitektur Komputer lebih cenderung pada kajian atribut - atribut sistem
komputer yang terkait dengan seorang programmer. Contohnya, set instruksi,
aritmetilka yang digunakan, teknik pengalamatan, mekanisme I/0.
Sebagai contoh, apakah suatu komputer perlu memiliki instruksi pengalamatan
pada memori merupakan masalah rancangan arsitektural. Apakah instruksi
pengalamatan tersebut akan diimplementasikan secara langsung ataukah melalui
mekanisme cache adalah kajian organisasional.
Gambar 1.2. Elemen Fungsional Utama dari Komputer.
UNIT MASUKAN KELUARAN
UNIT MEMORY INSTRUKSI
UNIT ARITMATIKA &
KONTROL
UNIT MEMORY DATA
INTERFACE EXTERNAL
Bahasa Assembly
8
1.4 Hirarki Komputer
Komputer merupakan suatu sistem kompleks, yang tersusun atas
subsistem-subsistem yang saling berkaitan. Untuk menjelaskan struktur suatu
komputer, kunci utamanya adalah mengetahui hirarki sistem paling kompleks
sampai pada sistem elementer paling sederhana. Komputer adalah suatu peralatan
yang bersifat modular, tersusun atas modul - modul subsistem yang memiliki
fungsi dan karakteristik tertentu tetapi saling mendukung dalam mewujudkan
fungsi komputer secara keseluruhan.
Struktur adalah cara komponen - komponen komputer saling terkait dan
berhubungan. Sedangkan fungsi adalah operasi masing - masing komponen
sebagai bagian dari struktur. Dalam modul ini akan dijelaskan melalui
pendekatan top-down (dari sistem paling kompleks menuju sistem yang lebih
sederhana) sehingga diharapkan akan lebih jelas dan efektif
1.5 Struktur Komputer
Komputer adalah sebuah sistem yang berinteraksi dengan cara tertentu
dengan dunia luar. Interaksi dengan dunia luar dilakukan melalui perangkat
peripheral dan saluran komunikasi. Perhatikan gambar 1.3, terdapat empat
struktur utama:
Central Processing Unit (CPU), berfungsi sebagai pengontrol operasi
komputer dan pusat pengolahan fungsi - fungsi komputer. Kesepakatan, CPU
cukup disebut sebagai processor (prosesor) saja.
Memori Utama, berfungsi sebagai penyimpan data.
I/0, berfungsi memindahkan data ke lingkungan luar atau perangkat lainnya.
Bahasa Assembly
9
System Interconnection, merupakan sistem yang menghubungkan CPU,
memori utama dan I/0.
Komponen yang paling menarik namun paling kompleks adalah CPU.
Gambar 1.3 Struktur utama computer
Struktur CPU terlihat pada gambar 1.4, dengan struktur utamanya adalah:
Control Unit, berfungsi untuk mengontrol operasi CPU dan mengontrol
komputer secara keseluruhan.
Arithmetic And Logic Unit (ALU), berfungsi untuk membentuk fungsi - fungsi
pengolahan data komputer.
Register, berfungsi sebagai penyimpan internal bagi CPU.
CPU Interconnection, berfungsi menghubungkan seluruh bagian dari CPU.
Computer
Main Memory
Input Output
Systems Interconnection
Peripherals
Communication lines
Central Processing Unit
Computer
Bahasa Assembly
10
Gambar 1.4 Struktur CPU
1.6 Fungsi Komputer
Fungsi dasar sistem komputer adalah sederhana seperti terlihat pada gambar 1.5.
Pada prinsipnya terdapat empat buah fungsi operasi, yaitu
Pemindahan Data
Penyimpanan Data
Pengolahan Data
Kontrol
Gambar 1.5 Fungsi Komputer
Computer Arithmetic and Login Unit
Control Unit
Internal CPU Interconnection
Registers
CPU
I/O
Memory
System Bus
CPU
Data Movement Apparatus
Control Mechanism
Data Storage Facility
Data Processing
Facility
Bahasa Assembly
11
Komputer harus dapat memproses data. Representasi data di sini
bermacam-macam, akan tetapi nantinya data harus disesuaikan dengan mesin
pemrosesnya. Dalam pengolahan data, komputer memerlukan unit penyimpanan
sehingga diperlukan suatu mekanisme penyimpanan data. Walaupun hasil
komputer digunakan saat itu, setidaknya komputer memerlukan media
penyimpanan untuk data prosesnya. Dalam interaksi dengan dunia luar sebagai
fungsi pemindahan data diperlukan antarmuka (interface), proses ini dilakukan
oleh unit Input/Output (I/0) dan perangkatnya disebut peripheral. Saat interaksi
dengan perpindahan data yang jauh atau dari remote device, komputer melakukan
proses komunikasi data.
1.7. Aritmatika dan Kontrol.
Bagian Aritmatika dan Kontrol dari computer biasanya disebut sebagai
Central Processing Unit (CPU). Mungkin istilah ini muncul ketika awal-awal
computer mainframe yang besar di mana bagian computer masih terpusat.
Fungsi Utama CPU adalah :
• Mengambil atau menjemput instruksi dari memori dan menerjemahkannya
(decode) kemudian mengeksekusi perintah yang sudah diterjemahkan
tersebut.
• Mentransfer informasi ke dan dari memori data atau unit masukan-keluaran
(I/O) yang dibutuhkan pada eksekusi suatu instruksi.
• Menanggapi sinyal control dari luar, yang dikenal sebagai interrupt yang
mungkin dapat menginterupsi operasi yang normal dan mungkin dapat
menyebabkan urutan-urutan program atau instruksi yang baru yang harus
dilakukan oleh computer.
Bahasa Assembly
12
Dalam melakukan fungsi-fungsi tersebut maka CPU dilengkapi dengan :
1. Pada bagian Aritmatika :
• ALU (Arithmetic Logic Unit)
• Akumulator
2. Pada bagian Kontrol :
• Register Instruksi
• Decoder
Segala operasi aritmatika dan Logika dilakukan di dalam ALU. Operasi-
operasi yang dapat dilakukan ALU adalah :
1. Penjumlahan (Add), Penambahan Satu (Increment)
2. Pengurangan (Subtract), Pengurangan Satu (Decrement)
3. Logika OR, EX-OR, AND, dan NOT (Complement)
4. Perbandingan (Compare)
5. Pergeseran ke kiri atau ke kanan atu bit (Shift)
6. Berputar ke kiri atau ke kanan (Rotate).
Pada Mikroprosessor 8085 mempunyai 10 buah register, dan register
merupakan tempat penyimpanan data sementara. Register-register ini dibagi atas
dua kelompok, yaitu :
- General Purpose Register (Register Serba Guna).
- Special Purpose register (Register Khusus).
Dimana dikatakan dengan Register Serba Guna (General Purpose
Register) karena pemakaian register ini bersifat umum. Susunan dari Register-
register ini aperti sebuah RAM kecil (8-bit atau 16-bit) di dalam CPU. Register
ini dapat digunakan sebagai tempat penyimpanan hasil operasi mikroprosessor.
Bahasa Assembly
13
Register serba guna ini terdiri dari 6 buah register 8-bit yang disebut dengan
regisr B, C, D, E, H, dan L. Untuk pengoperasian 16-bit register ini dapat
digunakan berpasangan menjadi pasangan register BC, DE, HL.
Kemudian dikatakan dengan Register Khusus (Sepecial Purpose
Register) karena fungsinya yang sangat khusus, register ini terdiri dari 4 bagian
yaitu : Akumulator, Register bendera, Program Counter (PC), Stack Pointer(SP).
• Akumulator (Accumulator/Acc).
Akumulator disebut juga dengan register A yang merupakan register yang amat
penting, karena register ini berfungsi sebagai tempat penyimpanan hasil setiap
operasi aritmatika maupun operasi logika dan juga sebagai tempat masukan
ALU. Data Bus internal yang dihubungkan ke Acc ini merupakan dua arah
(bidirectional) yang berartyi akumulator dapat mengirim dan menerima data. Di
dalam penggunaan akumulator ini berpasangan dengan register Bendera (Flag).
• Register Bendera (Flag Register, F)
Register Bendera berfungsi sebagai indicator atau menyatakan kedaan dari hasil
operasi ALU. Register ini terdiri dari 8-bit tetapi hanya 5-bit yang dipakai
yaitu: Zero (Z), Sign (S), Parity (P), Carry (Cy) dan Auxilary Carry (AC).
Susunan bit dari register Bendera digambarkan sebagai berikut :
Gambar 1.6. Register Bendera (Flag)
S Z x AC x P x Cy
D7 D6 D5 D4 D3 D2 D1 D0
X = tidak dipakai (don’t care)
Bahasa Assembly
14
Isi register bendera akan berubah sesuai dengan hasil operasi aritmatika-logika.
- Sign Bit (S) : S = 0 ; bila hasilnya positif
S = 1 ; bila hasilnya negative
- Zero Bit (Z) : Z = 1 ; bila hasilnya sama denga 0
Z = 0 ; bila hasilnya tidak sama dengan 0
- Auxilary Carry Bit (AC) :
AC = 1 ; Jika terjadi carry dari 4 bit rendah (low nible) ke 4 bit
tinggi (high nible) dan Jika ada borrow dari high
nible ke low nible.
AC = 0 ; Jika sebaliknya.
- Parity Bit (P) :
P = 1 ; bila hasil operasi berparity genap.
P = 0 ; bila hasil operasi berparity ganjil.
- Carry Bit (Cy) :
Cy = 1 ; bila hasil penjumlahan melebihi 8-bit, dan bila hasil
pengurangan ada borrow.
Cy = 0 ; bila tidak terjadi borrow atau carry.
• Program Counter (PC)
Pengeksekusian suatu program adalah pelaksanaan instruksi, dimana instruksi
ini telah terlebih dahulu disimpan di dalam memori. Jadi untuk melaksanakan
instruksi tersebut dibutuhkan suatu alamat yang menunjukkan lokasi
penyimpanan instruksi tersebut di dalam memori. Alamat lokasi memori yang
akan dituju ini diambil dari Program counter. Rogram counter ini merupakan
register 16-bit, dengan demikian jangkauan alamatnya adalah 216 = 64 kByte.
Bahasa Assembly
15
• Stack Pointer (SP)
Stack merupakan bagian dari memori yang dialokasikan untuk penyimpanan
data dan alamat. Misalnya saat instruksi PUSH dan CALL. Alamat awal dari
stack ini ditandai oleh Stack Pointer. Stack dapat diakses dengan menggunakan
program. Penumpukan data pada stack ini mempunyai sifat LIFO (Last In
First Out). Pemindahan data dari register CPU ke Stack dapat dilaksanakan
dengan instruksi PUSH dan yang sebaliknya adalah POP. Stack Pointer (SP)
merupakan register 16-bit dengan demikian jangkauan alamat adalah sebesar
216 = 64 kByte.
1.8. Media Penyimpan Memori
Ada beberapa jenis media penyimpan memori yang sekarang banyak
digunakan, misalnya :
• ROM (Read-Only Memory)
• PROM (Programmable ROM)
• EAROM (Elictrically Alterable ROM)
• RAM (Random-Access Memory)
• FPLA (Field Programmable Logic Array)
• CCD memory (Charge-Coupled Device)
• Dan masih banyak lagi.
Jenis penyimpan memory ada dua macam :
• Volatile (yang akan hilang begitu aliran listrik pada computer
dimatikan) Contoh : RAM, flipflop
• Nonvolatile (tidak akan hilang meskipun aliran listrik mati)
Contoh : ROM, PROM, EPROM, magnetic-tape dsb.
Bahasa Assembly
16
Struktur Penyimpan Memori
Kapasitas memory dari RAM atau ROM dinyatakan dengan jumlah bit
yang dapat disimpan pada piranti tersebut . Biasanya, 1 Kilo bit memori adalah
sama dengan 210, atau sama dengan 1024 bit. 4 Kilobit sama dengan 212, atau
4096 bit. Di pasaran, bermacam-macam chip penyimpan memori di mana
masing-masing memiliki spesifikasi tersendiri. Yang popular dipakai misalnya
EPROM buatan intel, dengan kode sebagai berikut :
2764 (8 bit output, kapasitas memori 8K)
2732 (8 bit output, kapasitas memori 4K)
Di samping itu beberapa jenis memori ada yang memiliki input/output 4
bit. Karena kebanyakan mikroprosesor memiliki bus data 8 bit, maka untuk
menentukan jumlah IC yang diperlukan dipakai rumus :
Jadi sebagai contoh suatu ROM dengan kapasitas 256 bytes, 4 bit output,
akan dipakai sebagai penyimpan memori suatu system mikrokomputer 256 bytes,
8 bit. Maka jumlah IC memori yang dibutuhkan adalah :
Kofigurasi system memori yang dibutuhkan
Ukuran IC memori yang ada Jumlah IC =
256 x 8
256 x 4 Jumlah IC = = 2 chip
Bahasa Assembly
17
Tugas dan Pertanyaan:
1. Sebutkan Alasan Utama kenapa Software tidak dituliskan dalam Bahasa
Mesin Hexadesimal.
2. Sebutkan definisi dari Mikroprosessor.
3. Gambarkan Diagram Blok Elemen-elemen Fungsional Utama dari
Komputer dan Jelaskan Fungsi setiap Blok.
4. Sebutkan Fungsi tama dari CPU.
5. Register pada Mikroprosessor 8085 dibagi dalam dua kelompok, sebutkan
dan jelaskan.
6. Jenis memori yang tidak akan hilang data di dalam memori jika tegangan
listriknya diputuskan disebut dengan apa dan sebutkan contoh-contohnya.
Bahasa Assembly
18
DASAR PEMOGRAMAN
2.1. Pengantar Algoritma Pemograman.
Beberapa istilah yang perlu diketahui dalam dunia pemograman antara
lain adalah : Program, Pemograman dan Bahasa Pemograman. Program adalah
kumpulan instruksi/perintah yang disusun sebagai satu kesatuan prosedur yang
berupa urutan langkah untuk menyelesaikan masalah yang diimplementasikan
dengan menggunakan bahasa pemograman sehingga dapat dieksekusi oleh
computer. Pemograman adalah proses untuk mengimplementasikan urutan
langkah untuk menyelesaikan suatu masalah dengan menggunakan suatu bahasa
pemograman.
Bahasa Pemograman berfungsi sebagai media untuk menyusun dan
memahami suatu program computer serta sebagai alat komunikasi antara
programmer dengan computer. Bahasa Pemograman digolongkan menjadi
beberapa tingkatan yaitu :
• Bahasa Tingkat Rendah (Low Level Language)
Bahasa Tingkat Rendah merupakan bahasa pemograman yang berorientasi
pada mesin. Disebut tingkat rendah karena bahasa ini lebih dekat ke bahasa
mesin daripada bahasa manusia. Yang tergolong dalam bahasa tingkat rendah
adalah bahasa Assembly.
• Bahasa Tingkat Tinggi (High Level Language)
Bahasa Tingkat Tinggi lebih dekat ke bahasa manusia dari pada bahasa
mesin. Bahasa tingkat tinggi emrupakan bahasa pemograman yang meiliki
D
Bahasa Assembly
19
aturan-aturan gramatikal dalam penulisan ekspresi atau pernyataan dengan
standar yang mudah dipahami oleh manusia. Yang tergolong bahasa tingkat
tinggi antara lain : BASIC, Fortran, COBOL, Pascal, Prolog, C, dll. Ada
sebagian para pakar yang menyebutkan bahasa C sebagai bahasa tingkat
menengah (Middle Level Language), karena dianggap bahasa C adalah
bahasa tingkat tinggi yang mempunyai kelebihan hampir menyamai bahasa
assembly karena kelengkapan fungsinya dalam mengakses perangkat keras.
2.2. Algorithma.
Algoritma bnerasal dari kata algoris dan ritmis, yang pertama kali
diungkapkan oleh Abu Ja’far Mohammed Ibn Musa al Khowarismi (825 M)
dalam buku Al-Jabr Wa-al Muqabla. Dalam bidang pemograman Algoritma
didefinisikan sebagai suatu metode khusus yang tepat dan terdiri dari serangkaian
langkah yang terstruktur dan dituliskan secara sistematis yang akan dikerjakan
untuk menyelesaikan suatu masalah dengan bantuan computer. Algoritma
merupakan pola piker terstruktur yang berisi tahap-tahap penyelesaian masalah
yang dapat disajikan dengan teknik tulisan maupun dengan gambar. Penyajian
algoritma dalam bentuk tulisan biasanya menggunakan metode Structure English
atau Pseudo Code (kode semu). Penyajiann algoritma dalam bentuk gambar
biasanya menggunakan flowchart (diagram alir).
Sebelum membuat sebuah program, programmer harus mendefinisikan
masalah yang ada untuk menghasilkan program yang bagus, dimana bahasa
mikroprosessor, bahasa mesin dan hexadecimal Op-code harus diinstruksikan
sebelumnya. Sebagai contoh suatu bagian dari instruksi untuk penjumlahan dan
pengurangan, pada Instruksi set mikroprosessor 8085 tidak mengetahui instruksi
Bahasa Assembly
20
aritmatika yang lain (perkalian atau pembagian), sehingga harus didefinisikan
terlebih dahulu bagaimana membuat perkalian dengan instruksi yang ada yaitu
penjumlahan dan pengurangan. Sebenarnya operasi perkalian tidak cocok dalam
struktur proses bilangan biner, jadi utnuk proses perkalian harus diubah oleh
programmer ke dalam proses penjumlahan.
Contoh :
5 x 4 = 20
Factor 1 Factor 2 Hasil
5 + 5 + 5 + 5 = 20
Berarti masalah perkalian dapat diselesaikan dengan menjumlah bilangan factor 1
sebanyak Factor 2.
Sebelum memulai membuat Flowchart dan Program, perlu membuat
terlebih dahulu dalam bentuk Algoritma, sebagai contoh untuk program perkalian
yaitu 5 dikalikan dengan 4, urutan langkahnya adalah :
- Isi Register A dengan data 00 (untuk mengclearkan isi Akumulator)
- Isi Register B dengan data 5 (Factor 1)
- Isi Register C dengan data 4 (Factor 2)
- Jumlahkan Register B dengan Register A, dan isikan hasilnya ke register A.
- Kurangi 1 dari data Register C.
- Periksa, apakah Register C = 0 ; Jika tidak kembali lompat ke langkah
keempat.
- Jika Register C = 0, maka program selesai/stop dan kembali ke program
utama.
Bahasa Assembly
21
Dari langkah-langkah pada algoritma ini, dapat dibuat langsung ke sebuah
program dengan format bahasa tertentu atau membuat flowchart terlebih dahulu.
2. 3. Flowchart.
Untuk membuat program yang lebih sistematik maka disarankan untuk
menggunakan flowchart, baru kemudian diubah menjadi bahasa assembly. Ada
banyak macam flowchart, sebagai contoh flowhcar blok yang menujukkan
prosedur proses kasar, atau flowcart yang cukup rinci yang berhubungan dengan
satu instruksi.
Flowchart juga dibagi atas 3 tipe dasar
(1) Tipe langsung (straight type)
(2) Tipe cabang (branch type)
(3) Tipe loop
Seperti tampak pada gambar 2.1.
Gambar 2.1. Tipe Dasar Flowchart
SETTING
PRAKIRAAN KONDISI
START
PROSES BERULANG
PROSES LAIN
(c) Loop
START
PROSES
(a) Langsung
PROSES
PROSES
START
PROSES
CABANG
PROSES
PROSES
PROSES
(b)Cabang
YES
NO
Bahasa Assembly
22
Tipe langsung adalah tipe yang paling sederhana, yaitu urutan proses
selalu mulai dari atas ke bawah. Pada tipe cabang, aliran proses berubah
berdasarkan perubahan kondisi. Perubahan kondisi tersebut dapat dicek
menggunakan register flag F. Tipe loop digunakan untuk proses yang berulang.
Tipe ini merupakan tipe yang sangat popular dalam pemograman.
Terdapat 2 (dua) jenis flowchart yang perlu diketahui yaitu :
• Sistem Flowchart.
• Program Flowchart.
Sistem flowchart
Sistem flowchart merupakan diagram alir yang menggambarkan suatu sitem
peralatan computer yang digunakan dalam proses pengolahan data serta
hubungan antar peralatan tersebut. Sistem Flowchart tidak digunakan untuk
menggambarkan urutan langkah untuk memecahkan masalah, tetapi hanya untuk
menggambarkan prosedur dalam system yang dibentuk.
Simbol-simbol yang digunakan dalam system Flowchart antara lain :
Sequential Access Storage
Manual Input Punched Paper Tape
Display Input/Output Direct Acces Storage Magnetic Disc
Bahasa Assembly
23
Gambar 2.2. Simbol-simbol Sistem Flowchart
Contoh penggunaan Sistem Flowchart :
Gambar 2.3. Contoh Penerapan Sistem Flowchart
Process Storage Data Manual Operation Card
Internal Storage Proses Merge Proses Sortir Multi Document
Keyboard
CPU Disket
Monitor
Bahasa Assembly
24
Program Flowchart
Program Flowchart merupakan diagram alir yang menggambarkan urutan logika
dari suatu prosedur pemecahan masalah. Untuk membuat program flowchart telah
tersedia symbol-simbol standard yaitu :
Gambar 2.4. Simbol-simbol Program Flowchart
Beberapa Contoh Penggunaan Program Flowchart :
1. Buatlah sebuah Flowchart untuk menghitung Luas.
Process Input/Output Predefined Process
Terminator : awal/akhir program
Loop FOR…NEXT Kondisi
Konektor pada halaman yang Konektor pada
halaman lainArah data
Bahasa Assembly
25
2. Buatlah Flowchart untuk menentukan Nilai 6 orang mahasiswa dengan
skala nilai sebagai berikut :
A = 81 – 100
B = 66 – 80
C = 56 – 64
D = 40 – 54
E = 0 – 39
Jawab :
1.
Start
Input alas,tinggi
Luas = alas*tinggi/2
Output Luas
Stop
Bahasa Assembly
26
2.
Start
Baca Data Mhs
(X(i) i=1 6)
NX(i) = “A”
Cetak (NX(i), i=1,6)
Stop
X(i) >=81
i = 1,6
X(i) >=66
X(i) >=56
X(i) >=40
NX(i) = “B” NX(i) = “C” NX(i) = “E” NX(i) = “D”
i = 6 ?
N N N N
Y YYY
Y
N
Bahasa Assembly
27
Tugas dan Pertanyaan :
1. Apa yang dimaksud dengan :
a. Program.
b. Pemograman
c. Algorithma
2. Sebutkan berapa tingkatan dalam Bahasa Pemograman dan jelaskan.
3. Buatlah sebuah Algoritma untuk perkalian sebuah bilangan 8 dengan
bilangan 7 dan buat flowchartnya.
4. Sebutkan berapa macam type dasar Flowchart dan jelaskan.
5. Sebutkan perbedaan Sistem Flowchart dengan Program Flowchart.
6. Buatlah Flowchart untuk mendapatkan Nilai Rata-rata Mahasiswa dalam
satu kelas dengan jumlah mahasiswa 24 orang, dan untuk mendapatkan
Nilai Maximum serta Nilai Minimum.
7. Dalam ruangan Jurusan Teknik Elektro memiliki 3 (tiga) AC Split,
dimana ketiga AC tersebut Nyala secara Otomatis tergantung pada suhu
dalam ruangan. Jika suhu nya antara 20oC – 25oC maka AC 1 yang Nyala,
dan lainnya OFF, Jika Suhunya diatas 25oC dan dibawah 30oC maka dua
AC yang akan Nyala yaitu AC 1 dan AC 2, dan Jika Suhunya diatas 30oC
maka ketiga AC tersebut akan Menyala (ON), kemudian jika di dalam
ruangan tersebut tidak ada orang maka AC tidak menyala walaupun
suhunya tinggi. Buatlah Flowchart untuk mengontrol AC dalam ruangan
tersebut.
Bahasa Assembly
28
INSTRUKSI DASAR 8085
Agar suatu mikrokomputer dapat bekerja maka harus diberikan instruksi,
dimana instruksi ini merupakan perintah-perintah yang akan dilaksanakan oleh
mikroprosessor. Instruksi ini terdiri dari kode operasi (Op-Code) dan alamat atau
data yang diperlukan.
Kode Operasi (Op-Code) pada CPU 8085 terdiri dari 8-bit, yang berarti
terdapat 256 (28) instruksi yang berbeda tetapi yang diperkenalkan pada umum
hanya 246 instruksi. Bentuk format dari instruksi umumnya terdiri dari Op-Code
dan Operand. Op-Code adalah singkatan dari Operation Code yang menyatakan
instruksi yang akan dilaksanakan, sedangkan Operand adalah data yang
digunakan oleh Op-Code yang berupa data atau alamat. Format dari bentuk
perintah yang digunakan pada CPU 8085 ada 3 jenis yaitu 1 byte, 2 byte, 3 byte
yang ditunjukkan pada gambar berikut.
Gambar 3.1. Bentuk Format dari Perintah CPU 8085
Berdasarkan fungsinya instruksi CPU 8085 dapat dibedakan atas 5 jenis, yaitu :
• Instruksi Pemindahan Data (Data Transfer)
• Instruksi Pemrosesan Data (Data Processing)
• Instruksi Kendali (Control)
Data byte rendah (low order data)
atau byte rendah alamat (low order address)
Kode Operasi (Op-Code)
Data byte tinggi (high order data)
Atau Byte tinggi alamat
(high order address)
Byte 1 Byte 2 Byte 3
E
Bahasa Assembly
29
• Instruksi Masukan-Keluaran (Input-Output)
• Instruksi Lompat dan Cabang (Jump and Branch)
3.1. Mode Pengalamantan
Pengalamatan pada mikroprosesor 8085 dibagi atas: Pengalamatan
Implied (Implied addressing), pengalamatan seketika (immediate addressing),
pengalamatan langsung (direct addressing), pengalamatan tidak langsung
(indirect addressing), dan pengalamatan register (register addressing).
3.1.1. Pengalamatan Implied
Penglamatan jenis ini adalh instruksi yang hanya terdiri dari kode
operasi (op-code) yaitu 8-bit. Instruksi pengalamatan paling sederhana ini adalah
operasi yang men-set atau meng-clear register bendera (Reg. Flag),
menambah/mengurangi register Internal (A, B, C, D, E, H, L, SP), atau
mentrasfer isi dari suatu register ke register yang lain.
Contoh : INR A 3C; Naikkan suatu isi ACC.
ADD B 80; Jumlahkan isi ACC dengan isi register B
3.1.2. Pengalamatan Seketika (Immediate Addressing)
Pengalamatan seketika adalah instruksi yang operandnya adalah data
langsung. Untuk penstranferan data Mikroprosessor 8085 mempunyai dua bentuk
dasar dari instruksi pengalamatan seketika ini yaitu:
- Bentuk MVI (Move Immediate); Bentuk ini digunakan untuk mentransfer
data 8-bit ke suatu register.
Contoh : MVI A, 05 3E-05 ; Data 05 diberikan ke Acc.
- Bentuk LXI (Load Immediate); Bentuk ini digunakan untuk membebani
pasangan register dengan data 16-bit. Setiap Instruksi LXI terdiri dari 3
Bahasa Assembly
30
byte, yaitu byte pertama berisi Op-Code, byte kedua dan ketiga berisi data
immediate 16 bit.
Contoh : LXI H, 7894 21-94-78 ; Reg. HL = 7894
3.1.3. Pengalamatan Langsung (Direct Addressing)
Pengalamatan langsung adalah pengalamatan yang langsung menuju
lokasi memori. Instruksi ini terdiri dari kode operasi yang diikuti oleh alamat dari
lokasi yang dituju. Mikroprosessor 8085 mempunyai dua bentuk instruksi
pengalamatan langsung yaitu : Instruksi membebani yang menyimpan
Accumulator, instruksi membebani yang menyimpan isi pasangan register HL.
Contoh:
Assembly Machine Comment
LDA a16 3A-ll-hh Reg. A diisi dengan isi alamat a16
STA a16 32-ll-hh Isi Reg. A disimpan pada alamat a16
LHLD a16 2A-ll-hh HL dibebani dengan data dari isi memory
a16 + 1.
SHLD a16 22-ll-hh Isi pasangan Reg. HL disimpan pada
alamat a16 dan a16 +1.
Catatan : a16 = alamat 16-bit , ll = alamat low byte
hh = alamat high byte
3.1.4. Pengalamatan Tidak Langsung (Indirect Addressing)
Pengalamatan tidak langsung adalah pengalamatan suatu lokasi memori
dimana pengalamatan dilakukan melalui register. Pengalamatan tidak langsung
pada 8085 dilakukan melalui register M dan dengan instruksi STAX dan LDAX.
Bahasa Assembly
31
Register M adalah memori dimana alamatnya terdapat pada pasangan register
HL.
Contoh :
Assembly Machine Comment
LDAX B 02 ;Bebani Reg. A dengan isi alamat yang alamatnya
terdapat pada Reg. BC
LDAX D 0A ;Bebani Reg. A dengan isi alamat yang alamatnya
terdapat pada Reg. DE
STAX B 12 ;Simpan isi Reg. A pada lokasi memory yang
alamatnya terdapat pada Reg. BC
STAX D 1A ;Simpan isi Reg. A pada lokasi memory yang
alamatnya terdapat pada Reg. DE
MVI M, 05 36-05 ;Bebani memory dimana alamatnya pada HL
dengan data 05
Contoh berikut ini mengilustrasikan bagaimana pasangan Register
dibebani dengan alamat memory dan kemudian dengan menggunakan instruksi
LDAX B Akkumulator dibebani dengan data dari lokasi memory 1000(H), dan
selanjutnya data tersebut disimpan kembali pada alamat 1200(H) dengan instruksi
STAX D.
Contoh :
Assembly Machine Comment
LXI B, 1000 (H) 01-00-10 ; alamat 1000(H) BC
LXI D, 1200 (H) 11-00-12 ; alamat 1200(H) DE
LDAX B 0A ; isi alamat 1000(H) ACC.
Bahasa Assembly
32
STAX D 12 ; isi Akkumulator alamat 1200
3.1.5. Pengalamatan Register
Pengalamatan ini merupakan pemindahan/pembacaan data antara register.
Pengalamatan register ini merupakan pengalamatan yang paling umum
digunakan. Pengalamatan register ini mempunyai panjang 8-bit.
- Instruksi Data Transfer Antara Register :
Kelompok ini terdiri dari 63 Instruksi yang berbeda. Instruksi ini disebut
dengan pemindahan (MOV = Move). Format dasar dari instruksi MOV
digambarkan seperti dibawah ini :
MOV rd, rs rd = Register tujuan
rs = Register asal
Daftar yang lengkap dari instruksi MOV diperlihatkan pada daftar
Instruksi set 8085. Perhatikan bahwa beberapa dari instruksi ini menggunakan
pengalamatan indirect seperti pengalamatan Register.
Contoh berikut menunjukkan bagaimana suatu bilangan pada
Accumulator dipindahkan ke Register D dan E. Instruksi mula-mula
mengcopy isi Accumulator ke Register D dan kemudian mengcopy isi
Register D ke Register E.
Contoh :
Assembly Machine Comment
MOV D, A 57 ; Isi Acc. Dicopy ke Reg. D
MOV E, D 5A ; Isi Acc. Dicopy ke Reg. E
Bahasa Assembly
33
3.2. Operasi Tranfer Data Stack
Mikroprosessor 8085A mempunyai sifat penumpukan data dengan system
LIFO (Last In First Out). Stack digunakan untuk menyimpan alamat kembali
(return) dari subroutine dan juga penyimpanan data untuk sementara waktu. Agar
pemogram mengetahui lokasi Stack penyimpanan data maka perlu alamat Stack
tersebut ditandai terlebih dahulu. Penandaan ini dilaksanakan dengan mengisi SP
(Stack Pointer). Instruksi yang berhubungan dengan Stack ini adalah PUSH,
POP, XTHL. POP membaca data dari Stack, dan XTHL adalah mempertukarkan
ini Register HL dengan isi Stack yang ditunjuk oleh SP.
Assembly Machine Comment
PUSH PSW F5 ; Isi Reg. A dan Flag disimpan pada
stack
PUSH B C5 ; Isi pasangan Reg. BC disimpan pada
stack
PUSH D D5 ; Isi pasangan Reg. DE disimpan pada
stack
PUSH H E5 ; Isi pasangan Reg. HL disimpan pada
stack
POP PSW F1 ; data pada stack diambil kembali dan
dimasukkan ke Reg. A dan Flag.
POP B C1 ; data pada stack diambil kembali dan
dimasukkan ke Reg. BC
POP D D1 ; data pada stack diambil kembali dan
dimasukkan ke Reg. DE
Bahasa Assembly
34
POP H E1 ; data pada stack diambil kembali dan
dimasukkan ke Reg. HL
XTHL E3 ; isi Reg. HL saling dipertukarkan
dengan data yang terdapat pada
stack.
3.2.1. Operasi PUSH
Instruksi PUSH merupakan instruksi untuk menyimpan data pada Stack.
Instruksi set ini terdiri dari instruksi PUSH, POP, XTHL. Operasi dari PUSH ini
ditunjukkan paada gambar 3.2. berikut:
PUSH D
Gambar 3.2. Operasi PUSH
12 34 12 34
900 3 900 1
B6
05
0F
08
34
12
0F
08
9001
9002
9003
9004
SP SP
D D
sebelum setelah
E E
9001
9002
9003
9004
Memory Stack
Bahasa Assembly
35
Anggap bahwa isi SP adalah 9003(H) dan pasangan register DE berisi
data 1234(H). Instruksi PUSH membuat isi SP dikurangi satu (SP-1 = 9002) dan
12(H) dari Reg. D disimpan pada memori 9002. Kemudian isi SP dikurangi satu
lagi (SP-2=9001) dan kemudian data 34(H) dari Reg. E disimpan pada memory
9001, sedangkan isi alamat 9003 sampai 9004 dan isi register tetap.
3.2.2. Operasi POP
Instruksi POP adalah instruksi yang membaca data kembali dari Stack,
seperti ditunjukkan pada gambar 3.3. berikut ini :
POP D
Gambar 3.3. Operasi POP
66 87 12 34
900 1 900 3
34
12
0F
08
34
12
0F
08
9001
9002
9003
9004
SP SP
D D
sebelum setelah
E E
9001
9002
9003
9004
Memory Stack
Bahasa Assembly
36
Langkah-langkah operasi POP D menghasilkan sebagai berikut: Anggap
bahwa isi SP tidak berubah dari saat instruksi PUSH (SP=9001). Data dari Stack
alamat 9001 diambil kembali dan dimasukkan ke Register E dan setelah itu isi SP
ditambah satu (SP+1=9002(H)), kemudian isi alamat 9002(H) dimasukkan ke
register D selanjutnya isi SP ditambah satu lagi (SP+2=9003(H)).
3.2.3.Operasi Exchange HL dengan Data Stack (XTHL):
Instruksi ini meng-exchange isi pasangan Register HL dengan data yang
ada pada stack.
Contoh :
Data 1000 (H) di push pada stack dan HL berisi 2000 (H), maka setelah instruksi
XTHL akan mengakibatkan kedua harga ini diexchage, sehingga HL berisi
1000 (H) dan stack berisi 2000 (H).
3.3. Miscelleneous Data Transfer Instruction.
Instruksi Miscelleneous adalah instruksi yang tidak termasuk kepada
kelompok diatas. Instruksi-instruksi ini seperti yang terdapat pada table.
Assembly Machine Comment
IN p8 DB p8 ; Baca data yang ada pada Port p8 dan simpan di
Acc.
OUT p8 D3 p8 ; Keluarkan isi Acc ke Port beralamat p8
SPHL F9 ; Isi pasangan Reg. HL diberikan pada Stack
Pointer (SP)
XCHG EB ; HL dan DE saling dipertukarkan
Bahasa Assembly
37
3.3.1. Instruksi IN dan OUT
Instruksi IN dan OUT berfungsi untuk berhubungan dengan peralatan
input/output. Instruksi IN dan OUT diikuti dengan alamat input output yang akan
dituju. Pada saat mikroprosessor melaksanakan instruksi IN atau OUT saluran
alamat byte rendah dan byte tinggi sama yaitu berisiskan alamat input/output
yang dituju, jadi untuk mendekodekan alamat input/output dapat diambil dari
saluran alamat tinggi atau alamat rendah. Jadi lokasi alamat input/output yang
dapat diakses maksimum 256.
Instruksi OUT 20H menyebabkan isi akkumulatordikeluarkan ke port
(Bandar) yang beralamat 20H dan instruksi IN 21H menyebabkan data pada port
yang beralamat 21H masuk pada akkumulator.
3.3.2. Instruksi SPHL
Instruksi ini berguna untuk membebani Stack Pointer dengan isi pasangan
register HL. Instruksi SPHL ini hanya 1 byte (Op-Code saja). Instruksi ini sering
digunakan untuk menandai Stack Pointer untuk menggantikan instruksi LXI SP.
Misalnya sebelum instruksi SPHL ini isi Stack Pointer (SP) adalah 0008 (H) dan
pasangan register HL berisi 7008 (H). Setelah instruksi ini dikerjakan
microprocessor maka Stack Pointer akan berisi 7008 (H).
3.3.3. Instruksi XCHG
Instruksi ini berfungsi untuk meng-exchange isi pasangan register HL
dengan pasangan register DE. Anggap sebelum instruksi XCHG isi pasangan
register HL = 5643 (H), DE = 7613 (H), maka setelah instruksi XCHG dikerjakan
mikroprosessor maka isi pasangan register HL = 7613 (H) dan DE = 5643 (H).
Bahasa Assembly
38
Contoh :
Assembly Machine Comment
LXI D, 1200 (H) 11-00-12 ; Tanda untuk alamat 1200 (H)
LXI H, 1000 (H) 21-00-10 ; Tanda untuk alamat 1000 (H)
MOV A, M 7E ; Data dari alamat 1000 (H)
dimasukkan ke Accumulator.
XCHG EB ; Tanda untuk alamat saling
dipertukarkan.
MOV B, M 46 ; Isi alamat 1200 (H) dimasukkan ke
register B
MOV M, A 77 ; Isi alamt 1000 (H) dimasukkan ke
alamat 1200 (H).
XCHG EB ; Tanda dipertukarkan kembali.
MOV M, B 70 ; Isi alamat 1200 (H) yang pertama
dimasukkan ke alamat memori.
Bahasa Assembly
39
Tugas dan Pertanyaan :
1. Apa yang dimaksud dengan Op-Code dan Operand
2. Sebutkan 5 jenis instruksi pada Mikroprosessor 8085 menurut fungsinya.
3. Sebutkan dan jelaskan Mode Pengalamatan pada Mikroprosessor 8085
serta berikan contohnya.
4. Isilah alamat, Op-Code dan comment pada table berikut sesuai dengan
Instruksi pada Mnemonic.
Address Op-Code Mnemonic CommentLXI H, 7800LXI B, 7801MVI M, FFMOV A, MSTAX BSHLD 7802RST 1
Setelah program di atas dilaksanakan (execute) isi dari :
Reg. A = _______Reg. B = ______ Reg. L = _______
Isi alamat dari : 7800 (H) = 7801 (H) =
7802 (H) = 7803 (H) =
5. Buatlah sebuah Program Perkalian untuk mengalikan dua buah bilangan
yaitu 07 dikalikan dengan 06, dan hasil perkaliannya disimpan pada
Register D, dan alamat nya dimulai dari alamt 9000.
Bahasa Assembly
40
PEMOGRAMAN
LANJUTAN
Operasi-operasi aritmatika dan logika pada mikroprosessor sama seperti
operasi pada system digital biasa. Operasi aritmatika yang dapat dikerjakan oleh
mikroprosessor 8085 adalah Penjumlahan, Pengurangan dan operasi logika
adalah Invers, AND, OR, EX-OR, Instruksi Banding dan instruksi Geser serta
Putar.
4.1. Instruksi Pemrosesan Data (Data Processing)
Instruksi pemrosesan data merupakan instruksi aritmatika dan logika.
Seluruh operasi dari instruksi akan mempengaruhi isi dari Bendera (Flag).
Instruksi aritmatika terdiri dari :
4.1.1. Instruksi Penjumlahan (ADD)
Instruksi Penjumlahan dapat dibedakan lagi atas :
• Penjumlahan 8-bit
Instruksi penjumlahan bilangan biner 8-bit ini merupakan penjumlahan
isi register A dengan isi register yang lain atau suatu bilangan
konstanta.
Tabel 1. Instruksi Penjumlahan 8-bit tanpa carry
Assembly Kode-mesin Fungsi
ADI d8 C6 – d8 ; Acc = Acc + d8
ADD r op – code ; Acc = Acc + (Reg)
F
Bahasa Assembly
41
Contoh :
MVI A,85 ; Acc = 85 85(H) 1000 0101(2)
MVI C,83 ; Reg.C= 83 83(H) 1000 0111(2)
ADD C ; Acc = Acc + C 08(H) 1 0000 1000(2)
RST ;
Dari hasil operasi di atas maka : Acc = 08 dan bit register flag akan berisi : S=0,
H=0, P=0, Cy=1.
Isi register 0 tetap 83.
• Instruksi Penjumlahan dengan carry
Penjumlahan data 8-bit dengan carry adalah penjumlahan Akkumulator
dengan data atau isi register dan ditambahkan dengan carry sebelum operasi
dilaksanakan. Bentuk formatnya adalah sebagai berikut :
Tabel 2. Instruksi Penjumlahan 8-bit dengan carry.
Assembli Kode-mesin Fungsi
ACI d8 CE-d8 ; Acc = Acc + d8 + Cy
ADC r op-code ; Acc = Acc + Reg.r + Cy
Contoh :
MVI A, 89 ; Acc = 89
MVI C, 83 ; Reg.C = 83
ADI 83 ; Acc + 83
ADC C ; Acc = Acc + c
RST 1 ;
Dari hasil operasi diatas maka : cc=90 dan bit register flag akan berisi:
S=1, z=0, H=1, P=1, Cy=0. Isi register C tetap 83.
Bahasa Assembly
42
• Instruksi Penjumlahan dengan 16-bit
Instruksi penjumlahan 16-bit adalah penjumlahan isi pasangan register L
dengan pasangan register lain, dimana dalam pemerosesan isi pasangan register
tersebut melalui Akkumulator. Instruksi ini adalah DAD (Double ADD).
Tabel 3. Instruksi Penjumlahan 16-bit
Assembli Kode-mesin Fungsi
DAD rp op-code ; (HL) = (HL) + rp
Contoh :
LXI H,8456 8456(H)
LXI B,8742 8743(H)
DAD B Cy-1 OB99
RST 1
Setelah operasi diatas isi Register HL=OB99(H)dan BC=2743 (tetap) dan Cy=1
• Instruksi Penambahan satu (Increment)
Instruksi penambahan satu ada dua buah, yaitu penambahan isi register 8-
bit dengan satu dan penambahan isi pasangan register dengan satu, tetapi
penambahan satu untuk pasangan register tidak mempengaruhi
isi bendera, dengan bentuk formasi sebagai berikut:
Tabel 4. Instruksi Penambahan Satu
Assembli Kode-mesin Fungsi
INR r op-code ; Reg. r = Reg.r + 1
INX rp op-code ; Reg. rp = Reg.rp + 1
Bahasa Assembly
43
4.1.2. Instruksi Pengurangan (SUB)
Instruksi Pengurangan dibedakan atas :
- Instruksi Pengurangan dengan satu (Decremen)
Instruksi ini menyebabkan suatu register atau pasangan register berkurang satu.
Tabel 5. Instruksi Pengurangan Satu
Assembli Kode-mesin Fungsi
DCR r op – code ; Reg. r = Reg.r - 1
DCX rp op – code ; Reg. rp = Reg. rp - 1
- Instruksi Pengurangan data 8 - bit
Instruksi pengurangan data 8-bit adalah pengurangan isi akkumulator dengan data
8-bit atau isi register dengan bentuk format sebagai berikut :
Tabel 6. Instruksi pengurangan 8-bit tanpa borrow.
Assembli Kode-mesin Fungsi
SUI d8 op-code ; Acc = Acc - d8
SUB r op-code ; Acc = Acc - Reg.r
Contoh :
MVI A,84 84(H) 1000 0100(2)
MVI B,27 27(H) 0010 0111(2)
SUB B 5D(H) 0101 1191(2)
RST 1
Setelah program diatas dieksekusi maka Acc=5D(H), B=27(H), Flag: S=0, Z=0,
H=1, Cy=0.
Bahasa Assembly
44
- Instruksi Pengurangan data 8-bit dengan borrow
Tabel 7. Instruksi pengurangan 8-bit dengan borrow.
Assembli Kode-mesin Fungsi
SBI d8 op-code ; Acc = Acc - d8 - Cy
SBB r op-code ; Acc = Acc - Reg.r – Cy
Contoh :
MVI A,57 57(H) 0101 0111(2)
SUI 58 58(H) 0101 1000(2)
MVI B,27 Cy=1 FF(H) 1111 1111
SBB B 27(H) 0010 0111
RST 1 D7(H) 1101 0111(2)
Setelah program diatas dieksekusi maka Acc=D7(H), B=27(H), Flag : S=1, Z=0,
H=0, Cy=0, P=1.
4.1.3. Instruksi Pendesimalan (DAA)
Instruksi ini berfungsi untuk menambahkan 06, 60, 66 terhadap isi akkumulator
jika hasil penjumlahan lebih besar dari 9. Penambahan 06, 60 atau 66 pada
akkumulator berdasarkan isi dari Register Bendera.
Contoh:
MVI A, 84 84(H) 1000 0100(2)
MVI B,27 27(H) 0010 0111(2)
ADD B AB(H) 1010 1011(2)
DAA 66 0110 0110(2)
RST 1 Cy=1 11 0001 0001(2)
Bahasa Assembly
45
Penjumlahan diatas adalah penjumlahan Desimal.
Setelah program diatas dieksekusi maka Acc=11(H), B=27(H), Flag: S=0, Z=0,
H=1, Cy=1.
4.1.4. Instruksi Banding (Compare)
Instruksi Banding merupakan instruksi pengurangan isiAkkumulator
dengan suatu data 8-bit atau isi suatu register, tetapi isi dari akkumulator tetap
yang berubah hanya register bendera.
Tabel 8. Instruksi Pembandingan
Assemli Kode-mesin Fungsi
CPI d8 FE-d8 ; Flag = Acc – d8
CPM r op-code ; Flag = Acc – Reg. r
Contoh :
1. MVI A, 87 2. MVI A, 78 3. MVI A, 67
MVI A, 27 CPI 78 MVI C, 80
CMP B RST 1 CMP C
RST 1 RST 1
Contoh 1 merupakan pembandingan isi Akumulator dengan isi Register
B, Proses pembandingan ini dilakukan dengan cara pengurangan isi Acc terhadap
isi reg. B tetapi isi Acc tidak berubah. Setelah program diatas dieksekusi maka
Acc = 87(H), B=27(H), Flag P = 1, S = 0, Z = 0, H = = 0, Cy = 0.
Program contoh 2 akan menghasilkan Flag : Cy = 0, Z = 1.
Program contoh 3 akan menghasilkan Flag : Cy = 1, Z = 0.
Bahasa Assembly
46
4.1.5. Instruksi Operasi Logika
Instruksi-instruksi logika ini melaksanakan operasi logika antara
Akkumulator dengan suatu data 8-bit atau dengan isi suatu register dimana
instruksi ini terdiri dari operasi logika AND (^), logika OR (v), dan Exclusive-
OR.
• Instruksi Logika AND.
Instruksi Logika AND ini akan menghasilkan output seperti table
kebenaran gerbang logika AND, jadi instruksi ini padat mewakili fungsi
gerbang logika AND biasa.
Tabel 9. Instruksi Logika AND
Assembli Kode-mesin Fungsi
ANI d8 E6-d8 ; Acc = Acc ^ d8
ANA r op-code ; Acc = Acc ^ Reg. r
Contoh :
MVI A, 84 84(H) 1000 0100(2)
MVI B, 27 27(H) ^ 0010 0111(2) ^
ANA B 04(H) 0000 0100(2)
RST 1
• Instruksi Logika OR.
Tabel 10. Instruksi Logika OR
Assembli Kode-mesin Fungsi
ORI d8 F6-d8 ; Acc = Acc v d8
ORA r op-code ; Acc = Acc v Reg. r
Bahasa Assembly
47
Contoh :
MVI A, 84 84(H) 1000 0100(2)
MVI B, 27 27(H) v 0010 0111(2) v
ORA B A7(H) 1010 0111(2)
RST 1
• Instruksi Logika Ex-OR
Tabel 11. Instruksi Logika Ex - OR
Assembli Kode-mesin Fungsi
XRI d8 EE-d8 ; Acc = Acc v d8
XRA r op-code ; Acc = Acc v Reg. r
Contoh :
MVI A, 84 84(H) 1000 0100(2)
MVI B, 27 27(H) v 0010 0111(2) v
XRA B A3(H) 1010 0011(2)
RST 1
• Instruksi Komplement (Complement)
Instruksi Complement ini ada dua buah yaitu CMC dan CMA,
dimana CMC berfungsi untuk mengkomplemenkan isi bit carry dari
register bendera dan CMA berfungsi untuk mengkomplemenkan isi dari
register A.
4.1.6. Instruksi Geser (Shift) dan Putar (rotate).
Instruksi ini berfungsi untuk menggeser isi dari Register A kea rah
kanan atau kiri seperti digambarkan pada gambar 4.1 berikut :
Bahasa Assembly
48
RLC
RRC
RAL
RAR
gambar 4.1. Fungsi Instruksi Geser dan Putar
Contoh 1 : Contoh 2 :
STC ; Set Carry Cy = 1 STC ; Set Carry Cy = 1
CMC : Complement Carry Cy = 0 MVI A, 82 ;A=82(H) Cy=1
MVI A, 82 ; A = 82(H) Cy = 0 RRC ; A = 41(H) Cy = 0
RLC ; A = 05(H) Cy = 1 RST 1
RST 1
Akkumulator Cy
Akkumulator Cy
Akkumulator Cy
Akkumulator Cy
Akkumulator Cy
Bahasa Assembly
49
Contoh 3 : Contoh 4 :
STC ; Set Carry Cy = 1 STC ; Set Carry Cy = 1
MVI A, 82 ; A = 82(H) Cy = 1 MVI A, 82 ;A=82(H) Cy=1
RAL ; A = 05(H) Cy = 1 RAR ; A = C1(H) Cy = 0
RST 1 RST 1
4.1.7. Instruksi Kontrol
CPU 8085 mempunyai beberapa instruksi control yang menentukan
arah suatu program, mengambil keputusan dan memodifikasi arah program sesuai
dengan hasil pengambilan keputusan. Instruksi ini terdiri dari :
1. Instruksi Lompat (JUMP)
Instruksi ini terbagi atas dua jenis, yaitu mutlak lompat (unconditional
jump) dan lompat bersyarat (conditional jump). Adapun bentuk format dari
instruksi ini seperti pada table 12.
Tabel 12. Instruksi Lompat
Assembli Kode-Mesin Fungsi
JMP a16 C3-ll-hh ; Lompat ke alamat a 16
JZ a16 CA-ll hh ; Lompat jika ZERO
JNZ a16 C2-ll-hh ; Lompat jika tidak ZERO
JC a16 DA-ll-hh ; Lompat jika ada Carry
JNC a16 D2-ll-hh ; Lompat jika tidak ada Carry
JM a16 FA-ll-hh ; Lompat jika minus
JP a16 F2-ll-hh ; Lompat jika Positif
JPE a16 EA-ll-hh ; Lompat jika Parity Genap
JPO a16 E2-ll-hh ; Lompat jika Parity Ganjil
Bahasa Assembly
50
2. Instruksi Cabang dan Kembali (CALL, RET)
Instruksi CALL membuat suatu program melaksanakan suatu program
subrutin yang alamat awalnya setelah kode operasi dari instruksi CALL tersebut,
dan akan kembali lagi ke program utama jika instruksi kembali RET (return)
dijumpai. Instruksi ini terdiri dari dua jenis yaitu instruksi bersyarat dan tidak
bersyarat. Syarat dari instruksi ini dilihat dari kondisi isi register Bendera. Setelah
instruksi ini dikerjakan isi register bendera tidak berubah.
Tabel 13. Instruksi Cabang
Assembli Kode-Mesin Fungsi
CALL a16 CE-ll-hh ; CALL Sub Rutin pada alamat a 16
CC a16 DC-ll hh ; CALL Sub Rutin jika ada Carry
CNC a16 D4-ll-hh ; CALL Sub Rutin jika tidak ada Carry
CZ a16 CC-ll-hh ; CALL jika zero
CNZ a16 C4-ll-hh ; CALL jika tidak zero
CM a16 FC-ll-hh ; CALL jika minus
CP a16 F4-ll-hh ; CALL jika Positif
CPE a16 EC-ll-hh ; CALL jika Parity Genap
CPO a16 E4-ll-hh ; CALL jika Parity Ganjil
Tabel 14. Instruksi Kembali
Assembli Kode-Mesin Fungsi
RET C9 ; Kembali ke Program Utama
RC D8 ; Kembali jika ada Carry
RNC D0 ; Kembali jika tidak ada Carry
RZ C8 ; Kembali jika hasil 0
RNZ C0 ; Kembali jika hasil tidak 0
RM F0 ; Kembali jika Akkumulator negatif
RP FB ; Kembali jika Akkumulator Positif
RPE E0 ; Kembali jika Acc berparity Genap
RPO EB ; Kembali jika Acc berparity Ganjil
Bahasa Assembly
51
Mnemonic op- code Bytes Clocks FunctionACI d8 CE-d8 2 7 A = A + d8 + CyADC B 88 1 4 A = A + B + CyADC C 89 1 4 A = A + C + CyADC D 8A 1 4 A = A + D + CyADC E 8B 1 4 A = A + E + CyADC H 8C 1 4 A = A + H + CyADC L 8D 1 4 A = A + L + CyADC M 8E 1 7 A = A + M + CyADC A 8F 1 4 A = A + A + CyADD B 80 1 4 A = A + B ADD C 81 1 4 A = A + C ADD D 82 1 4 A = A + DADD E 83 1 4 A = A + EADD H 84 1 4 A = A + HADD L 85 1 4 A = A + LADD M 86 1 7 A = A + MADD A 87 1 4 A = A + AADI d8 C6-D8 2 7 A = A + d8ANA B A0 1 4 A = A ^ BANA C A1 1 4 A = A ^ CANA D A2 1 4 A = A ^ DANA E A3 1 4 A = A ^ EANA H A4 1 4 A = A ^ HANA L A5 1 4 A = A ^ LANA M A6 1 7 A = A ^ MANA A A7 1 4 A = A ^ AANI d8 E6-D8 2 7 A = A ^ d8CALL a16 CD-ll-hh 3 18 Call Sub Rutin CC a16 DC-ll-hh 3 9/18 Call Sub Rutin if Cy = 1CM a16 FC-ll-hh 3 9/18 Call Sub Rutin if S = 1CNC a16 D4-ll-hh 3 9/18 Call Sub Rutin if Cy = 0CNZ a16 C4-ll-hh 3 9/18 Call Sub Rutin if Z = 0CP a16 F4-ll-hh 3 9/18 Call Sub Rutin if S = 0CPE a16 EC-ll-hh 3 9/18 Call Sub Rutin if P = 1CPO a16 E4-ll-hh 3 9/18 Call Sub Rutin if P = 0CZ a16 CC-ll-hh 3 9/18 Call Sub Rutin if Z = 1CMA 2F 1 4 A = ACMC 3F 1 4 Cy = CyCMP B B8 1 4 Flags = A - B
TABEL INSTRUKSI SET 8085
Bahasa Assembly
52
Mnemonic op- code Bytes Clocks FunctionCMP C B9 1 4 Flags = A = CCMP D BA 1 4 Flags = A - DCMP E BB 1 4 Flags = A - ECMP H BC 1 4 Flags = A - HCMP L BD 1 4 Flags = A - LCMP M BE 1 7 Flags = A - MCMP A BF 1 4 Flags = A = ACPI d8 FE-d8 2 7 Flags = A - d8DAA 27 1 4 Decimal AdjustDAD B 9 1 10 HL = HL + BCDAD D 19 1 10 HL = HL + DEDAD H 29 1 10 HL = HL + HLDAD SP 39 1 10 HL = HL + SPDCR B 5 1 4 B = B - 1DCR C 0D 1 4 C = C - 1DCR D 15 1 4 D = D - 1DCR E 1D 1 4 E = E - 1DCR H 25 1 4 H = H - 1DCR L 2D 1 4 L = L - 1DCR M 35 1 10 M = M - 1DCR A 3D 1 4 A = A - 1DCX B 0B 1 6 BC = BC - 1DCX D 1B 1 6 DE = DE - 1DCX H 2B 1 6 HL = HL - 1DCX SP 3B 1 6 SP = SP - 1DI F3 1 4 Disable InteruptEI FB 1 4 Enable InteruptIN d8 DB-d8 2 4 A = (Port d8)INR B 4 1 4 B = B + 1INR C 0C 1 4 C = C + 1INR D 14 1 4 D = D + 1INR E 1C 1 4 E = E + 1INR H 24 1 10 H = H + 1INR L 2C 1 4 L = L + 1INR M 34 1 4 M = M + 1INR A 3C 1 4 A = A + 1INX B 3 1 6 BC = BC + 1INX D 13 1 6 DE = DE + 1INX H 23 1 6 HL = HL + 1INX SP 33 1 6 SP = SP + 1
Bahasa Assembly
53
Mnemonic op- code Bytes Clocks FunctionJC a16 DA-ll-hh 3 7/10 Jump if Cy = 1JM a16 FA-ll-hh 3 7/10 Jump if S = 1JMP a16 C3-ll-hh 3 7/10 JumpJNC a16 D2-ll-hh 3 7/10 Jump if Cy = 0JNZ a16 C2-ll-hh 3 7/10 Jump if Z = 0JP a16 F2-ll-hh 3 7/10 Jump if S = 0JPE a16 EA-ll-hh 3 7/10 Jump if P = 1JPO a16 E2-ll-hh 3 7/10 Jump if P = 0JZ a16 CA-ll-hh 3 7/10 Jump if Z = 1LDA a16 3A-ll-hh 3 13 A = (a16)LDAX B 0A 1 7 A = ((BC))LDAX D 1A 1 7 A = ((DE))LHLD a16 2A-ll-hh 3 16 HL = (a16)LXI B, d16 01-ll-hh 3 10 BC = d16LXI D,d16 11-ll-hh 3 10 DE = d16LXI H,d16 21-ll-hh 3 10 HL = d16LXI SP,d16 31-ll-hh 3 10 SP = d16MOV B, B 40 1 4 B = BMOV B, C 41 1 4 B = CMOV B, D 42 1 4 B = DMOV B, E 3 1 4 B = EMOV B, H 44 1 4 B = HMOV B, L 45 1 4 B = LMOV B, M 46 1 7 B = MMOV B, A 47 1 4 B = AMOV C, B 48 1 4 C = BMOV C, C 49 1 4 C = CMOV C, D 4A 1 4 C = DMOV C, E 4B 1 4 C = EMOV C, H 4C 1 4 C = HMOV C, L 4D 1 4 C = LMOV C, M 4E 1 7 C = MMOV C, A 4F 1 4 C = AMOV D, B 50 1 4 D = BMOV D, C 51 1 4 D = CMOV D, D 52 1 4 D = DMOV D, E 53 1 4 D = EMOV D, H 54 1 4 D = HMOV D, L 55 1 4 D = LMOV D, M 56 1 7 D = MMOV D, A 57 1 4 D = A
Bahasa Assembly
54
Mnemonic op- code Bytes Clocks FunctionMOV E, B 58 1 4 E = BMOV E, C 59 1 4 E = CMOV E, D 5A 1 4 E = DMOV E, E 5B 1 4 E = EMOV E, H 5C 1 4 E = HMOV E, L 5D 1 4 E = LMOV E, M 5E 1 7 E = MMOV E, A 5F 1 4 E = AMOV H, B 60 1 4 H = BMOV H, C 61 1 4 H = CMOV H, D 62 1 4 H = DMOV H, E 63 1 4 H = EMOV H, H 64 1 4 H = HMOV H, L 65 1 4 H = LMOV H, M 66 1 7 H = MMOV H, A 67 1 4 H = AMOV L, B 68 1 4 L = BMOV L, C 69 1 4 L = CMOV L, D 6A 1 4 L = DMOV L, E 6B 1 4 L = EMOV L, H 6C 1 4 L = HMOV L, L 6D 1 4 L = LMOV L, M 6E 1 7 L = MMOV L, A 6F 1 4 L = AMOV M, B 70 1 7 M = BMOV M, C 71 1 7 M = CMOV M, D 72 1 7 M = DMOV M, E 73 1 7 M = EMOV M, H 74 1 7 M = HMOV M, L 75 1 7 M = LMOV M, M 76 1 7 M = MMOV M, A 77 1 7 M = AMOV A, B 78 1 4 A = BMOV A, C 79 1 4 A = CMOV A, D 7A 1 4 A = DMOV A, E 7B 1 4 A = EMOV A, H 7C 1 4 A = HMOV A, L 7D 1 4 A = LMOV A, M 7E 1 7 A = MMOV A, A 7F 1 4 A = A
Bahasa Assembly
55
Mnemonic op- code Bytes Clocks FunctionMVI B, d8 06-d8 2 7 B = d8MVI C, d8 0E-d8 2 7 C = d8MVI D, d8 16-d8 2 7 D = d8MVI E, d8 1E-d8 2 7 E = d8MVI H, d8 26-d8 2 7 H = d8MVI L, d8 2E-d8 2 7 L = d8MVI M, d8 36-d8 2 7 M = d8MVI A, d8 3E-d8 2 7 A = d8NOP 00 1 4 No OperationORA B B0 1 4 A = A v BORA C B1 1 4 A = A v CORA D B2 1 4 A = A v DORA E B3 1 4 A = A v EORA H B4 1 4 A = A v HORA L B5 1 4 A = A v LORA M B6 1 7 A = A v MORA A B7 1 4 A = A v AORI d8 F6-d8 2 7 A = A v d8OUT d8 D3-d8 2 10 PORT d8 = APCHL E9 1 6 PC = HLPOP B C1 1 10 BC = (STACK)POP D D1 1 10 DE = (STACK)POP H E1 1 10 HL = (STACK)POP PSW F1 1 10 AF = (STACK)PUSH B C5 1 10 (STACK) = (BC)PUSH D D5 1 10 (STACK) = (DE)PUSH H E5 1 10 (STACK) = (HL)PUSH PSW F5 1 10 (STACK) = (AF)RAL 17 1 4 Rotate a left trough CarryRAR 1F 1 4 Rotate a right trough CarryRC D8 1 6/12 Return if Cy = 1RET C9 1 10 Return RIM 20 1 4 Read InterruptsRLC 7 1 4 Rotate a left without CarryRM F8 1 6/12 Return if S = 1RNC D0 1 6/12 Return if Cy = 0RNZ C0 1 6/12 Return if Z = 0RP F0 1 6/12 Return if S = 0RPE E8 1 6/12 Return if P = 1RPO E0 1 6/12 Return if p = 0RRC 0F 1 4 Rotate a right without Carry
Bahasa Assembly
56
Mnemonic op- code Bytes Clocks FunctionRST 0 C7 1 12 CALL 0000(H)RST 1 CF 1 12 CALL 0008(H)RST 2 D7 1 12 CALL 0010(H)RST 3 DF 1 12 CALL 0018(H)RST 4 E7 1 12 CALL 0020(H)RST 5 EF 1 12 CALL 0028(H)RST 6 F7 1 12 CALL 0030(H)RST 7 FF 1 12 CALL 0038(H)RZ C8 1 6/12 return if Z = 1SBB B 98 1 4 A = A - B - CySBB C 99 1 4 A = A - C - CySBB D 9A 1 4 A = A - D - CySBB E 9B 1 4 A = A - E - CySBB H 9C 1 4 A = A - H - CySBB L 9D 1 4 A = A - L - CySBB M 9E 1 7 A = A - M - CySBB A 9F 1 4 A = A - A - CySBI d8 DE-d8 2 4 A = A - d8 - CySHLD a16 22-ll-hh 3 13 (a16) = (HL)SIM 30 1 4 Set InterruptsSPHL F9 1 6 SP = HLSTA a16 32-ll-hh 3 13 (a16) = (A)STAX B 2 1 7 ((BC)) = (A)STAX D 12 1 7 ((DE)) = (A)STC 37 1 4 Cy = 1SUB B 90 1 4 A = A - BSUB C 91 1 4 A = A - CSUB D 92 1 4 A = A - DSUB E 93 1 4 A = A - ESUB H 94 1 4 A = A - HSUB L 95 1 4 A = A - LSUB M 96 1 4 A = A - MSUB A 97 1 4 A = A - ASUI d8 D6-d8 2 7 A = A - d8XCHG EB 1 4 HL -------- DEXRA B A8 1 4 A = A v BXRA C A9 1 4 A = A v CXRA D AA 1 4 A = A v DXRA E AB 1 4 A = A v EXRA H AC 1 4 A = A v HXRA L AD 1 4 A = A v LXRA M AE 1 7 A = A v MXRA A AF 1 4 A = A v AXRI d8 EE 2 7 A = A v d8XTHL E3 1 16 HL --------- STACK
Bahasa Assembly
57
Keterangan :
--------- = saling dipertukarkan
( ) = Isi dari suatu alamat
( ( rp ) ) = Isi alamat dimana alamatnya terdapat pada pasangan register rp
d8 = Data 8-bit
d16 = Data 16-bit
a16 = Alamat 16-bit
ll = Alamat atau Data low byte
hh = Alamat atau Data high byte
v = Logika OR
^ = Logika AND
v = Logika EX-OR
Bahasa Assembly
58
DAFTAR PUSTAKA
Andrew S. Tanenbaum, Structured Computer Organization, Prentice Hall: 1999.
Kuswadi, Son, Bahasa Komputer (Bahasa Assembly), PENS-ITS dan JICA:
Surabaya, 1993. Pardede, Morlan, Mikroprosessor dan Interface, Teknik Elektro Politeknik
Medan, USU: Medan, 1998 Syarif, Iwan. Dan Riyanto Sigit, Bahasa Komputer I, PENS-ITS: Surabaya,
1999. William Stalling, Computer Organization & Architecture, Prentice Hall:
2000.