pendahuluan - · pdf file1 pendahuluan modul ajar ini bertujuan untuk memudahkan ......

58
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

Upload: volien

Post on 01-Feb-2018

225 views

Category:

Documents


0 download

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.