209
MIKROPROSESOR 8085 SEMESTER 3 BAB 1 PENDAHULUAN 1.1 SEKILAS TENTANG MIKROPROSESOR 8085 Pada dasarnya sistem berbasis mikroprosesor terdiri atas kumpulan lokasi penyimpanan digital yang sangat tersruktur dan sangat besar disertai sebuah komponen pengendali pusat. Lokasi penyimpanan digital disebut memori, sedangkan pusat pengendali adalah mikroprosesor itu sendiri. Pada siklus pelaksanaan computer, isi beberapa lokasi memori ini dipindahkan atau dimanipulasi. Untuk sistem yang dipelajari disini, lokasi memorinya berukuran 8 bit. Setiap memori dikenali melalui sebuah alamat. CPU atau mikroprosesor yang bertindak sebagai pusat pengendali, juga memiliki lokasi penyimpanan tersendiri, panjangnya 8-bit. Isi lokasi ini juga dapat dipindahkan atau dimanipulasi selama siklus mesin. Lokasi penyimpanan di dalam prosesor disebut register. Register merupakan lokasi penyimpanan data sementara. Register di dalam mikroprosesor sangat penting dalam operasinya.Karena register berada dalam mikroprosesor , maka ia dapat dimanipulasi dengan cepat Teknik Telekomunikasi Nir Kabel 1

Isi Buku Mikro Teori

Embed Size (px)

Citation preview

Page 1: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

BAB 1

PENDAHULUAN

1.1 SEKILAS TENTANG MIKROPROSESOR 8085

Pada dasarnya sistem berbasis mikroprosesor terdiri atas kumpulan lokasi

penyimpanan digital yang sangat tersruktur dan sangat besar disertai sebuah

komponen pengendali pusat. Lokasi penyimpanan digital disebut memori,

sedangkan pusat pengendali adalah mikroprosesor itu sendiri. Pada siklus

pelaksanaan computer, isi beberapa lokasi memori ini dipindahkan atau

dimanipulasi. Untuk sistem yang dipelajari disini, lokasi memorinya berukuran 8

bit.

Setiap memori dikenali melalui sebuah alamat. CPU atau mikroprosesor

yang bertindak sebagai pusat pengendali, juga memiliki lokasi penyimpanan

tersendiri, panjangnya 8-bit. Isi lokasi ini juga dapat dipindahkan atau

dimanipulasi selama siklus mesin. Lokasi penyimpanan di dalam prosesor disebut

register. Register merupakan lokasi penyimpanan data sementara.

Register di dalam mikroprosesor sangat penting dalam operasinya.Karena

register berada dalam mikroprosesor , maka ia dapat dimanipulasi dengan cepat

tanpa memperhatikan chip lainnya. Meskipun detail arsitektur register internal

mikroprosesor berbeda antara yang satu dengan lainnya,tetapi beberapa jenis

register bersifat umum. Misalnya PC (Program Counter) yang berisi alamat

perintah berikutnya yang harus diambil. Ukurannya menentukan banyaknya

memori yang dapat menyimpan perintah atau program. Untuk berbagai

mikraprosesor yang umum, sebagai contoh, 8080, 8085, Z80, 1802, 6502 atau

6800, memiliki PC berukuran 16-bit yang memberikan jumlah lokasi maksimum

sebesar 65.536. Untuk lebih jelas tentang register akan dibahas pada uraian

berikutnya.

Teknik Telekomunikasi Nir Kabel 1

Page 2: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

Intel 8085 dikembangkan dari mikroprosesor 8080 yang juga dikembangkan

oleh Intel. Banyak kesamaan yang dimiliki oleh prosesor 8 bit dengan prosesor 8

bit lainnya , seperti Zilog Z80. Zilog Z80 dapat dioperasikan dengan baik

menggunakan instruksi yang ada pada 8080. Blok diagram arsitektur dari 8085

diperlihatkan oleh gambar di bawah ini.

Gambar1. Blok Diagram bagian dalam 8085

ALU dalam 8085 menerima masukan dari dua register, yaitu dari

akumulator (Register A) and register sementara (TMP). Akumulator selain

bertindak sebagai sumber untuk ALU juga bertindak sebagai tujuan keluaran dari

berbagai hasil operasi ALU. Register TMP diisi dengan data dari lokasi lainnya

selama operasi berlangsung. Perintah khusus ini menentukan berapa besar byte

sumber data tersebut. Oleh sebab itu pemrogram tidak dapat mengakses secara

Teknik Telekomunikasi Nir Kabel 2

Page 3: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

langsung register TMP ini, sehingga register ini disebut juga sebagai register tak

tampak.

ALU melaksanakan penjumlahan, pengurangan dan berbagai operasi

logika khusus pada pasangan byte masukan dalam register A dan register TMP.

ALU juga membangkitkan flag bit yang disimpan dalam register bendera.

Perubahan bit bendera lainnya yang dihasilkan oleh ALU adalah bendera

nol (zero), bendera tanda (sign), bendera sisa tambahan (auxiliary carry), dan

bendera paritas (parity). Bendera nol akan di-set jika hasil operasi yang dilakukan

oleh ALU adalah nol. Bendera ini bermanfaat bila kita melakukan pengujian

apakah nilai kedua byte sama. Dengan cara mengurangkan kedua nilai tersebut,

kemudian memeriksa apakah bendera nol di-set. Bendera sisa tambahan akan di

set apabila hasil penjumlahan pada bit 3 memberikan sisa (carry). Bendera ini

akan sangat berguna saat kita melakukan opersai aritmatika biner terkode

decimal (BCD). Bendera paritas akan di-set apabila suatu hasil operasi logika

satu yang jumlahnya genap dan me-reset bendera paritas apabila hasilnya berisi

logika satu yang jumlahnya ganjil.

ALU juga dapat melakukan operasi logika pada kedua byte masukannya.

Operasi logika ini antara lain adalah operasi AND, OR, NOT dan XOR. Register

flag juga dipengaruhi oleh operasi logika ini, dan setiap hasilnya akan disimpan di

akumulator.

Mikroprosesor INTEL 8085 merupakan prosesor 8-bit yang diproduksi oleh

perusahaan INTEL yang berada di California USA. Prosesor 8085 ini merupakan

prosesor sederhana (simple prosesor) yang memiliki kurang dari 80 instruksi.

Intel 8085 berkembang dari mikroprosesor 8080 yang populer. Prosesor 8-

bit ini memiliki banyak kesamaan dengan mikroprosesor 8-bit lainnya, seperti

Zilog Z80. Z80 dapat beroperasi dengan baik menggunakan perintah 8080. Lebih

lanjut lagi, berbagai mikroprosesor lainnya berbagi kesamaan dengan seri 8080

dan 8085. Kesamaan itu tetap ada pada komponen yang lebih maju seperti 80186,

80286, bahkan 80386. Memori secara fungsional berisi 2 jenis informasi :

program dan data.

Teknik Telekomunikasi Nir Kabel 3

Page 4: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

Program merupakan serangkaian informasi yang telah disandikan dalam

bentuk biner, sehingga bias tinggal dalam memori elektronik.

Program menetapkan urutan langkah yang harus dilakukan oleh computer. Di

bawah pengawasan unit pengendali, masing – masing instruksi berurutan pada

sebuah program diambil dan disimpan dalam sebuah register khusus unit

pengendali, dimana instruksi – instruksi tersebut akan dikode dan dilaksanakan.

Misal, instruksi khas dapat berupa penjumlahan isi dua buah register dan

menyimpan hasilnya pada register ketiga.

Data yang terdapat dalam memori diproses oleh ALU ( Arithmetic and

Logical Unit ), unit aritmatik dan logika. Data bias mempunyai berbagai format.

Biasanya, data berupa angka atau huruf yang dipresentasikan dalam sistem biner.

Istilah memori biasanya menunjukkan berbagai macam jenis memori. Dan dua

jenis yang hamper selalu dipakai : memori utama ( main memory ) dan memori

masal ( mass memory ). Memori utama digunakan untuk menyimpan program

yang sedang dilaksanakan dan data yang diperlukan atau dihasilkan sewaktu

pelaksanaannya.

Memori misal dipakai untuk menyimpan program dan data atau sebagian

daripadanya yang tidak segera dibutuhkan oleh CPU ataupun yang tidak dapat

ditampung oleh memori utama. Mengakses memori masal memperlambat kerja

computer, terutama bila akses sedanmg diperlukan. Idealnya sebuah program

disimpan dalam memori masal secara permanent dan dimuat dalam main memory

untuk pelaksanaan. Peralatan memori masal yang khas → piringan ( disk ), kaset

dan pita magnetic.

Dua tipe logika memori ( berdasarkan kemungkinan akses ) :

- Dihubungi secara acak ( Random Access Memory / RAM ) bisa dibaca atau

ditulis.

- Memori hanya untuk dibaca ( Read Only Memory / ROM ) begitu data telah

dimasukkan.

RAM tidak mudah terhapus ( non volatail ), tidak bias dipakai untuk

menyimpan sementara. Sekali tulis, isinya tetap. Isi RAM mudah terhapus

(volatail) dan akan kehilangan isinya jika catu daya terputus. Akibatnya,

Teknik Telekomunikasi Nir Kabel 4

Page 5: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

diperlukan penyimpanan permanent pada sistem seperti ROM atau memori masal

magnetis, atau keduanya.

REGISTER PADA MIKROPROSESOR 8085

Pada prosesor INTEL 8085 terdapat 8 register 8-bit yang dapat diakses oleh

pemrogram ,yaitu:

Register A sebagai “Accumulator Register 8 bit”

Register B

Register C

Register D

Register E

Register F sebagai “Flag Register”

Register H

Register L

Perlu diingat, terdapat satu register 8-bit yang diperuntukkan bagi internal

sistem(tidak diakses oleh user), yaitu register 1 (disebut sebagai “Instruction

Register’). Pada saat prosesor mengambil kode instruksi dari unit memori ,

pertama-tama menempatkan kode instruksi tersebut pada register 1 tersebut

sebelum melaksanakan tahap “instruction decoding”.

Dari ke 8 register tersebut, ada 6 register yang dapat membentuk 3 pasangan

register (register pair) yang memiliki kapasitas penyimpanan data 16 bit, ketiga

pasangan register tersebut adalah:

Pasangan register BC

Pasangan register DE

Pasangan register HL yang berfungsi sebagai accumulator 16-bit.

Teknik Telekomunikasi Nir Kabel 5

Page 6: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

Ketiga pasangan register ini sangat penting untuk menunjuk pada alamat

tempat data dalam unit memori yang akan diakses oleh prosesor (berfungsi

sebagai register pointer).

Pasangan register BC

Pasangan register DE

Pasangan register HL

Selain pasangan register !6-bit diatas, prosesor INTEL 8085 juga memiliki

register 16 bit yang lain, yaitu:

Register Program Counter (Register PC )

Register Stack Pointer (Register SP )

REGISTER FLAG

Register Flag (Register F) merupakan register “status” pada prosesor 8085.

Register ini memiliki 8-bit tetapi INTEL hanya memanfaatkan 5-bit sebagai bit-

bit status prosesor. Posisi dari kelima bit tersebut adalah :

B7 B6 B5 B4 B3 B2 B1 B0

Keterangan :

Bit S (Sign-bit) yang berada pada bit ke-7 merupakan bit tanda, bit S ini akan

berada pada posisi “Set” (S=1) jika hasil operasi aritmatika atau logika yang

prosesnya dilakukan pada ALU menghasilkan nilai negative. Sebaliknya, bit S

akan berada pada posisi “Reset” atau “Clear” (S= 0) jika hasil operasi

Teknik Telekomunikasi Nir Kabel

Reg B Reg C

Reg D Reg E

Reg H Reg L

S Z - Ac - P - Cy

6

Page 7: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

aritmatika atau logika yang prosesnya dilakukan pada ALU menghasilkan nilai

bukan negatif .

Bit Z (Zero-bit) ini berada pada bit ke-6 pada Flag register, bit ini

memperlihatkan apakah hasil suatu operasi aritmatika ataupun logika yang

tersimpan dalam akumulator nilainya nol. Bit ini akan “Set” (Z=1) jika hasil

operasi aritmatika maupun logika yang dilakukan dalam ALU adalah nol.

Sebaliknya, Bit ini akan “Reset” (Z=0) jika operasi aritmatika atau logika yang

dilakukan pada ALU nilainya tidak nol.

Bit Ac (Auxiliary carry-bit) berada pada bit ke-6, merupakan bit yang

menunjukkan ada atau tidaknya “carry” dari posisi B3 ke posisi B4 pada

operasi penjumlahan yang dilakukan di ALU. Pada prosesor Z-80 “auxiliary

carry Flag” ini disebut sebagai “half carry” (HC). Ac akan set (AC=1) jika

pada suatu proses penjumlahan terdapat carry dari posisi bit B3 ke B4.

Sebaliknya Ac akan reset (Ac=0) jika pada suatu proses penjumlahan tidak

terjadi carry dari posisi bit B3 ke B4. Jadi , bit Ac ini akan sangat penting pada

saat prosesor mengolah data BCD.

Bit P (Parity-bit) berada pada bit ke-2, merupakan bit “flag” yang

menunjukkan ganjil atau genapnya jumlah logik 1 pada hasil operasi logika

atau aritmatika yang dilakukan pada ALU. P akan set (P=1) jika jumlah logik

satu yang terdapat pada hasil operasi adalah genap (contoh : 1001 0011, 0000

0101, 1111 0110, dll). Dan sebaliknya P akan reset (P=0) jika jumlah logik 1

yang terdapat pada hasil operasi adalah ganjil (contoh : 1110 1100, 0010 0000,

1111 0001, dll).

Bit Cy (Carry-bit ) yang berada pada posisi bit 0 merupakan bit flag yang

menunjukkan ada atau tidaknya ”carry” atau “borrow” pada posisi B7 (bit

MSB) dalam suatu operasi aritmatika . Cy berfungsi sebagai bit carry pada

opersi penjumlahan dan sebagai bit borrow pada operasi pengurangan. Cy

akan set (Cy=1) jika pada posisi bit terbesar (MSB) dihasilkan carry atau

borrow. Sebaliknya Cy akan reset (Cy=0) jika pada posisi bit terbesar (MSB)

tidak dihasilkan carry ataupun borrow.

Teknik Telekomunikasi Nir Kabel 7

Page 8: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

INSTRUCTION SET

Untuk dapat menggunakan suatu mikroprosesor, maka kita harus

mengetahui set instruksi dari mikroprosesor yang bersangkutan. Set instruksi dari

suatu mikroprosesor berisikan daftar seluruh instruksi-instruksi yang dapat

dilakukan oleh mikroprosesor tersebut..

Pada mikroprosesor 8085 terdapat lebih dari 70 instruksi yang terbagi menjadi

beberapa kelompok instruksi, yaitu :

1. kelompok instruksi transfer data

2. kelompok instruksi aritmatika

3. kelompok instruksi logika

4. kelompok instruksi “shift” dan “rotate”

5. kelompok instruksi pencabangan (“branch”)

6. kelompok instruksi input / output dan kontrol

1.3.1 Instruksi Transfer Data

Pada bab ini akan sedikit dibahas mengenai instruksi-instruksi kelompok

transfer data, seperti “MOVE”, “MOVE IMMEDIATE” (MVI), “LOAD”,

“STORE”, dan “EXCHANGE”.

Di antara semua kelompok instruksi pada mikroprosesor 8085, kelompok

instruksi transfer data menunjukkan bagaimana cara memindahkan data 8 bit dari

suatu register ke register lain.

Kelompok instruksi transfer data terdiri dari : MOV, MVI, STA, LDA,

STAX, LDAX, SPHL, XCHG, XTHL, SHLD, dan LXI. Instruksi-instruksi

tersebut tidak mengubah isi register flag.

Fungsi Instruksi MOV dan MVI

Kelompok terbesar dari instruksi transfer data adalah kelompok instruksi

“MOVE”. Kelompok instruksi “MOVE” terdiri dari semua instruksi pemindahan

data 8 bit (1 byte) dari suatu register ke register lain atau dari suatu memori ke

register. Register tujuan selalu dituliskan sebelum tanda koma dan register sumber

dituliskan setelah tanda koma.

Teknik Telekomunikasi Nir Kabel 8

Page 9: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

Misalnya, instruksi MOV r1, r2 adalah instruksi untuk mentransfer data dari r2

(register sumber) ke r1 (register tujuan). Pengertian kata “mentransfer” di sini

adalah “menggandakan” atau “mengkopi”, karena pada akhir pelaksanaan

instruksi, isi register tujuan jadi sama dengan isi register sumber.

Contoh :

Pada instruksi MOV A, B, jika pada sebelum instruksi tersebut dilakukan isi

register A ad;ah 3C dan isi register B adalah 7F.

Register A B

Data 3C 7F

Flowchart

Program

Alamat

Kode

Operasi Mnemonik

6000 78 MOV A, B

6001 CF RST 1

Maka setelah instruksi MOV A, B dilaksanakan, isi register A = isi register

B = 7F.

Instruksi MOV r, M berfungsi untuk mentransfer data dari lokasi memori

yang alamatnya berada pada pasangan register HL ke suatu register 8 bit. Untuk

memindahkan data dari suatu lokasi memori ke suatu register 8 bit dapat

digunakan instruksi MOV r, M. Alamat memori M ditunjukkan oleh isi pasangan

register HL.

Teknik Telekomunikasi Nir Kabel 9

START

A B

STOP

Page 10: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

Contoh :

Untuk mentransfer data 8 bit dari lokasi memori pada alamat 8000 ke

register B, pertama, isilah register HL dengan 8000 (misalnya dengan instruksi

LXI H, 8000), kemudian susulkan instruksi MOV B, M.

Register HL

Memori 8000

Data 4C

Flowchart

Program

Alamat Kode Operasi Mnemonik

7000 21 00 80 LXI H, 8000

7003 46 MOV B, M

7004 CF RST 1

Setelah instruksi MOV B, M tersebut dilaksanakan, maka isi register B akan

sama dengan isi (data 8 bit) yang berada pada alamat memori 8000 = 4C.

Instruksi MOV M, r merupakan kebalikan dari instruksi MOV r, M.

Instruksi MOV M, r ini akan memindahkan data 8 bit yang berada pada suatu

register ke suatu lokasi memori yang alamatnya ditunjukkan oleh pasangan

register HL.

Teknik Telekomunikasi Nir Kabel 10

START

HL 8000B M

STOP

Page 11: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

Contoh :

Untuk mentransfer data 8 bit dari register D ke lokasi memori dengan

alamat A000, pertama isilah register HL dengan A000 (misalnya dengan instruksi

LXI H, A000), kemudian berikan instruksi MOV M, D.

Register D

Data 7F

Memori A000

Flowchart :

Program :

Alamat Kode Operasi Mnemonik

8000 21 00 A0 LXI H, A000

8003 72 MOV M, D

8004 CF RST 1

Setelah instruksi MOV M, D ini dilaksanakan, maka isi memori alamat

A000 akan sama dengan isi register D = 7F.

Selain instruksi-instruksi “MOVE” seperti tersebut di atas, mikroprosesor

8085 juga mempunyai kelompok instruksi “MOVE IMMEDIATE”, yaitu

instruksi “MVI r, data 8 bit” dan instruksi “MVI M, data 8 bit”.

Contoh :

Instruksi MVI B, 5C akan mengisi register B dengan data 8 bit 5C

(B5C). Instruksi MVI M, 8 bit, digunakan untuk mengisi data 8 bit pada suatu

lokasi memori yang alamatnya ada pada register HL.

Teknik Telekomunikasi Nir Kabel 11

START

LXI H, A000M D

STOP

Page 12: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

Contoh :

Instruksi MVI M, 4F akan mengisi lokasi memori yang alamatnya berada

pada pasangan register HL dengan data 4F (M 4F).

Fungsi Instruksi STA dan LDA

Instruksi “STA alamat” diperguanakan untuk menyimpan data yang

berada pada akumulator (register A) ke dalam unit memori pada lokasi alamat

(4digit heksadesimal dari belakang mnemonik STA).

Contoh :

Instruksi “STA D45F” akan menyimpan isi akumulator ke dalam unit

memori pada alamat D45F. Instruksi “LDA alamat” digunakan untuk

memindahkan data 8 bit dari unit memori lokasi alamat tertentu ke akumulator

(register A).

Teknik Telekomunikasi Nir Kabel 12

START

B 5C

STOP

START

M 4F

STOP

START

[D45F] A

STOP

Page 13: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

Register A

Data 4C

Memori D45F

Contoh :

Instruksi “LDA D888” akan memindahkan data yang berada pada alamat

D888 ke akumulator (register A).

Fungsi instruksi STAX dan LDAX

Instruksi “STAX rp” digunakan untuk menyimpan isi akumulator ke

lokasi memori yang alamatnya ditunjukkan oleh suatu pasangan register (rp).

Contoh :

Instruksi “STAX B” akan menyimpan isi akumulator ke lokasi memori

yang alamatnya ditunjukkan oleh pasangan register BC.

Teknik Telekomunikasi Nir Kabel

Memori D888

Data 7F

Register A

13

START

A [D888]

STOP

START

[BC] A

STOP

Page 14: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

Instruksi “LDAX rp” berfungsi mengisi akumulator dengan data 8 bit dari

lokasi memori yang alamatnya ditunjukkan oleh suatu pasangan register.

Contoh :

Instruksi “LDAX D” akan mengisi akumulator dengan data 8 bit dari

lokasi memori yang alamatnya ditunjukkan oleh pasangan register DE.

1.3.2 Instruksi Aritmatika

Instruksi aritmatika contohnya adalah penjumlahan, penguranagan,

penambahan dengan 1 (increment) dan pengurangan dengan 1 (decrement).

Umumnya perintah penjumlahan dan pengurangan melibatkan register A

(akumulator) dan register prosesor lainnya atau lokasi memori. Operasi

penambahan dengan 1 atau pengurangan dengan satu umumnya dapat dilakukan

dalam berbagai register dan lokasi memori melalui penggunaan mode

pengalamatan yang berbeda. Setiap operasi ini dapat dilakukan dalam beberapa

cara yang berbeda, sehingga pemrograman dapat menyesuaiakan perintah yang

digunakan pada aplikasi tertentu.

Mikroprosesor terdiri atas sejumlah bit status yang disebut bendera atau flag.

Bendera di set atau di reset tergantung pada hasil perintah tertentu.Pemrogram

dapat menggunakan bendera untuk membantu pengolahan data.

Teknik Telekomunikasi Nir Kabel 14

START

A [rp]

STOP

START

A [DE]

STOP

Page 15: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

Pada bagian ini terdapat berbagai intruksi aritmatika diantaranya : ADD, ADI,

ADC, ACI, SUB, SUI, SBB, SBI, INR, DCR, INX, DCX, DAD dan DAA.

Intruksi ADD dan SUB

Intruksi ADD dipergunakan untuk melakukan operasi penjumlahan 8 bit.

Pada operasi tersebut , isi register A (akumulator) akan ditambahkan dengan isi

register 8 bit atau isi lokasi memori yang alamatnya ditunjukan oleh pasangan

register HL.

Contoh : ADD B

Perintah ini menyebabkan isi register B ditambahkan ke isi register A

(akumulator). Hasil penjumlahan akan disimpan dalam register A (akumulator.

Register B tidak berubah sehingga :

A ← A + B

Setelah perintah ADD, bit flag akan berubah sebagai berikut :

S → menyala jika hasilnya negative (MSB dari A = 1)

Z → menyala jika hasilnya nol (A semuanya nol)

AC → menyala jika sisa dihasilkan dari bit 3 (untuk pemakaian BCD)

CY → menyala jika sisa dihasilkan dari bit 7 (sisa keluar MSB)

P → menyala jika hasil merupakan paritas genap

Tabel dibawah menunjukan contoh lain penggunaan intruksi ADD pada register

yang lain :

Mnemonik Symbol operasi

ADD A A ← A + A

ADD B A ← A + B

ADD C A ← A + C

ADD D A ← A + D

ADD E A ← A + E

ADD H A ← A + H

ADD L A ← A + L

ADD M A ← A + M atau A ← A + HL

Teknik Telekomunikasi Nir Kabel 15

Page 16: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

Intruksi SUB dipergunakan untuk melakukan operasi pengurangan 8

bit.Pada operasi tersebut, isi register A (akumulator) akan dikurangi dengan isi

register 8 bit, atau isi lokasi memori yang alamatnya ditunjukan oleh pasangan

register HL.

Contoh:

SUB C

Intruksi tersebut menyebabkan isi dari register A (akumulator) dikurangi oleh isi

dari register C. Hasil pengurangan akan disimpan di register A (akumulator).

A ← A - C

Contoh-contoh yang lain dapat dilihat pada table berikut :

Mnemonik Symbol operasi

SUB A A ← A – A

SUB B A ← A – B

SUB C A ← A – C

SUB D A ← A – D

SUB E A ← A – E

SUB H A ← A – H

SUB L A ← A – L

SUB M A ← A – M

Intruksi ADI dan SUI

Instruksi ADI dipergunakan untuk menambahkan isi register A (akumulator)

dengan data 8 bit secara langsung (immediate data).

Contoh :

ADI 2Fh

Disini 2Fditambahkan ke isi register A (akumulator). Hasilnya disimpan di

register A (akumulator) dan semua flag dapat berubah.

A ← A + 2Fh

Intruksi SUI dipergunakan dipergunakan untuk mengurangkan isi register A

(akumulator) dengan data 8 bit secara langsung (immediate data).

Contoh :

Teknik Telekomunikasi Nir Kabel 16

Page 17: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

SUI 5Ch

Disini 5C mengurangi isi register A (akumulator). Hasilnya disimpan di register A

(akumulator) dan semua flag dapat berubah.

A ← A – 5C

Jika hasil penjumlahan atau hasil pengurangan lebih besar dari 7Fh (+12 desimal)

atau lebih kecil dari 80h (-128 desimal), maka carry/borrow bit akan set (Cy = 1)

Intruksi ADC dan SBB

Instruksi ADC dipergunakan untuk menambah isi register dengan data 8 bit

dan mengikutsertakan carry BIT (Cy) dari operasi sebelumnya. Data 8 bit tersebut

dapat diambil dari suatu register atau suatu lokasi memori yang alamatnya

ditunjukan oleh register HL.

Contoh :

ADC M

Isi lokasi memori yang ditunjukan oleh pasangan HL, dijumlahkan ke register A

(akumulator), dan bit sisa ditambahkan k eke LSB hasil jumlahnya. Hasil

penjumlahan disimpan di register A, dan semua bendera dipengaruhi.

A ← A + (HL) +Cy

Contoh penjumlahan bilangan 24 bit (tiga byte). Masing-masing bilangan akan

memerlukan tiga lokasi memori dan total operasi penjumlahan akan memerlukan

tiga penjumlahan 8 bit terpisah, seperti diperlihatkan dalam gambar berikut :

Teknik Telekomunikasi Nir Kabel 17

Page 18: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

Contoh lain penggunaan instruksi ADC pada berbagai register ditunjukan dalam

table di bawah ini:

Mnemonik Simbol operasi

ADC A A ← A + A +Cy

ADC B A ← A + B +Cy

ADC C A ← A + C +Cy

ADC D A ← A + D +Cy

ADC E A ← A + E +Cy

ADC H A ← A + H +Cy

ADC L A ← A + L +Cy

ADC M A ← A + (HL) +Cy

Instruksi SBB berfungsi untuk mengurangi isi register A dengandata 8 bit

dan mengikutsertakan Borrow bit (Cy) dari operasi sebelumnya. Data 8 bit

tersebut dapat diambil dari suatu register atau suatu lokasi memori yang

alametnya ditunjukan oleh register HL.

Contoh: SBB D

Menyebabkan : A ← A – D – Cy

Contoh lainnya ditunjukan dalam tabel di bawah:

Mnemonik Simbol operasi

SBB A A ← A – A – Cy

SBB B A ← A – B – Cy

SBB C A ← A – C – Cy

SBB D A ← A – D – Cy

SBB E A ← A – E – Cy

SBB H A ← A – H – Cy

SBB L A ← A – L – Cy

SBB M A ← A – (HL) – Cy

Teknik Telekomunikasi Nir Kabel 18

Page 19: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

Instruksi ACI dan SBI

Instruksi ACI berfungsi untuk menambah isi register A dengan data 8 bit

secara langsung (immediate data) dan mengikutsertakan carry bit (Cy) dari

operasi sebelumnya.

Contoh:

ACI 4Ch

Menyebabkan isi register A (akumulator) akan ditambah 4Ch dan carry.

A ← A + 4Ch + Cy

Instruksi SBI berfungsi untuk mengurangi isi register A dengan data 8 bit

langsung (immediate data) dan mengikutsertakan Borrow bit (Cy) dari operasi

sebelumnya.

Contoh :

SBI 3Dh

Menyebabkan isi register A dikurangi dengan data 3D dan Borrow.

A ← A – 3D - Cy

Instruksi ADD, ADI, ADC, SUB, SBI, SUI dan SBB akan mempengaruhi regidter

flag (S, Z, AC, P, dan Cy).

Instruksi INR dan INX

Perintah penambahan 1 sebenarnya hanya menambahkan isi suatu lokasi

(register atau memori) dengan 1. Untuk 8085 da 2 perintah yaitu INR dan INX.

Semua flag kecuali Cy (sisa) dipengaruhi oleh perintah INR dan tidak ada bendera

yang dipengaruhi oleh perintah INX.

INR dipergunakan untuk menambah (menaikan) dengan 1 isi dari suatu

register 8 bit atau lokasi memori yang alamatnya ditunjukan oleh regidter HL.

Contoh :

INR B

Perintah ini menyebabkan isi register B ditambah dengan satu, atau :

B ← B + 1

Teknik Telekomunikasi Nir Kabel 19

Page 20: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

Contoh lain diperlihatkan pada tabel di bawah ini :

Mnemonik Simbol operasi

INR A A ← A + 1

INR B B ← B + 1

INR C C ← C + 1

INR D D ← D + 1

INR E E ← E + 1

INR H H ← H + 1

INR L L ← L + 1

INR M (HL) ← (HL) + 1

INX dipergunakan untuk menambah dengan 1 isi suatu pasangan register

(16 bit register).

Contoh :

INX D

Menyebabkan isi pasangan register DE ditambah dengan 1.

DE ← DE + 1

Contoh lain ditunjukan dalam tabel dibawah ini :

Mnemonik Simbol Operasi

INX B BC ← BC + 1

INX D DE ← DE + 1

INX H HL ← HL + 1

INX SP SP ← SP + 1

Instruksi DCR dan DCX

DCR dipergunakan untuk mengurangi dengan 1 isi dari suatu register 8 bit

atau suatu lokasi memori yang alamatnya ditunjukan oleh register HL.

Contoh : DCR C

Menyebabkan isi register C dikurangi dengan 1 atau :

C← C – 1

Teknik Telekomunikasi Nir Kabel 20

Page 21: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

Contoh lain ditunjukan dalan tabel dibawah ini :

Mnemonik Simbol operasi

DCR A A ← A - 1

DCR B B ← B - 1

DCR C C ← C - 1

DCR D D ← D - 1

DCR E E ← E - 1

DCR H H ← H - 1

DCR L L ← L -1

DCR M (HL) ← (HL) - 1

DCX dipergunakan untuk mengurangi dengan 1 isi suatu pasangan register

(16 bit register).

Contoh :

DCX H

Menyebabkan isi pasangan register HL dikurangi dengan 1, atau :

HL ← HL - 1

Contoh lain dapat dilihat pada tabel di bawah ini :

Mnemonik Simbol Operasi

DCX B BC ← BC - 1

DCX D DE ← DE - 1

DCX H HL ← HL - 1

DCX SP SP ← SP - 1

Instruksi INR dan DCR akan mempengaruhi atau mengubah bit – bit dari register

flag seperti S, Z dan AC tetapi tidak mempengaruhi bit Cy. Instruksi INX dan

DCX tidak mempengaruhi bit – bit dari register flag.

Instruksi DAD

Instruksi DAD dipergunakan untuk menambahkan isi pasangan register HL

dengan isi suatu pasangan register pada operasi penjumlahan16 bit.

Contoh :

Teknik Telekomunikasi Nir Kabel 21

Page 22: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

DAD D

Menyebabkan isi pasangan register HL ditambahkan dengan pasangan register

DE.

HL ← HL + DE

Contoh lain dapat dilihat pada tabel di bwah :

Mnemonik Simbol Operasi

DAD B HL ← HL + BC

DAD D HL ← HL + DE

DAD H HL ← HL + HL

DAD SP HL ← HL + SP

Instruksi DAD akan mempengaruhi bit Cy dari register flag.

1.3.3 Instruksi Geser

Instruksi-instruksi geser digunakan untuk menggeser isi register A.

Instruksi-instruksi geser hanya mempengaruhi Carry flag (CY). Instruksi-instruksi

geser terbagi menjadi :

1). RAR ( Rotate A Right through carry )

RAR adalah instruksi yang digunakan untuk menggeser isi register A ke

kanan melalui carry flag. LSB dari data yang berada pada register A akan mengisi

carry flag, sedangkan isi carry flag sebelumnya pindah menjadi MSB.

Contoh :

Sebelum instruksi RAR

Isi register A = 10001111(2) = 8F(16)

Carry flag = 0

Setelah instruksi RAR

Teknik Telekomunikasi Nir Kabel 22

Page 23: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

Isi register A = 01000111(2) = 47(16)

Carry flag = 1

2). RAL ( Rotate A Left through carry )

RAL adalah instruksi yang digunakan untuk menggeser isi register A ke kiri

melalui carry flag. MSB dari data yng berada pada register A akan mengisi carry

flag, sedangkan isi carry flag sebelumnya pindah menjadi LSB.

Contoh :

Sebelum instruksi RAL

Isi register A = 10001111(2) = 8F(16)

Carry flag = 0

Setelah instruksi RAL

Isi register A = 00011110(2) = 1E(16)

Carry flag = 1

3). RRC ( Rotate A Right )

RRC adalah instruksi yang digunakan untuk menggeser isi register A ke

kanan. LSB akan mengisi MSB dan juga akan mengisi carry flag, sedangkan data

sebelumnya yang ada di carry flag akan hilang.

Cy

Teknik Telekomunikasi Nir Kabel 23

Page 24: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

Contoh :

Sebelum instruksi RRC

Isi register A = 10001111(2) = 8F(16)

Carry flag = 0

Setelah instruksi RRC

Isi register A = 11000111(2) = C7(16)

Carry flag = 1

4). RLC ( Rotate A Left )

RLC adalah instruksi yang digunakan untuk menggeser isi register A ke kiri

MSB akan mengisi LSB dan juga akan mengisi carry flag, sedangkan data

sebelumnya yang ada di carry flag akan hilang.

Cy

Contoh :

Sebelum instruksi RLC

Isi register A = 10001111(2) = 8F(16)

Carry flag = 0

Setelah instruksi RLC

Isi register A = 00011111(2) = 1F(16)

Carry flag = 1

Teknik Telekomunikasi Nir Kabel 24

Page 25: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

1.3.4 Instruksi Logika

1). Instruksi Logika AND

Instruksi logika and terbagi menjadi 3 :

1. ANA M ( And Memory with A )

ANA M adalah instruksi yang digunakan untuk melakukan operasi logika

and antara isi register A dengan memori. Kemudian hasil operasi disimpan secara

otomatis di register A.

Contoh :

Sebelum instruksi ANA M

Isi register A = 10101110(2) = AE(16)

Isi memori alamat 7000 = 01101100(2) = 6C(16)

Setelah instruksi ANA M

Isi register A = 00101100(2) = 2C(16)

2. ANA R ( And Register with A )

ANA R adalah instruksi yang digunakan untuk melakukan operasi logika

and antara isi register A dengan isi suatu register lain. Kemudian hasil operasi

disimpan secara otomatis di register A.

Contoh :

Sebelum instruksi ANA R

Isi register A = 01011000(2) = 58(16)

Isi register B = 10010011(2) = 93(16)

Setelah instruksi ANA R

Isi register A = 00010000(2) = 10(16)

3. ANI ( And Immediate with A )

ANI adalah instruksi yang digunakan untuk melakukan operasi logika and

antara isi register A dengan konstanta. Kemudian hasil operasi disimpan secara

otomatis di register A.

Teknik Telekomunikasi Nir Kabel 25

Page 26: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

Contoh :

Sebelum instruksi ANI

Isi register A = 01110010(2) = 72(16)

Konstanta = 10011001(2) = 99(16)

Setelah instruksi ANI

Isi register A = 00010000(2) = 10(16)

Instruksi logika AND mempengaruhi isi register flag, yaitu Zero flag (Z),

Sign flag (S), Parity flag (P), Carry flag selalu dalam kondisi reset (CY = 0) dan

Auxiliary Carry selalu dalam kondisi set (AC = 1).

2). Instruksi Logika OR

Instruksi logika or terbagi menjadi 3 :

1. ORA M ( Or Memory with A )

ORA M adalah instruksi yang digunakan untuk melakukan operasi logika or

antara isi register A dengan memori. Kemudian hasil operasi disimpan secara

otomatis di register A.

Contoh :

Sebelum instruksi ORA M

Isi register A = 10101110(2) = AE(16)

Isi memori alamat 8000 = 01101100(2) = 6C(16)

Setelah instruksi ORA M

Isi register A = 11101110(2) = EE(16)

2. ORA R ( Or Register with A )

ORA R adalah instruksi yang digunakan untuk melakukan operasi logika or

antara isi register A dengan isi suatu register lain. Kemudian hasil operasi

disimpan secara otomatis di register A.

Contoh :

Teknik Telekomunikasi Nir Kabel 26

Page 27: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

Sebelum instruksi ORA R

Isi register A = 01011000(2) = 58(16)

Isi register D = 10010011(2) = 93(16)

Setelah instruksi ORA R

Isi register A = 11011011(2) = DB(16)

3. ORI ( Or Immediate with A )

ORI adalah instruksi yang digunakan untuk melakukan operasi logika or

antara isi register A dengan konstanta. Kemudian hasil operasi disimpan secara

otomatis di register A.

Contoh :

Sebelum instruksi ORI

Isi register A = 01110010(2) = 72(16)

Konstanta = 10011001(2) = 99(16)

Setelah instruksi ORI

Isi register A = 11111011(2) = FB(16)

Instruksi logika OR mempengaruhi isi register flag, yaitu Zero flag (Z), Sign

flag (S), Parity flag (P), Carry flag selalu dalam kondisi reset (CY = 0) dan

Auxiliary Carry selalu dalam kondisi reset (AC = 0).

3). Instruksi Logika Exclusive OR

Instruksi logika exclusive or terbagi menjadi 3 :

1. XRA M ( Exclusive Or Memory with A )

XRA M adalah instruksi yang digunakan untuk melakukan operasi logika

exclusive or antara isi register A dengan memori. Kemudian hasil operasi

disimpan secara otomatis di register A.

Teknik Telekomunikasi Nir Kabel 27

Page 28: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

Contoh :

Sebelum instruksi XRA M

Isi register A = 10101110(2) = AE(16)

Isi memori alamat 9000 = 01101100(2) = 6C(16)

Setelah instruksi XRA M

Isi register A = 11000010(2) = C2(16)

2. XRA R ( Exclusive Or Register with A )

XRA R adalah instruksi yang digunakan untuk melakukan operasi logika

exclusive or antara isi register A dengan isi suatu register lain. Kemudian hasil

operasi disimpan secara otomatis di register A.

Contoh :

Sebelum instruksi XRA R

Isi register A = 01011000(2) = 58(16)

Isi register C = 10010011(2) = 93(16)

Setelah instruksi XRA R

Isi register A = 11001011(2) = CB(16)

3. XRI ( Exclusive Or Immediate with A )

XRI adalah instruksi yang digunakan untuk melakukan operasi logika

exclusive or antara isi register A dengan konstanta. Kemudian hasil operasi

disimpan secara otomatis di register A.

Contoh :

Sebelum instruksi XRI

Isi register A = 01110010(2) = 72(16)

Konstanta = 10011001(2) = 99(16)

Setelah instruksi XRI

Isi register A = 11101011(2) = EB(16)

Teknik Telekomunikasi Nir Kabel 28

Page 29: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

Instruksi logika Exclusive Or mempengaruhi isi register flag, yaitu Zero flag

(Z), Sign flag (S), Parity flag (P), Carry flag selalu dalam kondisi reset (CY = 0)

dan Auxiliary Carry selalu dalam kondisi reset (AC = 0).

1.3.5 Instruksi Percabangan

Pada mikroprosesor 8085 terdapat instruksi pencabangan, yang digunakan

apabila kita ingin melakukan perintah yang sama berulang kali. Proses tersebut

dinamakan proses ‘loop’, caranya adalah dengan menguji salah satu bit yang

terdapat pada register flag. Apabila ingin menguji atau memeriksa salah satu bit

pada register flag, maka sebelumnya terlebih dahulu harus diberikan instruksi

yang akan mempengaruhi isi dari register flag.

Instruksi pencabangan dibagi menjadi dua, yaitu :

Pencabangan bersyarat (conditional) → Perintah : JC, JNC, JZ, JNZ, JP,

JM, JPE, JPO.

Pencabangan tidak bersyarat → Perintah : JMP (jump) dan CALL.

1). JC (Jump if Carry Set)

Perintah ini digunakan apabila kita ingin menguji carry bit. Jika carry bit

berlogika “1”, maka program akan melompat ke alamat yang ditulis pada perintah

“JC addr”.

2). JNC (Jump if Carry Not Set)

Perintah ini digunakan apabila kita ingin menguji carry bit. Jika carry bit

berlogika “0”, maka program akan melompat ke alamat yang ditulis pada perintah

“JNC addr”.

3). JM (Jump if Minus)

Perintah ini digunakan apabila kita ingin menguji sign bit. Program akan

melompat pada alamat tertentu apabila sign bit berlogika “1”. Contohnya : JM

8005h (apabila sign bit berlogika “1” maka program akan melompat ke alamat

Teknik Telekomunikasi Nir Kabel 29

Page 30: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

8005h, sedangkan apabila sign bit berlogika “0” maka program akan berlanjut ke

alamat di bawah perintah JM.

4). JP (Jump if plus)

Perintah ini digunakan apabila kita ingin menguji sign bit. Jika sign bit

berlogika “0’, maka program akan melompat ke alamat yang ditulis setelah

perintah JP.

5). JZ (Jump if Zero)

Perintah ini digunakan apabila kita ingin menguji zero bit. Jika zero bit

berlogika “1” maka program akan melompat ke alamat yang ditulis setelah

perintah JZ.

6). JNZ (Jump if not zero)

Perintah ini digunakan apabila kita ingin menguji zero bit. Jika zero bit

berlogika “0’ maka program akan melompat ke alamat yang ditulis setelah

perintah JNZ.

7). JPE (Jump if Even Parity)

Perintah ini digunakan apabila kita ingin menguji parity bit. Jika parity bit

berlogika “1”, artinya jumlah logika satu dari suatu data hasil operasi yang

mempengaruhi register flag berjumlah genap, maka program akan melompat ke

alamat yang ditulis setelah perintah JPE.

8). JPO (Jump if Parity Odd)

Perintah ini digunakan apabila kita ingin menguji parity bit. Jika parity bit

berlogika “0”, artinya jumlah logika satu dari suatu data hasil operasi yang

mempengaruhi register flag berjumlah ganjil, maka program akan melompat ke

alamat yang ditulis setelah perintah JPO.

Teknik Telekomunikasi Nir Kabel 30

Page 31: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

9). JMP (Jump)

Perintah ini digunakan apabila kita ingin melompat ke alamat tertentu, akan

tetapi tanpa melibatkan proses pengujian terhadap bit-bit yang terdapat pada

register flag. Oleh karena itu, perintah jump dimasukkan ke dalam perintah

pencabangan tak bersyarat.

10). CALL

Perintah ini digunakan apabila kita ingin menggunakan suatu subrutin.

Contohnya CALL 8000h, apabila perintah ini dilakukan maka program akan

melompat ke suatu subrutin yang alamatnya 8000h, dan setelah subrutin selesai

digunakan maka program akan kembali ke alamat di bawah alamat yang berisi

CALL 8000h. Apabila perintah CALL 8000h ditulis pada alamat 9000h maka

setelah subrutin digunakan, program akan kembali ke alamat 9001h.

PROGRAM UTAMA

SUBRUTIN

Teknik Telekomunikasi Nir Kabel 31

LXI H,B204..

CALL 9000MOV A,B

LXI B,B204..

MOV B,CRET

Page 32: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

Contoh Program :

1) Buat diagram alir dan program untuk mencari bilangan ganjil terkecil yang

ada pada blok memori alamat B204h s/d B23Ch. Simpan hasil pencarian pada

register B. Tempatkan program mulai alamat 8000h.

Flowchart Program

Alamat Op-code Label Mnemonik

8000 21 04 B2 LXI H,B204

8003 06 FF MVI B,FF

8005 7E L1 MOV A,M

8006 4F MOV C,A

8007 E6 01 ANI 01

8009 CA 12 80 JZ L2

800C 79 MOV A,C

800D B8 CMP B

899E D2 12 80 JNC L2

8011 47 MOV B,A

8012 2C L2 INR L

8013 7D MOV A,L

8014 FE 3D CPI 3D

8016 CA 05 80 JZ L1

8017 CF RST 01

Teknik Telekomunikasi Nir Kabel 32

START

HL← B204 B ← FF

A ←M C ← A A ←A Λ 01

Z=1

A ← C A ÷ B

Cy=0

B ← A

L ← L + 1 A ← L A ÷ 3D

STOP

Z=1

Page 33: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

2) Buat bagan alir dan program untuk mendeteksi kesalahan pariti dari data

input yang disimpan pada blok memori I. Asumsikan data tersebut sebagai

data hasil pengiriman dari pihak lain dan telah dilengkapi dengan bit parity

untuk sistem pariti genap.Simpan hasilnya pada blok memori II dengan

mengisi data 00h untuk data yang benar dan mengisi data FFh untuk data

yang salah. Alamat blok memori I =A000h s/d A00Fh, dan alamat blok

memori II = B000h s/d B00Fh, serta alamat program mulai dari alamat

8000h.

Flowchart Program

Teknik Telekomunikasi Nir Kabel

Alamat Op-code Label Mnemonik

8000 21 0F A0 LXI H,A00F

8003 7E L1 MOV A,M

8004 C6 00 ADI 00

8006 3E 00 MVI A,00

8008 EA 0D 80 JPE L2

800B 3E FF MVI A,FF

800D 26 B0 L2 MVI H,B0

800F 77 MOV M,A

8010 26 A0 MVI H,A0

8012 2D DCR L

8013 F2 03 80 JP L1

8016 CF RST 1

33

START

HL← A00F

A ←M A ← A + 00 A ←00

S=0

A← FF

H ← B0 M ← A

H ← A0 L ← L - 1

STOP

P=1

Page 34: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

1.3.5 Instruksi IN dan OUT

Instruksi IN dan OUT berfungsi untuk mengatur lalu lintas dengan peralatan

I/O. Dalam instruksi OUT, sumber selalu accumulator. Dalam instruksi IN, tujuan

adalah accumulator. Di belakang kode operasi IN dan OUT kita hanya perlu

mencantumkan nomor pintu (gate number) saja, yaitu alamatnya peralatan I/O

(kemana data harus dibawa atau dari mana data harus diambil).

Di dalam mikroprosesor 8085, alamat I/O port adalah 51H dan 50H. Untuk

alamat saklar 8 bit adalah 51H (alamat port dihubungkan ke saklar). Sedangkan

alamat LED 8 bit adalah 50H (alamat port 50 dihubungkan dengan LED).

Contoh :

1. Buatlah diagram alir dan program untuk mengaktifkan 8 bit LED secara

bergantian mulai dari posisi MSB sampai ke LSB dengan selang waktu 1

detik.

~ Flowchart

Teknik Telekomunikasi Nir Kabel 34

Page 35: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

~ Program

Alamat Op-Code Label Mnemonik

8000 3E 80   MVI A,80

8002 D3 50 L1 OUT 50

8004 11 E8 03   LXI D,03E8

8007 CD FA 0F   CALL FFA

800A 0F   RRC

800B D2 02 80   JNC L1

800E 3E 00   MVI A,00

8010 D3 50   OUT 50

8012 CF   RST 1

1.4 Sistem Bilangan

Teknik Telekomunikasi Nir Kabel 35

Page 36: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

Dalam mempelajari sistem bilangan dalam digital, kita tidak mengenal

adanya bilangan negatif. Oleh karena itu, kita harus merubah bilangan negatif ke

sebuah sistem bilangan. Sistem bilangan ini menggunakan sign bit yang

berfungsi menunjukkan bilangan itu positif atau negatif. Jika positif sign bit

berlogik 1.

Sistem-sistem bilangan itu adalah

1. SBN

2. Komplemen 1

3. Komplemen 2

4. Komplemen 9

5. Komplemen 10

6. Komplemen 15

7. Komplemen 16

1). SBN

SBN termasuk bilangan biner murni. Bedanya dengan komplemen 1 dan

komplemen 2 adalah pemberian bit tambahan pada MSB yang disebut sign bit

pada SBN.. Fungsinya adalah membedakan bilangan itu positif atau negatif. Jika

suatu biner bernilai negatif, maka sign bit bernilai logik 1.

2). Komplemen 1

K’1 dan K’2 merupakan bilangan biner murni yang hanya terdiri dari 2

kondisi 0 (mati) dan 1 (hidup). Jika suatu bilangan biner bernilai negati, maka

nilai-nilai logik pada bilangan tersebut menjadi bernilai logik kebalikannya. Logik

0 menjadi 1 dan logik 1 menjadi 0.

Contoh :

Biner = - 01001011

SBN = 1 01001011

K’1 = 1 10110100

3). Komplemen 2

K’2 hampir mirip seperti K’1, hanya saja ditambahkan 1 pada LSB-nya.

Persamaan K’2 :

K’2 = K’1 + 1.

K’1 = K’2 - 1

Teknik Telekomunikasi Nir Kabel 36

Page 37: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

Contoh :

Biner = - 001010111

SBN = 1 001010111

K’1 = 1 110101001

4). Komplemen 9

K’9 dan K’10 merupakan bilangan basis 10 atau yang kita kenal sebagai

bilangan desimal. Jika sign bit suatu bilangan desimal 1 (bernilai negatif), maka

nilai K’9-nya adalah hasil pengurangan dengan angka 9 pada setiap bit (angka)

bilangan desimal itu.

Persamaan K’9 :

Desimal Murni Komplemen 9

0 9

1 8

2 7

3 6

4 5

5 4

6 3

7 2

8 1

9 0

Contoh :

Desimal murni = 842952

K’9 = 157047

5). Komplemen 10

Cara mencari nilai K’10 hampir sama seperti mencari K’9. K’10 didapatkan

dari hasil penjumlahan K’9 dengan 1 pada LSB-nya.

Persamaan K’10 :

K’10 = K’9 + 1

K’9 = K’10 - 1

Contoh :

Teknik Telekomunikasi Nir Kabel 37

Page 38: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

Desimal murni = 78529

K’9 = 21470

K’10 = 21471

6). Komplemen 15

K’15 dan K’16 merupakan bilangan yang berbasis 16. Komplemen dari

suatu bilangan heksadesimal adalah pasangan dari bilangan heksa yang jika

dijumlahkan bernilai f (15 desimal).

Persamaan K’9 :

Heksadesimal K’9 Heksadesimal K’9

0 F 8 7

1 E 9 6

2 D A 5

3 C B 4

4 B C 3

5 A D 2

6 9 E 1

7 8 F 0

Contoh :

Heksadesimal = A742B

K’9 = 58BD4

7). Komplemen 16

K’9 dapat dicari dengan menambah 1 pada LSB bilangan tersebut.

Persamaan K’16

K’16= K’15 + 1

K’15 = K’16 – 1

Contoh :

Heksadesimal = 2B930

K’15 = D46CF

Teknik Telekomunikasi Nir Kabel 38

Page 39: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

BAB 2

PROGRAM DAN APLIKASI

MIKROPROSESOR

2.1 OPERASI ARITMATIKA

2.1.1 Penjumlahan

Contoh pemrogramannya :

1. Buatlah program Penjumlahan 2 bilangan BCD 2 Decade (00-99)

Bilangan 1 ada di Reg B.

Teknik Telekomunikasi Nir Kabel 39

Page 40: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

Bilangan 2 ada di Reg C

Simpan hasil penjumlahan pada reg HL?

Jawab:

Cat : Karena pada mikroprosesor melakukan operasi baik penjumlahan

maupun pengurangan dalam system komplemen dua. Sehingga

Teknik Telekomunikasi Nir Kabel

OP - CODE MNEMONIC SIMBOL OPERASI

2600 MVI H,00 H 00

68 MOV L,B L B

7D MOV A,L A L

81 ADD C A A + C

27 DAA A BCD

6F MOV L,A L A

7C MOV A,H A H

CE00 ACI 00 A A + 00 + Cy

27 DAA A BCD

67 MOV H,A H A

CF RST 1 STOP

40

START

H 00L B

A LA A + CA BCDL AA HA A + 00 + CyA BCDH A

STOP

Page 41: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

mikroprosesor 8085 menyediakan instruksi DAA yang memberikan

factor koreksi pada saat kita bekerja dengan menggunakan data

decimal (BCD), sedangkan pada heksadesimal tidak perlu

menggunakan factor koreksi.

2. Sama dengan soal no 1 tapi penjumlahannya bilangan Hexadecimal (00-FF).

Jawab :

Sama hanya tinggal buang faktor koreksi bilangan BCD (DAA).

5. Buatlah diagram alir dan program untuk menambahkan 2 data 16 bit yang

berada pada register BC dan DE. Simpan hasil penjumlahan pada reg HL.

Teknik Telekomunikasi Nir Kabel

OP - CODE MNEMONIC SIMBOL OPERASI

2600 MVI H,00 H 00

68 MOV L,B L B

7D MOV A,L A L

81 ADD C A A + C

6F MOV L,A L A

7C MOV A,H A H

CE00 ACI 00 A A + 00 + Cy

67 MOV H,A H A

CF RST 1 STOP

41

START

H 00L B

A LA A + CL AA HA A + 00 + CyH A

STOP

Page 42: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

2.1.2 Pengurangan

1). Buatlah diagram alir dan program untuk mengurangkan data yang ada pada

reg B dan reg C (BCD dan heksadesimal) simpan hasilnya pada reg D.

Heksadesimal BCD

Cat : Karena dalam INTEL 8085 tidak ada program pengurangan secara

langsung, maka datnya harus diubah. Pada BCD, nilainya dijadikan

Teknik Telekomunikasi Nir Kabel 42

MNEMONICSMOV A,CADD EDAAMOV L,AMOV A,BADC DDAAMOV H,ARST 1

Page 43: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

dalam K’9, kemudian baru dikurangkan dengan Reg yang diinginkan

setelah itu jadikan K’10 dengan cara menambahkan dengan 01.dan

tifak lupa menggunakan factor koreksi. Sedangkan pada data

heksadesimal nilainya dijadikan dalam K’15.

2). Buatlah diagram alir dan program untuk mendapatkan perhitungan

berdasarkan persamaan aritmatika sbb :

Diagram alir

Teknik Telekomunikasi Nir Kabel 43

A = B + C – D – E + H

MNEMONICSMVI A, 99SUB DADI 01DAAADD BDAAMOV L, AMVI A, 99SUB EADI 01DAAADD CDAAADD HDAAADD LDAARST 1

Page 44: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

2.1.3 Perkalian

1). Buatlah diagram alir dan program untuk perkalian 2 data BCD 2 digit yang

ada pada reg B dan reg C. Hasil kali disimpan pada reg HL dengan metoda

penjumlahan berulang.

Teknik Telekomunikasi Nir Kabel 44

LABEL MNEMONICSLXI HL, 0000MOV A, BCPI 00JZ L2MOV A, CCPI 00JZ L2MOV D, C

L1 MOV A, LADD BDAAMOV L, AMOV A, HADC 00DAAMOV H, AMVI A, 99ADD DDAAMOV D, AJNZ L1

L2 RST 1

Page 45: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

Metoda pergeseran dan penjumlahan

Contoh :

2). Buatlah flowchart dan program untuk mengalikan data berikut :

Data 1

Register B

Data 2

Register C

Hasil kali

Register HL

01 D4 00D4

34 56 1178

FF 10 0FF0

C3 00 0000

FF FF FE01

Flowchart:

Teknik Telekomunikasi Nir Kabel 45

Page 46: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

LXI SP,FFFF

LXI H,0

PUSH B

MVI D,0

MOV E,B

MVI B,08

LUP1 : MOV A,C

RRC

MOV C,A

JNC LUP2

DAD D

LUP2 : XCHG

DAD H

XCHG

DCR B

JNZ LUP1

POP B

RST 1

Pada metoda ini Register C digeser ke kanan, diperiksa per bit mulai bit

yang paling kanan sampai bit yang paling kiri.

Perkalian dengan Metode Pergeseran dan Penjumlahan

Contoh : 14 * 4 = 56 (10)

1110

0100 x

0000

0000

Teknik Telekomunikasi Nir Kabel 46

Page 47: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

1110

0000 +

0111000 = 56 (10)

Metode Penjumlahan

14 * 10 = 140 (10)

reg B 1110

reg C 1010 x

0000

1110

0000

1110 +

10001100 = 140 (10)

Pada metode pergeseran, register pengali yang menjadi acuan. Ada 2

kondisi yang harus dilakukan, yaitu : jika bit 0, geser register B ke kiri sebanyak

satu posisi, jika bit 1, register B tambahkan ke register A yang digunakan sebagai

penyimpan hasil operasi.

Contoh : reg B = 1110

reg C = 1010

reg B1 = 11100

reg B2 = 111000

reg B3 = 1110000

reg A = 0000 11100 +

11100

1110000 +

10001100

Penjelasan penyelesaian :

Nilai LSB yang pertama adalah yang paling kanan bernilai bit 0, maka

geser register B ke kiri sebanyak satu posisi, sehingga didapatkan :

Register B1 = 11100

Nilai LSB yang berikutnya bernilai bit 1, maka tambahkan register B ke register A

yang digunakan untuk menyimpan hasil operasi, maka didapatkan :

Teknik Telekomunikasi Nir Kabel 47

Page 48: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

Register B2 = 11100 Catatan : Isi register A awalnya adalah 0

Nilai bit selanjutnya adalah bit 0, maka isi register B harus di geser ke kiri satu

kali :

Register B3 = 111000

Nilai bit yang terakhir adalah bit 1, geser register B kemudian tambahkan isi

register B yang telah digeser tadi dengan nilai yang telah ada pada register A tadi

sebagai hasil operasi terdahulu, maka didapatkan :

Register B4 = 1110000

Maka didapatkan hasil dari seluruh operasi = 10001100 = 140 (10)

Contoh soal perkalian biner :

Buat diagram alir dan program untuk mengalikan 2 data biner 4 bit yang

berada pada register B dan register C. Simpanlah hasil kali pada register A. (range

data pada register B dan register C = 00H s/d 0FH)

Flowchart :

Teknik Telekomunikasi Nir Kabel

Alamat Op Code Mnemonik

A000 XX XX MVI A, 00

A002 XX XX MVI D, 04

A004 XX XX MOV A, C

A006 XX RRC

A007 XX XX MOV C, A

A009

XX

XXXX JNC A011

A00C XX XX MOV A, E

A00E XX ADD B

A00F XX XX MOV E, A

A011 XX XX MOV A, B

A013 XX ADD A

A014 XX XX MOV B, A

A016 XX DCR D

A017

XX

XXXX JNZ A004

A01A XX XX MOV A, E

A01C CF RST 1

48

START

A 00D 04

A CRRC

C A

A EA A + B

E A

A BA A + A

B A

D D - 1

Z = 0

A E

STOP

Cy = 0

Page 49: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

Penjelasan :

Pada soal diminta program dan “flowchart” untuk mengalikan 2 data biner

4 bit yang berada pada register B dan register C. Hasilnya akan disimpan pada

register A, oleh karena itu isi register A harus dikosongkan terlebih dahulu dengan

instruksi A 00 (MVI A, 00).

Kita membutuhkan satu register tambahan misalkan register D untuk

menampung data biner 4 bit dengan menambahkan instruksi D 04 (MVI D,

04).

Ambil satu data yang berada pada register C yang merupakan faktor

pengalinya, sebagaimana pada teori terdahulu bahwqa faktor pengali digeser ke

kanan untuk mengetahui LSB tersebut memiliki bit 0 atau bit 1. Simpan pada

akumulator dengan instruksi A C (MOV A, C).

Kemudian geser data pada akumulator tersebut untuk mengetahui LSB-nya

bit 0 atau bit 1, dengan memeriksa “carry”-nya, dimana data tersebut digeser ke

Teknik Telekomunikasi Nir Kabel 49

Page 50: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

kanan satu posisi melalui instruksi RRC.

Simpan hasil pergeseran tersebut pada register akumulator kembali dengan

instruksi C A (MOV C, A).

Periksa isi “carry” tersebut, apabila isi “carry” tersebut memiliki bit 1 berarti

operasi dilanjutkan ke instruksi yang ada di bawahnya., dan apabila “carry” = 0,

maka instruksi yang akan dilakukan adalah jump ke alamat A011.

Sebagaimana operasi sebelumnya apabila “carry” = 1 maka operasi

dilanjutkan ke instruksi yang ada di bawahnya, yaitu A E (MOV A, E). Di sini

kita membutuhkan register E untuk menyimpan data sementara.

Tanbahkan data yang ada pada register A dengan data pada register B

dengan instruksi A A + B (ADD B), sebagaimana teori terdahulu bahwa kalau

“carry” = 1, register B tambahkan pada akumulator. Kemudian pindahkan ke

register E kembali E A (MOV E, A)

Pindahkan data pada register B ke akumulator A B (MOV A, B),

kemudian tambahkan kembali dengan isi pada akumulator A A + A (ADD A),

kemudian pindahkan kembali ke register B, B A (MOV B, A).

Turunkan isi register D, karena sudah dipakai sebanyak satu kali D D – 1

(DCR D).

Periksa “zero flag” yang menandakan operasi telah selesai, jika bit “zero

flag” = 0 maka pindahkan isi register E ke akumulator sebagai hasil

pengoperasian sesuai dengan soal yang diminta, jika “zero flag” = 1, “jump” ke

alamat A004 untuk mengulang operasi sampai didapatkan hasil yang benar.

2.1.4 Pembagian

Ada 2 metoda dalam pembagian biner , yaitu :

1. Metoda Pengurangan Berulang

2. Metoda Pergeseran dan Pengulangan

1. Buatlah diagram alir dan program untuk membagi bilangan biner 8

bit yang ada pada register B dengan bilangan biner 8 bit lain yang

ada di registerC.Simpan hasil bagi pada register H dan sisa bagi

pada register L.

Teknik Telekomunikasi Nir Kabel 50

Page 51: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

Metoda Pengurangan Berulang

Buatlah Flowchat dan Program untuk pembagian biner miurni bit berikut :

Yang dibagi

Register B

Pembagi

Register C

Sisa bagi

Register H

Hasil bagi

Register L

0E D4 05 07

A7 04 03 29

DF 12 07 0C

FlowChart

Teknik Telekomunikasi Nir Kabel

LABEL MNEMONICSMVI H, 00MOV L, BMOV A, CCPI 00JZ L2

L1 MOV A,LCMP CJC L2MOV A, LSUB CMOV L, AINR HJNC L1

L2 RST 1

51

Page 52: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

Program

MVI L,00

MOV H,B

LUP1 : MOV A,H

CNP C

JC STP

SUB C

MOV H,A

INR L

JMP LUP1

STP : RST 1

Metoda pergeseran dan pengurangan

Contoh : Buatlah Flowchart dan program untuk pembagian berikut :

Teknik Telekomunikasi Nir Kabel

Yang dibagi

Register B

Pembagi

Rgister C

Sisa bagi

Register B

Hasil bagi

Register L

55 55 00 01

A7 04 03 29

0E D4 05 07

52

Page 53: Isi Buku Mikro Teori

MIKROPROSESOR 8085 SEMESTER 3

LXI SP,FFFF

MVI H,0

MOV L,B

PUSH B

MVI B,08

LUP : DAD H

MOV A,H

CMP C

JC LUP2

INR L

SUB C

MOV B,A

LUP : DCR B

JNZ LUP1

POP B

RST 1

Teknik Telekomunikasi Nir Kabel 53

Page 54: Isi Buku Mikro Teori

Contoh Program

Pengurangan BCD

Buatlah bagan alir dan program untuk pengurangan berikut :

4782 harus diubah ke dalam bentuk komplemen 10 ﴾K’10﴿ yaitu dengan

mengurangkan 9999 dengan 4782 kemudian ditambah 1.

Jadi komplemen dari 4782 adalah 5218. Kemudian untuk mencari hasil

pengurangan yaitu menjumlahkan 8523 dengan 5218.

MVI A,99

SUI 82

MOV L,A

MVI A,99

SUI 47

MOV H,A

MVI A,01

ADD L

DAA

MOV L,A

MVI A,00

ADC H

DAA

MOV H,A

MOV A,L

ADI 23

DAA

MOV L,A

MOV A,H

ACI 83

DAA

MOV H,A

RST 01

Page 55: Isi Buku Mikro Teori

2.2 UNIT MEMORI

Fungsi Program Counter

Register Program Counter (Reg PC) merupakan register 16-bit yang

berfungsi untuk menunjukkan alamat tempat tersimpannya kode operasi yang

akan dieksekusi oleh prosesor. Jadi PC selalui berisikan tempat tersimpannya

kode instruksi berikutnya yang akan dilakukan oleh prosesor. Saat prosesor

sedang melaksanakan instruksi yang pertama, maka pada saat itu PC telah berisi

alamat tempat tersimpannya kode instruksi yang kedua. Pada keluarga prosesor

INTEL 8086 register ini diberi nama Instrucion Pointer (Register IP).

Fungsi Stack Pointer

Register Stack Pointer (Reg SP) merupakan register 16-bit yang berfungsi

untuk menunjukkan alamat tempat tersimpannya “puncak data” dalam stack.

Stack adalah bagian dari unit memori yang digunakan sebagai tempat

penyimpanan data sementara. Data yang disimpan atau diamankan de dalam stack

berasal dari register 16-bit.

Sistem Stack pada mikroprosesor ada dua macam,yaitu:

First In First Out (FIFO)

Last IN First Out (LIFO)

Pada prosesor-prosesor INTEL, sistem stack yang digunakan umumnya

LIFO. Pada siatem stack ini, data yang akan pertama keluar dari stack adalah data

yang masuk terakhir de dalam stack tersebut. Kapasitas data yang masuk maupun

keluar pada sistem stack tersebut adalah 16-bit.

Tentang unit memori pada mikroprosesor 8085

Agar komputer dapat bekerja, diperlukan suatu program untuk

menjalankannya. Program tersebut harus disimpan dengan cara tertentu agar

komputer dapat mengakses setiap perintah secara berurutan. Selain itu juga

diperlukan penyimpanan data selama pelaksanaan program. Jenis memori yang

Page 56: Isi Buku Mikro Teori

digunakan di sini harus “cepat” karena langsung mempengaruhi kecepatan

pelaksanaan program. Karena memori ini menyimpan informasi dengan jumlah

bit yang relative kecil, biay per detik tidak menjadi masalah.

Di sisi lain, seringkali perlu penyimpanan blok informasi berjumlah besar

untuk jangka waktu yang lama. Dalam hal ini diperlukan beberapa jenis

penyimpanan missal yang biaya per bit-nya harus sangat rendah, meskipun harus

dibayar dengan bertambahnya waktu akses.Oleh karena itu, lebih dari satu jenis

memori diperlukan dalam hampir semua penerapan.

Sebelum menggunakan mikroprosesor

8085 ini, kita harus tahu dan mengenal peta

memori yang ada pada sistem tersebut. Dengan

mengenal peta memori tersebut kita dapat

menempatkan program ke alamat yang tepat

yaitu memori yang memang tersedia khusus

untuk pemakai (user).

Untuk melakukan operasi yang

berhubungan dengan mikraprosesor ini, kita

biasa menggunakan semacam

simulator yang sering disebut “trainer

MIDICOM 8085”. Peta memorinya bisa dilihat

seperti gambar berikut:

EPROM 2718

PROGRAM MONITOR

EPROM 2718

UNTUK PERLUASAN

PROGRAM MONITOR

RAM 4464

MEMORI KERJA

MONITOR

RAM 4464

DAERAH KERJA

BASIC

RAM 4464

“USER” RAM

RAM 4464

“USER” RAM

RAM 4464

“USER” RAM

RAM 4464

“USER” RAM

RAM 4464

“USER” RAM

Page 57: Isi Buku Mikro Teori

2.2.1 Interfacing Memory Unit

Contoh :

Merancang suatu rangkaian decoder (dengan 2 cara basic gates dan chip

decoder) untuk menghubungkan processor yang memiliki 16 saluran alamat

dengan unit memori yang memiliki IC memori dengan input chip select ‘active

low’ sebagai berikut :

EPROM1 = 2 KByte

EPROM2 = 2 KByte

RAM1 = 4 KByte

RAM2 = 4 KByte

Page 58: Isi Buku Mikro Teori

a.

Input Output

A13 A12 A11 X3 X2 X1 X0

Y0 0 0 0 1 1 1 0

Y1 0 0 1 1 1 0 1

Y2 0 1 0 1 0 1 1

Y3 0 1 1 1 0 1 1

Y4 1 0 0 0 1 1 1

Y5 1 0 1 0 1 1 1

Y6 1 1 0 d d d d

Y7 1 1 1 d d d d

X0 = A11 + A12 + A11

X1 = A13 + A12 + A11

X2 = A12

X3 = A13

b.

Page 59: Isi Buku Mikro Teori

2.2.2 Operasi Pada Blok Memori

Operasi pada blok memori merupakan operasi yang sering dilakukan

terutama pada program-program yang ditulis dalam bahasa rakitan

(assembly).Operasi ini berkaitan dengan dengan data-data yang berada pada satu

atau lebih blok memori. Program-program yang berhubungan dengan operasi ini

misalnya, mengosongkan blok memori, mengisi blok memori dengan data yang

berurutan, dan membalik urutan data.

Sebenarnya, suatu lokasi memori terdiri dari sejumlah elemen penyimpan

informasi yang biasa disebut flip-flop.Sehingga tidak tepat jika kita akan mengisi

suatu blok memori dengan data 00h dan kita menyebutnya dengan mengosongkan

data. Lokasi memori tidak pernah kosong, tetapi berisi data 00h,artinya output

seluruh flip-flop di lokasi memori tersebut adalah nol.

Untuk lebih menyederhanakan program untuk mengisi suatu blok memori

dengan data-data heksadesimal yamg berurutan digunakan “loop”.Data-data yang

diisikan pada masing-masing lokasi memori umumnya berasal dari suatu register

yang digunakan sebagai penghitung (counter). Register penghitung tersebut mula-

Page 60: Isi Buku Mikro Teori

mula diisi dengan suatu dat awal yang nilainya merupakan nilai data pada alamat

terkecil dari blok memori yang digunakan. Isi register penghitung tersebut akan

dipindahkan pada lokasi memori pertama dalam blok memori. Kemudian isi

register penghitung dinaikkan dan diisikan pada lokasi memori berikutnya.

Begitulah langkah-langkah tersebut terus diulang sampai seluruh lokasi memori

terisi semua.

Bila kita ingin mengisi suatu blok memori dengan data-data desimal yang

berurutan caranya sama dengan mengisi blok memori dengan data-data

heksadesimal seperti diatas, hanya perlu menambahkan faktor koreksi agar

penghitung selalu menjadi data BCD (decimal) yaitu dengan menuliskan instruksi

DAA.

Program lain yang sering digunakan pada operasi blok memori adalah

membalik urutan suatu data blok memori, artinya data yang ada pada alamat

terkecil suatu blok memori ditukarkan dengan data yang ada pada alamat terbesar

suatu blok memori. Lalu data kedua dari memori bagian atas ditukar dengan data

kedua dari blok memori bagian bawah. Begitulah seterusnya hingga semua data

pada suatu blok memori terbalikl urutannya.Untuk lebih jelasnya lihat gambar :

Data 1

Data 2

Data 3

Data 4

Data 5

Data 5

Data 4

Data 3

Data 4

Data 5

Page 61: Isi Buku Mikro Teori

data sebelum dieksekusi data sesudah dieksekusi

Berikut ini akan diberikan beberapa contoh soal dan penyelesaiannya untuk

lebih memahami tentang operasi blok memori ini.

Contoh 1 : (tentang pengosongan / mengisi suatu blok memori dengan data 00h )

Buatlah diagram alir dan program untuk mengisi suatu blok memori dengan

dat 00h mulai alamat A000h sampai A000h ,dan tulis program saudara mulai

alamat 1000h.

Jawaab

Flowchart :

Program :

ALAMAT KODE OPERASI LABEL MNEMONIK

7000h 3E 00 A←00h MVI A,00h

7002h 21 00 A0 HL←A000h LXI H,A000h

7005h 0E 00 C←C-1 MVI C,00h

7107h 77 M←A MOV M,A

Page 62: Isi Buku Mikro Teori

7008h 23 HL←HL +1 INX H

7009h 0D C←C-1 DCR C

700Ah C2 07 70 Z=0 JNZ 7007

700Dh CF STOP RST 1

Contoh 2 : ( mengisi blok memori dengan data heksadesimal )

Buatlah bagan alir dan program untuk mengisi suatu blok memori dengan

alamat A100h dengan data heksadesimal secara berurutan mulai 00h s.d. 0Fh,

tulis program mulai alamat 7100h.

Jawab :

Flowchart :

Program :

ALAMAT KODE OPERASI LABEL MNEMONIK

7100h 3E 00 A←00h MVI A,00h

7102h 21 00 A1 HL←A100h LXI H,A100h

7105h 0E 10 C←10h MVI C,10h

Page 63: Isi Buku Mikro Teori

7106h 77 M←A MOV M,A

7107h 23 HL←HL+1 INX H

7108h 3C A←A+1 INR A

7109h 0D C←C-1 DCR C

710Ah C2 06 71 Z=0 JNZ 7106

710Dh CF STOP RST 1

Contoh 3 : ( mengisi blok memori dengan data decimal )

Buatlah diagram alir dan program untuk mengisi blok memori alamat A200h

s.d A20Fh dengan data desimal secara berurutan mulai 00 sampai 15, tulis

program mulai alamat 7200h.

Jawab :

Flowchart :

Program :

ALAMAT KODE OPERASI LABEL MNEMONIK

7200h 21 00 A2 HLA200h LXI H,A200h

7203h 7D AL MOV A,L

Page 64: Isi Buku Mikro Teori

7204h C5 00 AA+00 ADI 00

7206h 27 ABCD DAA

7207h 77 MA MOV M,A

7208h 2D LL-1 DCR L

7209 F2 03 72 S=0 JP 7203

720c CF STOP RST 1

Contoh 4 : ( mengubah urutan data dalam suatu blok memori )

Buatlah bagan alir dan program untuk membalik urutan data-data yang

berada dalam blok memori alamat A300h sampai A30Fh., tulis program mulai

alamat 7300h.

Jawab :

Flowchart :

Program :

ALAMAT KODE OPERASI LABEL MNEMONIK

7300h 21 00 D3 HLD300h LXI H,D300h

Page 65: Isi Buku Mikro Teori

7303h 01 0F A3 BCD30Fh LXI B,D30Fh

7306h 0A ABC LDAX B

7307h 55 DM MOV D,M

7308h 77 MA MOV M,A

7309h 7A AD MOV A,D

730Ah 0A BCA STAX B

730Bh 2C LL+1 INR L

730Ch 0D CC-1 DCR C

730Dh 7D AL MOVA,L

730Eh 3F A-:-C CMP C

730Fh DA 06 73 CY=1 JC 7306

7312h CF STOP RST 1

2.3 DATA HEKSADESIMAL DAN DATA DESIMAL

Sebelum mulai membahas tentang penjumlahan data heksadesimal dan data

decimal, terlebih dahulu kita harus memahami tentang instruksi-instrukai

aritmatika yang telah dibahas dimuka.Untuk lebih jelasnya, kita mulai saja

langsung ke contoh soal dan pembahasannya.

Contoh 1 ( penjumlahan data heksadesimal ) :

Buatlah bagan alir dan program untuk menjumlahkan data-data

heksadesimal yang berada pada register-register D, E, H, dan L. Simpan hasilnya

pada register A dan gunakan register B untuk menyimpan “carry bit”. Tulis

program tersebut mulai alamat 2000h.

Jawab :

Flowchart:

Page 66: Isi Buku Mikro Teori

Program :

ALAMAT KODE OPERASI LABEL MNEMONIK

2000h 7A A←D MOV A,D

2001h 83 A←A+E ADD E

2002h 4F C←A MOV C,A

2003h 3E 00 A←00 MVI A,00

2005h CE 00 A←A+00+CY ACI 00

2007h BA B←A MOV B,A

2008h 79 A←C MOV A,C

8009h 84 A←A+H ADD H

800Ah 4F C←A MOV C,A

800Bh 78 A←B MOV A,B

800Ch CE 00 A←A+00+CY ACI 00

800Eh 47 B←A MOV B,A

800Fh 79 A←C MOV A,C

8010h 85 A←A+L ADD L

Page 67: Isi Buku Mikro Teori

8011h 4F C←A MOV C,A

8012h 78 A←B MOV A,B

8013h CE 00 A←A+00+CY ACI 00

8015h 4F C←A MOV C,A

8016h 78 A←B MOV A,B

8017h CE 00 A←A+00+CY ACI 00

8019h 47 B←A MOV B,A

801Ah 79 A←C MOV A,C

801Bh CF STOP RST 1

Contoh 3 (penjumlahan bilangan decimal 2 digit) :

Buatlah program untuk menjumlahkan 9 bilangan decimal 2 digit yang

berada pada alamat C000h sampai C008h. Simpan hasilnya pada alamat C00Ah

dan C009h. Tulis program saudara mulai alamat 8200h.

Jawab :

Bagan alir:

Program :

ALAMAT KODE OPERASI LABEL MNEMONIK

Page 68: Isi Buku Mikro Teori

8200H 21 00 D0 HL←D000H LXI H,C000H

8203H 16 09 D←9 MVI D,9

8205H 21 00 00 BC←0 LXI B,00

8208H 79 A←C MOV A,C

8209H 86 A←A+M ADD M

820AH 27 A←BCD DAA

820BH 4F C←A MOV C,A

820CH 78 A←B MOV A,B

820DH CE 00 A←A+00+CY ACI 00

820FH 47 B←A MOV B,A

8210H 2C L←L+1 INR L

8211H 15 D←D-1 DCR D

8212H C2 08 82 Z=0 JNZ 8208H

8215H 2C L←L+1 INR L

8216H 71 M←C MOV M,C

8217H 2C L←L+1 INR L

8218H 70 M←B MOV M,B

8219H CF STOP RST 1

2.3.1 Sistem Komplemen 9 dan Komplemen 10

Sistem Komplemen 9

Page 69: Isi Buku Mikro Teori

Desimal K' 9

0 9

1 8

2 7

3 6

4 5

5 4

6 3

7 2

8 1

9 0

Tabel di atas hanya berlaku untuk bilangan negatif saja.

Contoh : bila ada suatu bilangan negatif (-6), maka nilai komplemen 9 dari

bilangan tersebut adalah 3.

Contoh lain : -2 7 (K’ 9)

-5 4 (K’ 9)

-7 2 (K’ 9)

Sedangkan untuk bilangan positif, komplemen 9 dari bilangan tersebut adalah

nilai itu sendiri.

Contoh : 9 9 (K’ 9)

8 8 (K’ 9)

Operasi penjumlahan menggunakan konsep komplemen 9.

Contoh : 48 48

-35 + 64 +

13 112

1 +

13

Pada operasi penjumlahan tersebut terdapat “carry” bernilai (1), sehingga

dalam konsep komplemen 9 nilai tersebut dijumlahkan dengan bilangan paling

kanan atau LSB.

Page 70: Isi Buku Mikro Teori

Contoh lain : -35 64

48 + 48 +

13 112

1 +

13

-48 51

35 + 35 +

-13 86 = -13 (10)

-4,345 23,720 95,654

23,72 + perhitungan biasa : 4,345 - 23,720 +

19,375 119374

1 +

19,375

Sistem Komplemen 10

Sistem komplemen 10 (K’ 10) merupakan komplemen 9 yang

ditambahkan dengan nilai (1).

Sistem komplemen 10, seluruh operasi aritmatika diselesaikan dengan

penjumlahan, sehingga dipergunakan instruksi DAA sebagai faktor koreksi.

Contoh :

Desimal

(BCD) K' 10

0 0

12 12

131 131

400 400

2257 2257

5000 5000

Page 71: Isi Buku Mikro Teori

6677 6677

9999 9999

Catatan : ingat bahwa nilai komplemen dari bilangan positif adalah bilangan itu

sendiri.

Contoh :

Desimal (BCD) K' 9 K' 10

0 0 0

23 23 23

423 423 423

-23 76 77

-423 576 577

-6000 3999 4000

-6623 3376 3377

-9009 0110 0111

-9999 0000 0001

-5423 4576 4577

Contoh operasi aritmatika dalam sistem komplemen 10 :

Cara penyelesaian :

- pertama-tama operasi pengurangan harus diubah jadi operasi penjumlahan

- tanda bilangan dari data pengurang diubah menjadi negatif.

48 48

-35 + 65 +

113 = 13

Catatan : karena komplemen 10, nilai komplemen 9 dari bilangan negatif (–35)

adalah 64 ditambahkan dengan nilai (1), sehingga diperoleh hasil dari komplemen

10 adalah 65. Pada sistem komplemen 10, “carry” yang muncul pada operasi

penjumlahan tidak dihiraukan atau diabaikan saja.

Contoh lain : -35 65

Page 72: Isi Buku Mikro Teori

48 + 48 +

113 = 13

-48 52

-35 + 65 +

-83 117 = 17 = -83

-48 52

35 + 35 +

-13 87 = -13

-432 568

97 + 097 +

-335 665 = -335

-843 9157

-279 + 9721 +

18878 = -1122

Catatan : karena hasil dari penjumlahan tersebut terdiri dari 4 digit sedangkan soal

terdiri dari 3 digit maka perlu penambahan angka nol (0) di awalnya.

-4,345 95,655

23,72 + 23,720 +

119,375 = 19,375

4,345 04,345

-23,72 + 76,280 +

80,625 = -19,375

2.3.2 Konversi Data

Konversi Data Desimal ke Komplemen Sepuluh

Untuk dapat mengkonversikan suatu data desimal ke bentuk data dalam

komplemen sepuluh, terlebih dahulu harus mencari data dalam komplemen

sembilan dari data desimal tersebut, baru setelah itu ditambah 1 untuk

Page 73: Isi Buku Mikro Teori

mendapatkan nilai komplemen sepuluhnya. Setiap data desimal bernilai positif

atau nol mempunyai bentuk yang sama dalam komplemen sembilan maupun

sepuluh yaitu data desimal itu sendiri. Berikut ini adalah contoh konversi data

desimal ke bentuk data dalam sistem bilangan komplemen sembilan dan sepuluh.

Desimal (BCD) Komplemen 9 Komplemen 10

0 0 0

+23 23 23

+5423 5423 5423

-23 76 77

-6623 3376 3377

Contoh Soal :

a) Buatlah bagan alir dan program mengubah data desimal 2 digit bernilai

negatif yang berada pada blok memori alamat D200h – D20Fh ke dalam

bentuk komplemen sepuluh. Simpan hasilnya pada blok memori alamat

D300h – D30Fh. Tulis program mulai alamat 8000h.

Flowchart

START

HL ← D200

C ← 10

Z=0

A ← 99 A ← A - M A ← A + 01 A ← BCD H ← D3 M ← A H ← D2 L ← L + 1 C ← C - 1

STOP

Page 74: Isi Buku Mikro Teori

Program

Alamat Op - Code Label Mnemonik

8000 21 00 D2   LXI H,D200

8003 0E 10   MVI C,10

8005 3E 99 L1 MVI A,99

8007 96   SUB M

8008 3C   INR A

8009 27   DAA

800A 36 D3   MVI H,D3

800C 77   MOV M,A

800D 36 D2   MVI H,D2

800F 2C   INR L

8010 0D   DCR C

8011 C2 05 80   JNZ L1

8014 CF   RST 01

Konversi Data Komplemen Sepuluh Menjadi Data Desimal

Page 75: Isi Buku Mikro Teori

Untuk mengkonversikan data dari bentuk komplemen sepuluh menjadi data

desimal, maka langkah pertama yang harus dilakukan adalah mengubah data

komplemen sepuluh tersebut menjadi data komplemen sembilan terlebih dahulu,

baru kemudian diubah menjadi data desimal.

Contoh Soal :

a) Buatlah bagan alir dan program mengubah data dalam

bentuk komplemen sepuluh 2 digit yang berada pada blok memori alamat

D400h – D40Fh ke dalam bentuk desimal. Simpan hasilnya pada blok

memori alamat D500h – D50Fh. Tulis program mulai alamat 8500h.

Flowchart

Program

Alamat Op - Code Label Mnemonik

8500 21 00 D4   LXI H,D400

START

HL ← D400

C ← 10

Z=0

A ← M A ← A - 01 B ← A A ← 99 A ← A – B H ← D5 M ← A H ← D4 L ← L + 1 C ← C - 1

STOP

Page 76: Isi Buku Mikro Teori

8503 0E 10   MVI C,10

8505 7E L1 MOV A,M

8506 3D   DCR A

8507 47   MOV B,A

8508 3E 99   MVI A,99

850A 90   SUB B

850B 26 D5   MVI H,D5

850D 77   MOV M,A

850E 26 D4   MVI H,D4

8510 2C   INR L

8511 0D   DCR C

8512 C2 05 80   JNZ L1

8015 CF   RST 01

2.4DELAY (PENUNDAAN)

Merancang Program Subrutin Delay

Page 77: Isi Buku Mikro Teori

Program delay dapat dibuat dengan loop sederhana. Prinsipnya adalah

dengan mengatur penggunaan instruksi-instruksi yang jumlah waktu eksekusinya

sesuai dengan lamanya delay yang diinginkan. Pada prosesor 8085, lamanya

waktu pelaksanaan setiap instruksi tidak sama.

Contoh :

Instruksi

Lama

Eksekusi

MOV A, B 4T

MOV A, M 7T

MVI A, 23 7T

MVI M, 23 10T

RST 1 12T

RET 10T

CALL ABCD 18T

JP 9A2C 7/10T

JMP 9234 10T

NOP 4T

CMP C 4T

CMP M 7T

CPI 42 7T

T = clock periode

Pada trainer MIDICOM, frekuensi yang digunakan = 3,072 MHz

Tc = detik = 0,325 μs

Perintah transfer data yang berhubungan antara register dan memori

memerlukan waktu yang lebih lama daripada transfer data antara register dan

konstanta.

Pada perintah JP 9A2C, lama eksekusinya ada 2 keadaan, karena perintah

itu bersyarat, dia akan lompat pada saat “sign bit” = 0. apabila melakukan

lompatan waktunya 10T, sedangkan jika tidak melakukan lompatan waktunya 7T.

Page 78: Isi Buku Mikro Teori

Secara otomatis/internal, yang dilakukan prosesor apabila bertemu dengan

perintah CALL :

- menyimpan alamat instruksi berikutnya dalam stack

- mengisi program counter dengan alamat subrutin yang akan dilaksanakan.

Secara otomatis/internal, yang dilakukan prosesor apabila bertemu dengan

perintah RET adalah mengambil alamat dari “stack” ke PC.

Apabila membuat subrutin, jangan lupa mengakhirinya dengan RET

(return). Dalam program subrutin ada return bersyarat dan return tak bersyarat.

Contoh return bersyarat adalah RP returnss = 0, RC return Cy = 1,

dst. Contoh return tak bersyarat adalah RET.

Contoh :

Merancang suatu subrutin delay 1ms untuk digunakan pada modul trainer

MIDICOM.

Program Pemanggil

1 * 7Tc

18Tc

(n-1)10Tc

n * 4Tc

1 * 7Tc

Misal subrutin ditulis pada alamat awal A000H

Mnemonik

Jumlah Time

Clock

MVI D,n 7

L 1 DCR D 4

START

D n

D D - 1

Z = 0

RET

___CALL A000__

Page 79: Isi Buku Mikro Teori

JNZ L1  7 / 10

RET 10

Catatan : Jumlah time clock akan bernilai 7 saat instruksi tidak, dan

akan bernilai 10 saat instruksi ya.

Delay akan maksimum jika diisi dengan nol (0). Dalam trainer

MIDICOM, frekuensi clock yang digunakan = 3,072 MHz.

Time Clock = 1 / 3,072.106 = 0,325 μs.

n = 1, delay = 46 Tc

= 46 . 0,325 μs = 14,95 μs

n = 2, delay = 60 Tc

= 60 . 0,325 μs = 19,5 μs

dari keterangan yang diperoleh di atas dapat dirumuskan secara umum subrutin

delay dengan menggunakan bantuan sebuah register, yaitu :

Time delay = (7+10+7+18+4n+10n–10) Tc

= (32 + 14n) Tc

delay maksimum di dapat pada saat n = 0 (n = 256)

n = 0, delay = (14 * 256 + 32) Tc

= 3616 Tc

= 1,175 ms

agar delay = 1 ms, maka :

delay = Tc = 3076,9 Tc oleh karena kurang 0,1 Tc

~ 3077 Tc

maka3077 Tc = 14n + 32

14n = 3077 – 32

14n = 3045

n = = 217,5

n = 217

Page 80: Isi Buku Mikro Teori

= d9(16)

Jika n = d9, maka :

delay = [ 14 ( 217 ) + 32 ] . 0,325 μs

= 3070 Tc

Pada perhitungan sebelumnya, kita membutuhkan 3077 Tc sedangkan

harga n yang dihasilkan hanya 3070, maka “flowchart” yang harus dirancang

adalah

selisih delay yang didapat = 0,1 Tc = 0,0325 μs PENGKOREKSI (+7Tc)

% error = x 100% = 0,00325 %

Program Delay dengan Bantuan 2 Buah Register

D D9

D D - 1

Z = 0

RET

SUBRUTIN DELAY

D 0

delay

C C - 1

B n

C m

Z = 0

B B - 1

Z = 0

RET

Page 81: Isi Buku Mikro Teori

(n-1)10Tc

Rumus umum : 14mn + 18n + 32

n = 1 dan m = 1 [ mn – n ]

n = 1 1x ke bawah n = 2 2x ke bawah

m = 10 9x “jump” m = 10 18x “jump”

Time delay = ( 18 + 10 + 7 ) + 7n + 4mn + 10mn + 3n + 4n + 10n – 3

= ( 14mn + 18n + 32 )Tc

CALL XXXX 18Tc

MVI B, n 1 * 7Tc

L 1 MVI C, m n * 7 Tc

L 2 DCR C ( m * n ) 4Tc

JNZ L 2 ( 10 mn - 3n ) Tc

DCR B n * 4Tc

Page 82: Isi Buku Mikro Teori

n = 256

m = 256

delay = 18 ( 256 ) + 14 ( 256 )2 + 32

= 922.144 Tc

299,6968 ms

Rumus Umum

18 n + 49mn + 32

Jika n = m = 0

Delay = 18 ( 256 ) + 49 ( 256 )2 + 32

= 3.215.904 Tc

= 1,045 s

agar 1 s = 1.000.000 μs

Tc = 3.076.923,077 Tc

= 3.076.923 Tc kurang 0,077 Tc

Program dengan Bantuan 3 Buah Register

delay

D o

B n

C m

Z = 0

B B - 1

Z = 0

RET

D D - 1

C C -1

Z = 0

Page 83: Isi Buku Mikro Teori

Rumus Umum :

=18+7+7m+7mn+4mno+10mno-10mn+7mn+4mn+10mn-10n+7n+4n+10n-

10+7+10

= 14mno + 18mn + 18n + 32

2.5METODE LOOK-UP TABLE

Metode ini digunakan untuk suatu sistem yang input dan outputnya random.

Contoh pada kehidupan sehari-hari adalah mesin kasir di supermarket, metode

look up table-nya terjadi pada saat melakukan cash register, input = kode barang

dan output = harga barang.

Page 84: Isi Buku Mikro Teori

Metode look-up table dibuat dengan tujuan sebagai berikut :

o Menghindari metode perhitungan.

o Meningkatkan resolusi.

Pada metode ini harga barang sudah diketahui dalam suatu blok memori,

jadi kita hanya perlu menuliskan kode barang, maka secara otomatis kode tersebut

akan menunjukkan tempat terdapatnya harga barang pada alamat memori tertentu.

Berikut ini adalah contoh tabel kode barang dengan harga barangnya.

Kode Barang

Nama

Barang Harga Barang

0 Semen Rp. 40.000

1 Paku Rp. 10.000

2 Asbes Rp. 49.000

3 Keramik A Rp. 30.000

4 Keramik B Rp. 70.000

5 Keramik C Rp. 20.000

6 Cat A Rp.400.000

7 Cat B Rp. 75.000

8 Baut A Rp. 200

9 Baut B Rp. 300

Dari tabel di atas kita bisa membuat tabel datanya, akan tetapi sebelumnya

harus ditentukan dahulu berapa alamat memori yang dibutuhkan untuk

menyimpan masing-masaing harga. Patokan untuk menentukan berapa alamat

memori yang dibutuhkan adalah harga barang yang paling mahal, kalau pada tabel

di atas harga yang paling mahal adalah Rp.400.000. Harga tersebut terdiri dari 6

digit, karena setiap alamat memori pada mikroprosesor 8085 hanya bisa

menyimpan data 2 digit, maka kita memerlukan 3 alamat memori untuk

menyimpan harga tersebut. Berarti apabila kita memiliki 10 barang dengan harga

yang berbeda-beda, diperlukan 30 alamat memori untuk membuat tabel datanya.

Page 85: Isi Buku Mikro Teori

Tabel data

Catatan : Nilai yang lebih tinggi disimpan di alamat yang lebih tinggi juga.

Tabel pembelian barang

Kode

BarangJumlah Harga

00 07

03 20

06 03

A000 00

1 00

2 04

A003 00

4 00

5 01

A006 00

7 90

8 04

A01B 00

1C 03

1D 00

Kode barang = 0

Kode barang = 1Kode barang = 2

Kode barang = 9

Page 86: Isi Buku Mikro Teori

Total Harga ( 6 digit )

A100 00 A200 07

1 03 1 20

2 06 2 03

A300 A400 00

1 1 00

2 2 00

Untuk membuat programnya perlu ditentukankan beberapa hal, yaitu :

o Jumlah item transaksi = 3

oHL pointer alamat ke harga barang.

oBC pointer alamat kode barang dan jumlah harga.

Flowchart

BCD

Kode Barang (BCD) Jumlah Barang (BCD)

Total harga awal (BCD)Hasil kali jumlah barang dan harga (BCD)

START

B A2 A [BC] A A+99 A BCD

L A

SP FFFFH A0

BC A102 DE A400

A BCL A

A A+L A A+L

L AA M

[DE] A L L+1 E E+1A M

[DE] A L L+1 E E+1 A M

[DE] A E E+1 A 0

[DE] A

X

STACK HL STACK BC STACK DE D L HL 0 BC 0

L

Page 87: Isi Buku Mikro Teori
Page 88: Isi Buku Mikro Teori
Page 89: Isi Buku Mikro Teori

Pangkat 8

Buatlah program untuk menentukan pangkat 8 dari data input:

INPUT

1000 6

1001 7

1002 8

1003 3

+

OUTPUT

2000  

2001

2002  

2003  

2004  

2005  

2006  

2007  

2008  

2009  

200A  

200B  

200C  

200D  

200E  

200F  

656138

1677721688

576480178

167961668 167961668

Page 90: Isi Buku Mikro Teori

LXI SP,FFFF

LXI H,1003

LXI D,200F

1 : MOV C,M

MOV A,C

STA 3000

MVI A,00

STA 3001

STA 3002

STA 3003

MCI B,07

2 : CALL SUB

DCR B

JNZ 2

PUSH H

LXI H,3003

3 : MOV A,M

STAX D

DCR E

DCR L

JP 3

POP H

DCR L

JP 1

RST 01

SUB:PUSH HPUSH BDCR CLXI H,3003

LUP1 : MOV A,MMVI H,40MOV M,AMVI H,30DCR LJP LUP1

LUP2 : MVI B,04ADI 00MVI L,00

LUP3 : MOV A,MMVI H,40ADC MDAAMVI H,30MOV M,AINR LDCR BJNZ LUP3DCR CJNZ LUP2POP BPOP HRET 01

Page 91: Isi Buku Mikro Teori

2.6PENGURUTAN DATA (DATA SORTING)

Secara garis besar pengurutan data ada dua macam :

1. Ascending Order yaitu mengurutkan data dari mulai nilai terkecil ke nilai

terbesar.

2. Descending Order yaitu mengurutkan data dari mulai nilai terberas ke

terkecil.

Jenis data yang diurutkan dapat berupa data bilangan maupun data karakter.

Untuk data berupa bilangan bilangan negative dianggap lebih kecil dari bilangan

positif. Untuk data berupa karakter , data yang didahului huruf A dianggap lebih

kcil disbanding dengan data yang didahului dengan hurup B.

Proses pengurutan data bilangan seringkali diperlukan misalnya untuk

mengurutkan data nilai hasil suatu ujian semester mulai dari nilai terkecil ke nilai

terbesarataupun dari nilai terbesar ke terkecil.

Proses pengurutan karakter seringkali diperlukan misalnya untuk

mengurutkan daftar nama mulai dari nama yang didahului dari huruf A sampai

kepada nama yang didahului oleh huruf Z. Disusun berdasarkan huruf abjad.

Untuk dapat membuat program-program pengurutan data dalam bahasa

rakitan yang perlu diperhatikan terutama adalah jenis system bilangan yang

dipergunakan pada struktur data. Jika data yang tersedia merupakan bilangan

decimal (BCD﴿, maka pengurutan bilangan atau data harus dilakukan berdasarkan

garis bilangan yang berlaku dalam system bilanagn decimal. Jika data yang

tersedia merupakan bilangan heksa decimal murni maka pengurutan dat harus

berdasarkan garis bilangan heksa decimal murni. Dan apabila adata yang

diurutkan merupakan bilangan heksadesimal komplemen 16, maka pengurutan

data harus berdasarkan garis bilangan yang berlaku dalam system bilangan

heksadesimal komplemen 16.

Garis bilangan heksadesimal murni

Page 92: Isi Buku Mikro Teori

Garis bilangan heksadesimal komplemen 16

Contoh Ascending Order

Buatlah Flowchart dan program untuk mengurutkan turun data heksadesimal pada

blok memori D500 sampai D50F. Tempatan hasil pada blok memori E500 sampai

E50F.

Flowchart

SORT ASCENDING

D ← H

BAAMMB

(DE)A

A ← (DE)A:M

E ← LE ← E - 1

E ← E - 1

S = 0

L ← L - 1

RET

Z = 0

Cy = 1

Page 93: Isi Buku Mikro Teori

ProgramLXI H,D50F

LUP1 :MOV A,MMVI H,E5MOV M,AMVI H,D5DCR LJP LUP1LXI H,E50FCALL SORT

RST 01

SUBRUTINSORT: MOV D,HLP1: MOV E,L

DCR ELP2; LDAX D

CMP MJC LP3MOV B,AMOV A,MMOV M,BSTAX D

Lp3: DCR EJP LP2DCR LJNZ LP1

RET

Page 94: Isi Buku Mikro Teori

Contoh Descending Order

Buatlah flowchart dan program untuk mengurutkan naik data heksa decimal

komplemen.

Page 95: Isi Buku Mikro Teori

PROGRAM

LXI H,200F

LUP1: MOV A,M

MVI H,30

MOV M,A

MVI H,20

DCR L

JP LUP1

LXI H,300F

CALL SORT

RST 01

RET

SUBRUTIN

MOV D,H

LUP1: MOV E,L

DCR E

LUP2: LDAX D

CMP M

JNC LUP3

MOV B,A

MOV A,M

MOV M,B

STAX D

LUP3: DCR E

JP LUP2

DCR L

JNZ LUP1

Page 96: Isi Buku Mikro Teori

2.7 SELEKSI DATA

Program seleksi data sangat erat hubungannya dengan proses pengujian bit-

bit yang berada di dalam ‘flag register’, yang tersusun seperti di bawah ini:

S (Sign Flag)

Sign flag merupakan bit tanda yang menunjukan tanda bilangan dari hasil

operasi aritmatika atau logika yang tersimpan dalam akumulator. S akan berlogik

1 jika hasil operasi merupakan bilangan negatif dan akan berlogik 0 jika hasil

operasi merupakan bilangan positif atau nol.

Z (Zero Flag)

Zero flag merupakan bit flag yang akan memperlihatkan apakah hasil operasi

aritmatika atau logika yang tersimpan dalam akumulator nilainya nol. Z akan

berlogik 1 jika hasil operasinya adalah nol. Z akan berlogik 0 jika hasil operasi

nilainya tidak nol.

AC (Auxilary Carry Flag)

Auxilary carry flag menunjukkan ada atau tidaknya carry dari posisi bit b3 ke

posisi bit b4 pada operasi penjumlahan ALU. AC akan akan berlogik 1 apabila

pada suatu proses penjumlahan terdapat carry dari posisi bit b3 ke posisi bit b4.

AC akan berlogik 0 apabila tidak ada carry dari bit b3 ke bit b4.

P (Parity Flag)

Parity flag merupakan merupakan bit flag yang menunjukan ganjil atau

genapnya jumlah logika 1 pada hasil operasi aritmatika atau logika yang

dilakukan dalam ALU. P akan berlogik 1 apabila jumlah logika 1 pada hasil

operasi adalah genap. P akan berlogik 0 jika jumlah logika 1 pada hasil operasi

adalah ganjil.

Page 97: Isi Buku Mikro Teori

CY (Carry atau Borrow Flag)

Carry atau Borrow flag merupakan bit flag yang menunjukan ada atau

tidaknya carry atau borrow pada posisi bit b7 (MSB) dalam suatu operasi

aritmatika. CY berfungsi sebagai bit carry pada operasi penjumlahan dan borrow

pada operasi pengurangan. CY akan berlogik 1 apabila pada MSB dihasilkan

carry atau borrow. CY akan berlogik 0 apabila pada MSB tidak dihasilkan carry

atau borrow.

Penggunaan instruksi seleksi data

Menghitung jumlah data ganjil dan genap

Untuk menentukan atau mendeteksi suatu data genap atau ganjil dapat

dilakukan dengan menguji bit LSB data tersebut. Jika bit pada posisi LSB

berlogik 0 ini menunjukan data genap dan sebaliknya jika data tersebut

berlogik 1 ini menunjukan data ganjil.

Mendeteksi nilai data negatif atau positif

Untuk menetukan atau mendeteksi suatu data negatif atau positif dapat

dilakukan dengan menguji bit MSB data tersebut. Jika bit pada posisi MSB

berlogik 0 ini menunjukan data positif dan sebaliknya jika data tersebut

berlogik 1 ini menunjukan data negatif.

Mendeteksi nilai data nol

Data bernilai nol dapat dengan mudah dideteksi dengan memeriksa zero flag

yang terdapat pada flag register. Sebelum instruksi untuk memeriksa keasaan

dari zero flag tersebut dilakukan, terlebih dahulu harus diberikan instruksi

yang akan mempengaruhi flag register.

Mendeteksi kesalahan data

Salah satu cara untuk mendeteksi kesalahan dalam pengiriman data digital

adalah dengan sistem pariti genap ataupun pariti ganjil. Sistem ini

menggunakan satu bit tambahan untuk dijadikan bit pariti. Semua informasi

Page 98: Isi Buku Mikro Teori

mempunyai jumlah logika 1 sama genap atau ganjil. Contohnya pada sistem

pariti genap, jika informasi jumlah bit paritinya genap maka bit pariti akan

diberi logik 0 dan jika jumlah bit informasi ganjil maka bit pariti diberi logik

1 agar jumlah logik 1 menjadi genap. Untuk mendeteksi sistem pariti ini dapat

dilakukan dengan memeriksa pariti bit pada register flag.

Seleksi Range Data

Dalam program-program penyeleksian data, seringkali silakukan penyeleksian

data yang besarnya dibawah atau diatas nialai tertentu. Penyeleksian ini dapat

dilakukan dengan melakukan instuksi perbandingan (compare) yang pada

prinsipnya mirip dengan instruksi pengurangan (substraction).

Contoh pemrogramannya :

1. Buat flow chart dan program untuk mendeteksi apakah data yang ada pada reg.

B. Jika reg. B bernilai ganjil isilah reg. C dengan FF dan apabila reg B bernilai

genap isilah reg C dengan 00.

Page 99: Isi Buku Mikro Teori

2. Buatlah diagram alir dan program untuk mencari nilai terbesar dari 3 data

biner murni 8 bit yang ada pada reg B, C, dan D. Jika data terbesar ada pada

reg B isi reg H dengan data BB. Jika data terbesar ada pada reg C isi reg H

dengan data CC. Jika data terbesar ada pada reg D isi reg H dengan data DD.

LABEL MNEMONICSMOV A, BRRCJC L1MVI C, 00

L1 MVI C, FFRST 1

Page 100: Isi Buku Mikro Teori

2.8SUBRUTIN DAN INSTRUPSI

LABEL MNEMONICSMOV A, BCMP CJC L1CMP DJC L2MVI H, BBRST 1

L1 MOV A, CCMP DJC L2MVI H, CCRST 1

L2 MVI H, DDRST 1

Page 101: Isi Buku Mikro Teori

2.8 1 SUBRUTIN

Subrutin adalah suatu keadaan dimana mikroprosesor akan menghentikan

secara sementara instruksi yang sedang dilaksanakan untuk bercabang/menuju

suatu subrutin (program tertentu yang telah dibuat pada alamat yang berbeda dari

alamat program utama) untuk kemudian mikroprosesor akan kembali pada

program utama setelah menyelesaikan instruksi-instruksi yang terdapat pada

subrutin tersebut.

Proses kerja :

Apabila mikroprosesor menerima instruksi subrutin (call) maka akan

menghentikan secara sementara instruksi yang sedang dilaksanakan kemudian

menyimpan alamat setelah instruksi yang telah dihentikannya kedalam Stack

Pointer (SP) dan mengganti/mengisi alamat pada Programable Counter (PC)

dengan alamat awal subrutin tersebut kemudian mikroprosesor akan kembali ke

program utama setelah menemui instruksi RETURN pada subrutin dengan alamat

yang berada/tersimpan pada PC.

Keuntungan menggunakan subrutin :

1. Dengan penulisan program (subrutin) pada tempat yang berbeda dari program

utama, maka subrutin dapat dieksekusi secara berulang-ulang dengan hanya

sekali penulisan pada suatu subrutin.

2. Mengurangi jumlah memori alamat yang digunakan karena penulisannya

hanya sekali dan dapat digunakan berulang kali.

Subrutin bercabang

Suatu subrutin dapat bercabang menuju subrutin kedua ataupun bercabang

lagi menuju subrutin ketiga,dst. Adanya tumpukan LIFO) (Last Input First Out)

menjamin alamat pulang yang tepat diberikan untuk setiap pengembalian.

Instruksi/Format subrutin untuk mempermudah memakai suatu subrutin

terdapat beberapa kriteria:

1. Judul subrutin

2. alamat subrutin

Page 102: Isi Buku Mikro Teori

3. Input yang digunakan

4. Output yang digunakan

5. Fungsi dari subrutin

6. Register atau unit memori yang berubah

Instruksi Subrutin

Instruksi yang digunakan pada suatu subrutin adalah CALL dan RETURN.

1. Instruksi CALL alamat digunakan untuk memanggil suatu subprogram atau

rutin.

Rutin merupakan Suatu bagian program pendek yang melaksanakan tugas

tertentu. Jika rutin digunakan berulang kali dalam suatu program maka dapat

ditulis sekali pada memori sebagai subrutin dan dapat dipanggil setiap kali

diperlukan. Apabila instruksi CALL dieksekusi maka isi Program Counter akan

diganti dengan alamat awal dari subrutin yang dipanggil dalam memori.

Instruksi CALL ada 2:

Instruksi CALL bersyarat dan tak bersyarat

1. CNZ - Call if zero flag not set

2. CZ - Call if zero

3. CNC - Call if carry flag is 0

4. CC - Call if carry flag is 1

5. CPO - Call if the parity is odd

6. CPE - Call in the parity is even

7. CP -Call if plus

8. CM - Call if minus

2. Untuk mengembalikan ke program utama (setelah menyelesaikan subrutin),

instruksi RETURN sebagai pasangan instruksi CALL. Instruksi RETURN ada 2:

Instruksi RETURN bersyarat dan tak bersyarat. Untuk instruksi RETURN tak

bersyarat memiliki format ‘RET’, sedangkan untuk yang bersyarat memiliki

format :

1. RZ - Return if zero

Page 103: Isi Buku Mikro Teori

2. RNC - Return if not carry

3. RC - Return if carry

4. RPO - Return if parity odd

5. RPE - Return if parity even

6. RP - Return if plus

7. RM - Return if minus

2.8.2 INTERUPSI

Pengertian adalah Suatu keadaan dimana suatu mikroprosesor akan

menghentikan secara sementara instruksi yang sedang dieksekusi (program

utama) untuk melayani/bercabang menuju suatu subrutin yang berisi suatu

program tertentu yang telah dibuat/diprogram dalam perancangan mikroprosesor

dan tidak dapat dihapus/diganti oleh pemakai, untuk kemudian mikroprosesor

kembali kepada program utama.

Proses Interupsi

Bila suatu mikroprosesor menerima permintaan interupsi, maka pertamatam

mikroprosesor akan menyelesaikan siklus ambil yang sedang dilaksanakan

menyimpan alamat tempat kembalinya program utama ke ‘PC’ setelah

menyelesaikan suatu interupsi), kemudian mikroprosesor akan memanggil operasi

interupsi dimana alamat awal interupsi akan ditunjukkan secara terarah

(vektorisasi) seperti yang tertera pada tabel dibawah ini (pada mikroprosesor

8085). Pada proses ini isi dari ‘PC’ diganti dengan alamat awal operasi yang

bersangkutan. Kemudian pada akhir subrutin pelayanan interupsi, mikroprosesor

akan kembali pada program utama dimana sebelumnya alamat telah disimpan

pada ‘PC’.

Contoh pemrogramannya :

1. Buatlah program subrutin delay 500μs yang akan digunakan pada trainer

MIDICOM

LABEL MNEMONICSMVI B, 6B

L1 DCR BJNZ L1NOPNOPRET

Page 104: Isi Buku Mikro Teori

2. Buatlah program subrutin delay 30 ms yang akan digunakan pada trainer

MIDICOM.

2.9 PROGRAM KALKULATOR

LABEL MNEMONICSMVI B, C8MVI C, 1F

L1 DCR CJNZ L1NOPNOP

L2 DCR BJNZ L2MVI D, 12

L3 DCR DJNZ L3NOPNOPNOPNOPNOPRET

Page 105: Isi Buku Mikro Teori

Berikut ini adalah sebuah program yang mampu untuk menjumlahkan dua

bilangan desimal.

Subrutin dengan alamat awal A700 adalah subrutin untuk menerima 1 digit

(angka desimal) dari keyboard.

Page 106: Isi Buku Mikro Teori

2.10MIDICOM SEBAGAI “DIGITAL VOLTMETER”

Page 107: Isi Buku Mikro Teori

Salah satu aplikasi yang dapat direalisasikan dengan memanfaatkan fasilitas

ADC yang sudah tersedia pada trainer MIDICOM adalah “Digital Voltmeter”.

Untuk itu penguasaan terhadap prinsip penggunaan IC ADC sangat diperlukan.

ADC berfungsi untuk merubah besaran analog ke besaran digital.

DAC berfungsi untuk merubah besaran digital ke besaran analog.

Prinsip pemanfaatan IC ADC

ADC terbagi menjadi 2 yaitu ADC monopolar dan bipolar.

Contoh 1 :

Pada suatu ADC monopolar 8 bit, diberikan tegangan referensi sebesar +8 volt.

Tentukan :

a.Jumlah step

b. Besar tegangan per step

c.Besar error kuantisasi maksimum

d. Level output logika ADC jika pada inputnya diberi tegangan sebagai

berikut :

Vin Analog

(volt)

output ADC

B7 B6 B5 B4 B3 B2 B1 B0

2,4 0 1 0 0 1 1 0 0

3,0  0  1  1  0  0  0  0  1

7,2  1  1  1  0  0  1  0  1

0,85  0  0  0  1  1  0  1  1

1  0  0  1  0  0  0  0  0

8  1  1  1  1  1  1  1  1

6  1  0  1  1  1  1  1  1

4  1  0  0  0  0  0  0  0

ADC 8 bit memiliki 28 level kuantisasi = 256 level

Jawab :

a.jumlah step = 28 – 1 = 255 step

Page 108: Isi Buku Mikro Teori

b. besar tegangan per step = = = 0,031372549

catatan : sebaiknya gunakan sebanyaknya angka di belakang koma, agar

didapat hasil yang lebih akurat.

c.errror kuantisasi maksimum = ½ . tegangan per step = ½ . 0,031372549

= 0,015686274

d. Untuk menjawab soal bagian (d) adalah dengan cara membagi tegangan

input analog dengan besar tegangan per step yang didapat, hasilnya akan

berupa bilangan desimal, setelah itu kita ubah menjadi bentuk

heksadesimal, kemudian simpan pada tabel yang telah tersedia dalam

bentuk biner. Contoh : = 76,5(10) = 4C(16) = 0100 1100

Contoh 2 :

Pada suatu ADC bipolar 10 bit diberikan Vref(+) = 9V; Vref(-) = -9V. Tentukan :

a.jumlah step = 210 – 1 = 1023 step

b. besar tegangan per step = = = 0,017595307

catatan : gunakan sebanyaknya angka di belakang koma, agar didapat hasil

yang lebih akurat. Karena memiliki tegangan (+) dan (-), maka tegangan =

Vref(+) - Vref(-) = 9volt- (-9volt) = 9volt + 9 volt = 18 volt.

c.errror kuantisasi maksimum = ½ . tegangan per step = ½ . 0,017595307

= 0,008797653

d. Untuk menjawab soal bagian (d) adalah dengan cara membagi tegangan

input analog dengan besar tegangan per step yang didapat, hasilnya akan

berupa bilangan desimal, setelah itu kita ubah menjadi bentuk

heksadesimal, kemudian simpan pada tabel yang telah tersedia dalam

bentuk biner. Perlu diperhatikan pada tegangan referensi negatif

pengerjaannya berbeda, yaitu dengan menggunakan sistem komplemen 2.

Contoh : = 241,5(10) = 242(10) (dalam tegangan referensi negatif,

pembulatan ke atas) = F2(16) = 1111 0010

SBN : 1 0 1 1 1 1 0 0 1 0

K’ 1 : 1 1 0 0 0 0 1 1 0 1

Page 109: Isi Buku Mikro Teori

K’ 2 : 1 1 0 0 0 0 1 1 1 0 (masukkan hasilnya pada tabel)

Vin

Analog

(volt)

Output ADC

B9 B8 B7 B6 B5 B4 B3 B2 B1 B0

+42,5 0 0 1 1 1 1 0 0 1 0

-4,25  1 1 0 0 0 0 1 1 1 0

 +3,0 0 0 1 0 1 0 1 0 1 0

 -3,0 1 1 0 1 0 1 0 1 0 1

+5,75 0 1 0 1 0 0 0 1 1 0

 -5,75 1 0 1 0 1 1 1 0 0 1

-9 1 0 0 0 0 0 0 0 0 0

 -7,4 1 0 0 1 0 1 1 0 1 1

Perlu diketahui bahwa :

Monopolar : 0 ======================= FF

Bipolar : -128======= -1=0= 1========= +127

80(16)===== FF=0= 1=========7F(16)

Seperti halnya ADC, DAC juga terbagi menjadi 2 yakni DAC monopolar

dan DAC bipolar.

Contoh 1 :

Pada suatu DAC Monopolar 9 bit diberikan tegangan referensi sebesar +8 volt.

Tentukan :

a.jumlah step = 29 – 1 = 511 step

Page 110: Isi Buku Mikro Teori

b. besar tegangan per step = = = 0,015655577

catatan : gunakan sebanyaknya angka di belakang koma, agar didapat hasil

yang lebih akurat.

c.errror kuantisasi maksimum = ½ . tegangan per step = ½ . 0,015655577

= 0,007827788

d. Tentukan tegangan output DAC jika pada inputnya diberikan kombinasi

bit-bit sebagai berikut :

Input DAC Output DAC

(volt)B8 B7 B6 B5 B4 B3 B2 B1 B0

1 0 1 0 0 1 1 0 1 5,2

1 0 1 1 0 0 0 0 1 5,5

0 1 1 1 0 0 1 0 1 3,5

0 0 0 0 1 1 0 1 1 0,4

1 0 0 1 0 0 0 0 0 4,5

1 1 1 1 1 1 1 1 1 8

0 1 0 1 1 1 1 1 1 2,99

1 1 0 0 0 0 0 0 0 6,0

Untuk menjawab soal bagian (d) adalah dengan cara mengubah nilai input

DAC dari biner ke desimal, kemudian bagi hasil konversi tersebut dengan jumlah

step yang didapat kemudian dikalikan dengan tegangan referensi. Dalam soal ini,

yaitu sebagai contoh : 1 0 1 0 0 1 1 0 1 = 333(10)

Jadi, x 8 volt = 5,2 volt (masukkan nilai tersebut ke kolom output DAC.

Contoh 2 :

Pada suatu DAC Bipolar 10 bit diberikan Vref(+) = 9V; Vref(-) = -9V. Tentukan :

a.jumlah step = 210 – 1 = 1023 step

b. besar tegangan per step = = = 0,017595307

Page 111: Isi Buku Mikro Teori

catatan : gunakan sebanyaknya angka di belakang koma, agar didapat hasil

yang lebih akurat.

c.errror kuantisasi maksimum = ½ . tegangan per step = ½ . 0,017595307

= 0,008797653

d. Tentukan tegangan output DAC jika pada inputnya diberikan kombinasi

bit-bit sebagai berikut :

Input DAC Outpu

t DACB9 B8 B7 B6 B5 B4 B3 B2 B1 B0

0 0 1 1 1 1 0 0 1 0 +42,5

1 1 0 0 0 0 1 1 1 0 -4,25 

0 0 1 0 1 0 1 0 1 0  +3,0

1 1 0 1 0 1 0 1 0 1  -3,0

1 1 0 0 0 1 1 1 0 1 -3,99

1 0 1 0 1 0 1 0 1 1 -6

1 0 0 0 0 0 0 0 0 0 -9

0 0 1 1 1 0 1 1 1 0 4,18

Untuk menjawab soal bagian (d) adalah sama dengan cara mengubah nilai

input DAC dari biner ke desimal, kemudian bagi hasil konversi tersebut dengan

jumlah step yang didapat kemudian dikalikan dengan tegangan referensi. Dalam

soal ini, yaitu sebagai contoh tegangan reerensi negatif : 1 1 0 0 0 1 1 1 0 1 = -

22710)

Jadi, x 18 volt = -3,99 volt (masukkan nilai tersebut ke kolom output

DAC.

1 0 1 0 1 0 1 0 1 1 = -341 -341/1023 . 18 volt =

-6 volt

0 0 1 1 1 0 1 1 1 0 = 238 238/1023 . 18 volt = 4,18 volt

positif

negatif

0

Page 112: Isi Buku Mikro Teori

Perlu diketahui bahwa pada bipolar, tetap yang menjadi patokan awal adalah

pada angka nol.

2.11 UNIT PERAGA 7 SEGMENT DAN LED

Pada trainer MIDICOM telah tersedia unit peraga 7 segment yang terdiri

dari 8 unit 7 segment display (terdapat 8 karakter). Dari ke8 karakter tersebut

setiap saat hanya 1 karakter yang dapat diaktifkan. Port # 40H digunakan sebagai

output port yang difungsikan untuk menetukan pola karakter yang akan

Page 113: Isi Buku Mikro Teori

ditampilkan pada unit peraga 7 segment. Port # 42H dipergunakan untuk memiliki

posisi digit (posisi karakter) yang akan diaktifkan.

Data-data yang diberikan pada port # 42H adalah sbb :

Sedangkan urutan posisi 7 segment yang harus diberikan pada port # 40H adalah

sbb :

Contoh :

1. Untuk menampilkan

karakter H pada

posisi digit D4 programnya yaitu, sbb :

MVI A,00

OUT 42

MVI A,76

OUT 40

RST 1

2. Untuk menampilkan karakter H pada posisi digit D4 programnya yaitu, sbb :

MVI A,00

OUT 42

MVI A,76

OUT 40

RST 1

Contoh pemrogramannya :

Page 114: Isi Buku Mikro Teori

1. Buat diagram alir dan program untuk up counter yang menghitung secara biner

dari 0000 s/d 1111 (modulus 16). Gunakan LED pada posisi L3 s/d L0 sebagai

unit output atur agar perubahan output counter terjadi tiap 1 detik.

2. sama seperti no.1 tapi gunakan L7 s/d L4 sebagai output unit.

LABEL MNEMONICSL1 MVI A, 00L2 OUT 50

LXI DE, 03E8CALL FFAINR AMVI A, 10JNZ L2JMP L1

LABEL MNEMONICSL1 MVI B, 00L2 MOV A,B

ADD AADD AADD AADD AOUT 50LXI DE, 03E8CALL FFAINR BMVI A, 10CMP BJNZ L2JMP L1

Page 115: Isi Buku Mikro Teori

3. Buat diagram alir dan program modulus 10 yang menghitung dari 0 ke 9. Atur

outputnya yang berubah 1 detik. Gunakan LED dan terminal monitor sebagai

output unit.

4. Buatlah program untuk menampilkan huruf A pada semua 7 segmen.

LABEL MNEMONICSL1 MVI B, 00L2 MOV A, B

OUT 50ADI 30MOV C, ACALL FEELXI DE, 03E8CALL FFAMVI C, 15CALL FEEINR BMOV A, BCPI 0AJNZ L2JMP L1

LABEL MNEMONICSL1 LXI HL, A207L2 MVI A, 77

OUT 40MOV A, MOUT 42LXI DE, 0002CALL FFADCR LJP L2JMP L1

Page 116: Isi Buku Mikro Teori

5. Buatlah program untuk menampilkan angka 0 sampai 7. Setiap angka hanya

ditampilkan oleh satu 7 segmen.

6. Sama seperti no.5 tetapi setelah 4 detik mati semua.

LABEL MNEMONICSL1 LXI HL, A207L2 MOV A, M

OUT 42MVI H, B2MOV A, M OUT 40MVI H, A2LXI DE, 0002CALL FFADCR LJP L2JMP L1

LABEL MNEMONICSMVI B, F0

L1 LXI HL, A207L2 MOV A, M

OUT 42MVI H, B2MOV A, MOUT 40MVI H, A2LXI DE, 0002CALL FFADCR LJP L2DCR BJNZ L1MVI A, 00OUT 40RST 1

L1

L2

Page 117: Isi Buku Mikro Teori

7. Sama seperti no.5 tetapi setelah 7 detik mati

semua.

LABEL MNEMONICSMVI C, 07

L1 MVI B, 3CL2 LXI HL, A207L3 MOV A, M

OUT 42MVI B, B2MOV A, MOUT 40MVI H, A2LXI DE, 0002CALL FFADCR LJP L3DCR BJNZ L2DCR CJNZ L1MVI A, 00OUT 40RST 1

L1

L2

Page 118: Isi Buku Mikro Teori

8. Buat flow chart seperti no.5 atur agar display

berkedip 3 kali per detik.

LABEL MNEMONICSMVI C, 15

L1 MVI B, 0AL2 LXI HL, A207L3 MOV A, M

OUT 42MVI H, B2MOV A, MOUT 40MVI H, A2LXI DE, 0002CALL FFADCR LJP L3DCR BJNZ L2MVI A, 00OUT 40LXI DE, 00A6CALL FFADCR CJNZ L1RST 1

L3

L1

L2

Page 119: Isi Buku Mikro Teori

9. Buat program untuk up counter modulus 21 yang menghitung mulai dari 0 s/d

20 secara berulang dengan selang waktu ½ detik. Tampilkan output counter

pada unit peraga 7 segmen.

L3

LABEL MNEMONICSL1 MVI H, D0

MVI B, 00L2 MVI C, 1EL3 MOV A, B

ANI F0RRCRRCRRCRRCMOV L, AMOV A, MOUT 40MVI A, 90OUT 42LXI DE, 0008CALL FFAMOV A, BANI 0FMOV L, AMOV A, MOUT 40MVI A, 80OUT 42LXI DE, 0008CALL FFADCR CJNZ L3MOV A, BADI 01DAAMOV B, ACPI 21JNZ L2JMP L1

L1

L2

Page 120: Isi Buku Mikro Teori

Unit peraga 7 segmen

2.12ADC dan DAC

Salah satu komponen penting dalam sistem akuisisi data adalah pengubah

besaran analog ke digital atau disebut juga ADC (Analog to Digital Converter).

Pengubah ini akan mengubah besaran-besaran analog menjadi bilangan-bilangan

digital sehingga bisa diproses dengan komputer. IC ADC 0804 dianggap dapat

L3

Page 121: Isi Buku Mikro Teori

memenuhi kebutuhan dari rangkaian yang akan dibuat. IC jenis ini bekerja secara

cermat dengan menambahkan sedikit komponen sesuai dengan spesifikasi yang

harus diberikan dan dapat mengkonversikan secara cepat suatu masukan tegangan

Hal-hal yang juga perlu diperhatikan dalam penggunaan ADC ini adalah

tegangan maksimum yang dapat dikonversikan oleh ADC dari rangkaian

pengkondisi sinyal, resolusi, pewaktu eksternal ADC, tipe keluaran, ketepatan dan

waktu konversinya.

Beberapa karakteristik penting ADC :

1.  Waktu konversi

2.  Resolusi

3.  Ketidaklinieran

4.  Akurasi

Contoh aplikasi ADC ini bisa kita lihat misalnya pada voltmeter digital,

sampling suara dengan komputer, sehingga suara dapat disimpan secara digital

dalam disket, dan kamera digital.

Konsep pengubah analog ke digital ini adalah sampling (mengambil contoh

dalam waktu tertentu) kemudian mewakilinya dengan bilangan digital dengan

batas yang sudah diberikan.

Ada banyak cara yang dapat digunakan untuk mengubah sinyal analog

menjadi sinyal digital yang nilainya proposional. Jenis ADC yang biasa

digunakan dalam perancangan adalah jenis successive approximation convertion

atau pendekatan bertingkat yang memiliki waktu konversi jauh lebih singkat dan

tidak tergantung pada nilai masukan analognya atau sinyal yang akan diubah.

Dalam Gambar 1. memperlihatkan diagram blok ADC tersebut.

Page 122: Isi Buku Mikro Teori

Secara singkat prinsip kerja dari konverter A/D adalah semua bit-bit diset

kemudian diuji, dan bilamana perlu sesuai dengan kondisi yang telah ditentukan.

Dengan rangkaian yang paling cepat, konversi akan diselesaikan sesudah 8 clock,

dan keluaran D/A merupakan nilai analog yang ekivalen dengan nilai register

SAR.

Apabila konversi telah dilaksanakan, rangkaian kembali mengirim sinyal

selesai konversi yang berlogika rendah. Sisi turun sinyal ini akan menghasilkan

data digital yang ekivalen ke dalam register buffer. Dengan demikian, keluaran

digital akan tetap tersimpan sekalipun akan di mulai siklus konversi yang baru.

IC ADC 0804 mempunyai dua masukan analog, Vin (+) dan Vin (-),

sehingga dapat menerima masukan diferensial. Masukan analog sebenarnya (Vin)

sama dengan selisih antara tegangan-tegangan yang dihubungkan dengan ke dua

pin masukan yaitu Vin = Vin (+) – Vin (-). Kalau masukan analog berupa

tegangan tunggal, tegangan ini harus dihubungkan dengan Vin (+), sedangkan Vin

(-) digroundkan.

Untuk operasi normal, ADC 0804 menggunakan Vcc = +5 Volt sebagai

tegangan referensi. Dalam hal ini jangkauan masukan analog mulai dari 0 Volt

Page 123: Isi Buku Mikro Teori

sampai 5 Volt (skala penuh), karena IC ini adalah SAC 8-bit, resolusinya akan

sama dengan (n menyatakan jumlah bit keluaran biner IC analog to digital

converter)

       IC ADC 0804 memiliki generator clock intenal yang harus diaktifkan dengan

menghubungkan sebuah resistor eksternal (R) antara pin CLK OUT dan CLK IN

serta sebuah kapasitor eksternal (C) antara CLK IN dan ground digital

Untuk sinyal clock ini dapat juga digunakan sinyal eksternal yang

dihubungkan ke pin CLK IN. ADC 0804 memilik 8 keluaran digital sehingga

dapat langsung dihubungkan dengan saluran data mikrokomputer. Masukan (chip

select, aktif rendah) digunakan untuk mengaktifkan ADC 0804. Jika berlogika

tinggi, ADC 0804 tidak aktif (disable) dan semua keluaran berada dalam keadaan

impedansi tinggi. Masukan (write atau start convertion) digunakan untuk memulai

proses konversi.

Untuk itu harus diberi pulsa logika 0. Sedangkan keluaran (interrupt atauend

of convertion) menyatakan akhir konversi. Pada saat dimulai konversi, akan

berubah ke logika 1.

Di akhir konversi akan kembali ke logika 0.

Mode Operasi ADC0804

1. Mode Opersi Kontinyu

Agar ADC0804 dapat dioperasikan pada mode operasi kontinyu (proses

membaca terus menerus dan tanpa proses operasi jabat tangan), maka penyemat

CS dan RD ditanahkan, sedangkan penyemat WR dan INTR tidak dihubungkan

kemanapun. Prinsip kerja operasi kontinyu ini yaitu ADC akan memulai konversi

ketika INTR kembali tidak aktif (logika ‘1’). Setelah proses konversi selesai,

INTR akan aktif (logika ‘0’). Untuk memulai konversi pertama kali WR harus

ditanahkan terlebih dahulu, hal ini digunakan untuk mereset SAR. Namun pada

konversi berikutnya untuk mereset SAR dapat menggunakan sinyal INTR saat

aktif (logika ‘0’) dan mulai konversi saat tidak aktif (logika ‘1’).’

Page 124: Isi Buku Mikro Teori

Ketika selesai konversi data hasil konversi akan dikeluarkan secara langsung

dari buffer untuk dibaca karena RD ditanahkan. Saat sinyal INTR aktif, sinyal ini

digunakan untuk me-reset SAR. Saat INTR kembali tidak aktif (logika ‘1’) proses

konversi dimulai kembali

2. Mode Operasi Hand-Shaking

ADC0804 dioperasikan pada mode hand shaking . Agar ADC dapat bekerja,

CS harus berlogika ‘0’. Ketika WR berlogika ‘0’, register SAR akan direset,

sedangkan ketika sinyal WR kembali ‘1’, maka proses konversi segera dimulai.

Selama konversi sedang berlangsung, sinyal INTR akan tidak aktif (berlogika

‘1’), sedangkan saat konversi selesai ditandai dengan aktifnya sinyal INTR

(logika ‘0’).

Setelah proses konversi selesai data hasil konversi tetap tertahan pada buffer

ADC. Data hasil konversi tersebut akan dikeluarkan dengan mengirim sinyal RD

berlogika ‘0’. Setelah adanya sinyal sinyal RD ini, maka sinyal INTR kembali

tidak aktif.

Rancangan Pengubah Analog ke Digital

Sebenarnya rangkaian pengubah analog ke digital dapat dibuat dengan

memakai komponen-komponen lepasan, akan tetapi ini akan memakan tempat dan

kelinierannya pun tidak bagus. Karena itu dipilih pengubah dalam bentuk IC

(Integrated Circuit) yang sudah ada dipasaran. Dari berbagai buku data ternyata

didapatkan komponen dengan tipe ADC0804. Komponen ini memakai metode

pendekatan berturutan dan hanya memerlukan sedikit komponen luar.Gambar di

bawah adalah contoh dari IC pengkonversi dari analog ke digital :.

Page 125: Isi Buku Mikro Teori
Page 126: Isi Buku Mikro Teori

Analog to digital converter (ADC) dan digital to analog converter (DAC)

terbagi menjadi 2 jenis, yaitu :

1.Monopolar, bilangan yang digunakan adalah bilang biner murni (tak

bertanda)

2. Bipolar, bilangan yang digunakan adalah bilang biner K’2 (bertanda)

Contoh :

Pada ADC 9 bit monopolar, besar tegangan referensi yang digunakan adalah

+10V. Tentukan :

a) Jumlah step yang tersediab) Besar tegangan per stepc) Kombinasi output ADC jika pada inputnya diberikan tegangan input

analog seperti pada tabel Jawab :

a) Jml step = (29 – 1) = 511 step.

b) Teg/step = = = 19.75mV.

c) Tabel kombinasi output ADC =

Teg Input Output ADC

3.52 0 1 0 1 1 0 0 1 1

4.7 0 1 1 1 1 0 0 0 0

8.0 1 1 0 0 1 1 0 0 0

10.0 1 1 1 1 1 1 1 1 1

2.4 0 0 1 1 1 1 0 1 0

0 0 0 0 0 0 0 0 0 0

5.8 1 0 0 1 0 1 0 0 0

Contoh 2 :

Pada ADC 8 bit bipolar, besar tegangan referensi yang digunakan adalah Vref (+)

= +10V & Vref (-) = -10V. Tentukan :

d) Jumlah step yang tersedia

e) Besar tegangan per step

f) Kombinasi output ADC jika pada inputnya diberikan tegangan input

analog seperti pada tabel 2

Page 127: Isi Buku Mikro Teori

Jawab :

d) Jml step = (28 – 1) = 255 step.

e) Teg/step (+)= = = 78.74mV.

Teg/step (-) = = = 78.125mV.

f) Tabel kombinasi output ADC =

Vin (V) Output ADC

-3.52 1 1 0 1 0 0 1 1

-4.7 1 1 0 0 0 1 0 0

+8.0 0 1 1 0 0 1 0 1

-10.0 1 0 0 0 0 0 0 0

+2.4 0 0 0 1 1 1 1 0

0 0 0 0 0 0 0 0 0

+5.8 0 1 0 0 1 0 0 1

Contoh 3 :

Pada DAC 8 bit bipolar, besar tegangan referensi yang digunakan adalah Vref (+)

= +10V & Vref (-) = -10V. Tentukan :

g) Jumlah step yang tersedia

h) Besar tegangan per step

i) Kombinasi output ADC jika pada inputnya diberikan tegangan input

analog seperti pada tabel 3

Jawab :

g) Jml step = (28 – 1) = 255 step.

h) Teg/step (+)= = = 78.74mV.

Teg/step (-) = = = 78.125mV.

i) Besar tegangan output DAC =

Input DAC Vo (V)

0 0 1 0 1 1 0 1 +3.5

1 0 1 0 1 1 0 1 -6.5

Page 128: Isi Buku Mikro Teori

1 1 1 1 1 0 0 0 -0.625

0 0 1 1 1 0 1 0 +4.56

0 1 0 1 0 1 0 1 +6.69

1 0 1 0 1 0 1 0 -6.72

1 1 0 0 1 1 0 0 -4.06

PEMROGRAMAN ADC / DAC PADA TRAINER MIDICOM

Contoh1 :

Buat program untuk membangkitkan pulsa digital seperti pada gambar berikut!

1.

Jawab :

Jika Vo DAC = 0V, maka kombinasi inputnya = 0000 0000(2)

Jika Vo DAC = 6V, maka kombinas inputnya = 4B(16) = 0100 1011(2)

Port # 50 = DAC

Port #51 = ADC

Program :

LABEL MNEMOMICS

MVI A,A2

OUT 53

MVI A,08

OUT 53

MVI A,04

OUT 52

L1 MVI A,00

OUT 50

LXI D,0005

CALL FFA

MVI A,4B

OUT 50

LXI D,0010

CALL FFA

JMP L1

Page 129: Isi Buku Mikro Teori

2.

Jika Vo DAC = 0V, maka kombinasi inputnya = 0000 0000(2)

Jika Vo DAC = +6V, maka kombinas inputnya = 4B(16) = 0100 1011(2)

Jika Vo DAC = - 6V, maka kombinas inputnya = B5(16) = 1011 0101(2)

Port # 50 = DAC

Port #51 = ADC

Arah Horizontal

Jumlah step dari -6 s.d +6 V = 150 step

Page 130: Isi Buku Mikro Teori

Arah Vertikal

Flowchart

Delay X

Delay X = Delay Y

Page 131: Isi Buku Mikro Teori

2.13 KEYBOARD READING

Pada trainer MIDICOM telah disediakan subrutin-subrutin siap pakai ;

diantaranya adalah subrutin untuk membaca tombol/karakter keyboard yang kita

tekan. Keyboard yang digunakan adalah ASCII keyboard. Alamat awal dari

subrutin untuk membaca tombol keyboard tersebut adalah : $0FF1. Register C

Page 132: Isi Buku Mikro Teori

dipilih sebagai register output yang akan diisi dengan kode ASCII dari tombol

keyboard yang ditekan (diaktifkan).

A.keyboard reading

Contoh penggunaan subrutin :

Tulis program sbb : CALL FF1

RST 1

Eksekusi program di atas, tekan tombol A.

Periksa isi register C !

Berikut ini adalah kode ASCII untuk beberapa karakter, sbb :

Karakter Kode ASCII Karakter Kode ASCII

A 41 a 61

B 42 b 62

C 43 c 63

D 44 d 64

E 45 e 65

F 46 f 66

G 47 g 67

H 48 h 68

I 49 i 69

J 4A j 6A

K 4B k 6B

L 4C l 6C

M 4D m 6D

N 4E n 6E

O 4F o 6F

P 50 p 70

Q 51 q 71

R 52 r 72

S 53 s 73

Page 133: Isi Buku Mikro Teori

T 54 t 74

U 55 u 75

V 56 v 76

W 57 w 77

X 58 x 78

Y 59 y 79

Z 5A z 7A

Karakter Kode ASCII Karakter Kode ASCII

0 30 5 35

1 31 6 36

2 32 7 37

3 33 8 38

4 34 9 39

Karakter Kode ASCII Karakter Kode ASCII

! 21 ( 28

“ 22 ) 29

# 23 * 2A

$ 24 + 2B

% 25 < 2C

& 26 > 2D

^ 27 / 2F

: 3A [ 5B

; 3B ] 5D

, 3C { 7B

. 3D } 7D

? 3F backspace 08

@ 40 space bar 20

B.Menulis karakter –karakter pada terminal monitor

Page 134: Isi Buku Mikro Teori

1. Tulis program ini :

8800 MVI C,41

CALL FFE

RST 1

Eksekusi program tersebut !

Amati pada layar monitor apakah karakter ‘A’sudah muncul ?

2. Buat program untuk menampilkan kata “IBU” pada layar !

8800 MVI C,49

CALL FEE

MVI C,42

CALL FEE

MVI C,55

CALL FEE

RST 1

3. untuk menampilkan kata yang panjang buatlah program ini :

8800 CALL FFI

CALL FEE

JMP 9900

RST 1

2.12 KASUS LANJUTAN

Pada Monitor, setiap satu detik ditampilkan 25 frame gambar. Sedangkan

pada unit peraga 7 segmen umumnya untuk mendapatkan tampilan yang baik

tanpa flicker digunakan 60 frame per detik.

1 detik = 60 frame

Page 135: Isi Buku Mikro Teori

1 frame = 8 karakter

1 detik = 480 karakter

1 karakter = m detik

Jadi 1 karakter ≈ 2 m detik

Contoh soal:

Rancang rangkaian decoder untuk mengendalikan unit peraga 7 segmen yang ada

pada trainer MIDICOM. Port 40H untuk mengatur pola karakter dan port 41H

untuk memilih posisi karakter. Berikut ini adalah tabel mengenai port bit PB yang

sudah ditentukan dari pembuat MIDICOM tersebut :

PB 7 PB 6 PB 5 PB 4 PB 3 PB 2 PB 1 PB 0

50H 0 1 0 1 0 0 0 0

40H 0 1 0 0 0 0 0 0

10H 1 0 1 0 0 0 0 0

00H 0 0 0 0 0 0 0 0

D0H 1 1 0 1 0 0 0 0

C0H 1 1 0 0 0 0 0 0

90H 1 0 0 1 0 0 0 0

80H 1 0 0 0 0 0 0 0

Jawab :

Pertama kita harus membuat tabel input dan output (output aktif low):

INPUT OUTPUT

PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 D7 D6 D5 D4 D3 D2 D1 D0

0 1 0 1 0 0 0 0 0 1 1 1 1 1 1 1

0 1 0 0 0 0 0 0 1 0 1 1 1 1 1 1

0 0 0 1 0 0 0 0 1 1 0 1 1 1 1 1

Page 136: Isi Buku Mikro Teori

0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1

1 1 0 1 0 0 0 0 1 1 1 1 0 1 1 1

1 1 0 0 0 0 0 0 1 1 1 1 1 0 1 1

1 0 0 1 0 0 0 0 1 1 1 1 1 1 0 1

1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0

Dari tabel input dan output diatas kita dapat membuat input untuk masuk ke

decoder, yaitu :

Input 1 =

Input 2 = PB6

Input 3 = PB4

Sebenarnya port bit bisa dibuat lebih sederhana dari yang sudah ditentukan oleh

perancang MIDICOM, tetapi karena sudah ditentukan seperti itu mau tidak mau

kita harus mengikutinya. Sekarang kita akan mencoba membuat tabel port bit

(PB) yang lebih sederhana dan mudah diingat dari yang sudah ada pada traiSner

MIDICOM. Tabelnya adalah :

PB 7 PB 6 PB 5 PB 4 PB 3 PB 2 PB 1 PB 0

07H 0 0 0 0 0 1 1 1

06H 0 0 0 0 0 1 1 0

05H 0 0 0 0 0 1 0 1

04H 0 0 0 0 0 1 0 0

03H 0 0 0 0 0 0 1 1

02H 0 0 0 0 0 0 1 0

Page 137: Isi Buku Mikro Teori

01H 0 0 0 0 0 0 0 1

00H 0 0 0 0 0 0 0 0

Sedangkan tabel input dan outputnya adalah :

INPUT OUTPUT

PB

7

PB6 PB5 PB4 PB3 PB2 PB1 PB0 D7 D6 D5 D4 D3 D2 D1 D0

0 0 0 0 0 1 1 1 0 1 1 1 1 1 1 1

0 0 0 0 0 1 1 0 1 0 1 1 1 1 1 1

0 0 0 0 0 1 0 1 1 1 0 1 1 1 1 1

0 0 0 0 0 1 0 0 1 1 1 0 1 1 1 1

0 0 0 0 0 0 1 1 1 1 1 1 0 1 1 1

0 0 0 0 0 0 1 0 1 1 1 1 1 0 1 1

0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 1

0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0

Dari tabel diatas kita dapat membuat rangkaian untuk input decoder yaitu :

Input 1 = PB2

Input 2 = PB1

Input 3 = PB0

Materi berikutnya adalah tentang menampilkan huruf (karakter) pada 7

segmen yang ada pada trainer MIDICOM dengan membuat program untuk

menampilkannya. Untuk lebih jelasnya kita langsung masuk ke contoh soal :

1. a. Rancang suatu program untuk menampilkan kata “ S E L A S A “ pada

unit peraga 7-segmen yang ada pada trainer MIDICOM.

b. Seperti no.1 tetapi hanya muncul selama 0,5 detik kemudian stop

2. Seperti no.1 tetapi dengan berkedip 2 kali per detik.

Page 138: Isi Buku Mikro Teori

3. Seperti no.2 tetapi hanya yampil selama 5 detik saja kemudian stop.

4. Seperti no.3 tetapi yang berkedip hanya huruf awal dan huruf akhirnya

saja (huruf S dan huruf A terakhir saja yang berkedip).

Jawab :

1. Sebelum mengerjakan soal ini, kita harus memahami dulu bahwa

sebenarnya huruf-huruf diatas tidak tampil atau keluar bersama-sama

tetapi keluar secara bergantian, tetapi karena waktu yang sangat cepat

sehingga mata kita memandangnya seolah-olah secara bersamaan.

D7 D6 D5 D4 D3 D2 D1 D0

- S E L A S A -

Sekarang kita misalkan, port yang sudah ditentukan untuk trainer

MIDICOM diletakkan pada alamat A000H s.d. A007H dan pola

karakternya diletakkan pada alamat B000H s.d. B007H.

A000H 50 B000H 00

A001H 40 B001H 6D

A002H 10 B002H 79

A003H 00 B003H 38

A004H D0 B004H 77

A005H C0 B005H 6D

A006H 90 B006H 77

A007H 80 B007H 00

Bagan alir untuk soal no.1a:

Page 139: Isi Buku Mikro Teori

Program untuk soal no.1a:

LOOP 1 : LXI H,A007

LOOP 2 : MOV A,M

MOV PORT#41,A

MVI B,0

MOV PORT4#0,A

MVI D,E2

CALL FFA

MVI H,A0

DCR L

JP LOOP 2

JMP LOOP 1

RST 1

Page 140: Isi Buku Mikro Teori

Soal no.1b, seperti soal no.1a tetapi hanya muncul 0,5 detik, untuk itulah kita

perlu mengurangi jumlah frame menjadi setengahnya yaitu dari 60 frame menjadi

30 frame heksadesimal yang ditulis dengan 1E

Dari bagan alir dapat kita lihat adanya clear display sebelum stop karena muncul

0,5 detik dan setelah itu mati.

Bagan alir Program :

MVI C,1E

LOOP 1 : LXI H,A007

LOOP 2 : MOV A,M

MOV PORT#41,A

MVI H,B0

MOV A,M

MOV PORT#40,A

MVI DE,2

CALL FFA

MVI H,A0

DCR L

JP LOOP 2

DCR C

JNZ LOOP 1

MVI A,00

MOV PORT#40,A

RST 1

Page 141: Isi Buku Mikro Teori

2. Agar karakter yang ditampilkan dari soal no.1a berkedip 2 kali per

detik, kita harus membuat karakter itu muncul selama seperempat

detik, kemudian tidak muncul selama seperempat detik berikutnya dst.

Untuk itulah frame harus dibuat dari 60 yaitu sebesar 15

heksadesimal atau 0F.

Bagan alir :

Program :

LOOP 1 : MVI C,0F

LOOP 2 : LXI H,A007

LOOP 3 : MOV A,M

MOV PORT#41,A

MVI H,B0

MOV A,M

MOV PORT#40,A

MVI DE,2

CALL FFA

MVI H,A0

DCR L

JP LOOP 3

DCR C

JNZ LOOP 2

DELAY DETIK

JMP LOOP 1

Page 142: Isi Buku Mikro Teori

3 . Soal no.3 berhubungan dengan soal no.2, kalau no.2 berkedip dua kali

dalam satu detik secara terus menerus, sedangkan pada no.3 berkedip

dua kali dalam satu detik tetapi selama 5 detik saja. Untuk soal seperti

ini kita membuat program seperti pada no.2 dan ditambah dengan

menambahkan counter agar muncul selama 5 detik saja. Karena kita

sudah membuat untuk program selama detik, yaitu pada detik

saat muncul dan detik saat tak muncul maka counter yang

digunakan 10 heksadesimal atau ditulis A agar setelah 5 detik program

berhenti.

Page 143: Isi Buku Mikro Teori

Flowchart :

Page 144: Isi Buku Mikro Teori

MVI B,AH

LOOP 1 : MVI C,0F

LOOP 2 : LXI H,A00F

LOOP 3 : MOV A,M

MOV PORT#41,A

MVI H,B0

MOV A,M

MOV PORT#40,A

MVI DE,2

CALL FFA

MVI H,A0

DCR L

JP LOOP 3

DCR C

JNZ LOOP 2

MVI A,00

MOV PORT#40,A

DELAY DETIK

DCR B

JNZ LOOP 1

RST 1

Page 145: Isi Buku Mikro Teori

3. Untuk soal no.4 kita harus menambah unit memori untuk

menempatkan pola karakter yang baru. Seperti telah diketahui

sebelumnya, pada alamat memori B000 s.d..B007 ditempatkan untuk

menampilkan karakter SELASA dan supaya huruf S dan huruf A yang

terakhir terlihat berkedip maka pada detik berikutnya “karena soal

ini berhubungan dengan soal no.3” karakter yang ditampilkan adalah

ELAS dan detik berikutnya kembali lagi ke SELASA dst selama 5

detik. Misal , untuk menempatkan karakter yang baru ditempatkan

pada alamat memori C000 s.d. C007, lihat gambar berikut :

Program :

MVI

B,AH

LOOP 1 : MVI C,0F

LOOP 2 : LXI H,A00F

LOOP 3 : MOV A,M

MOV PORT#41,A

MVI H,B0

MOV A,M

MOV PORT#40,A

MVI DE,2

CALL FFA

MVI H,A0

DCR L

JP LOOP 3

DCR C

JNZ LOOP 2

MVI C,0F

LOOP 4: LXI H,A00F

LOOP 6: MOV A,M

MOV PORT#41,A

MVI H,B0

MOV A,M

MOV PORT#40,A

MVI DE,4

CALL FFA

MVI H,A0

DCR L

C000

C001

C002

C003

C004

C005

C006

C007

00

00

79

38

77

6D

00

00

Page 146: Isi Buku Mikro Teori

JP LOOP 6

DCR C

JNZ LOOP 4

DCR B

JNZ LOOP 1

BAB 3

PROGRAMMABLE PERIPHERAL

INTERFACE

( PPI )

3.1 PPI 8255 (PROGRAMMABLE PERIPHERAL INTERFACE)

Dalam perancangan sistem, seringkali kita menggunakan komputer sebagai

alat pengontrol terhadap sistem yang kita buat. Komunikasi antara komputer

dengan alat yang

Page 147: Isi Buku Mikro Teori

dikontrol dijembatani oleh suatu rangkaian yang disebut dengan rangkaian

antarmuka. Rangkaian antarmuka yang banyak digunakan dan banyak terdapat di

pasaran adalah kartu antarmuka yang menggunakan IC PPI 8255.PPI 8255 adalah

IC yang dirancang untuk membuat port masukan dan keluaran paralel, IC ini

mempunyai 24 bit I/O yang terorganisir menjadi 3 port 8 bit ( 24 jalur ) dengan

nama Port A, Port B, dan Port C.

D7 ¡V D0 RESET INPUT

RESET CHIP SELECT

CS READ INPUT

RD WRITE INPUT

WR PORT ADDRESS

A0 ¡V A1 PORT A (BIT)

PA 7 PA 0 PORT B (BIT)

PB 7 PB 0 PORT C (BIT)

Vcc 5 VOLTS

GND 0 VOLTS

Konfigurasi dari 24 jalur I/O ini bisa digunakan untuk masukan, keluaran,

ataupun biderectional ( dua arah ). Pada I/O yang dikontrol secara software akan

Page 148: Isi Buku Mikro Teori

lebih mudah bila dibandingkan dengan pengontrolan secara hardware. Untuk

memilih port 8255 digunakan dua buah address pin, yaitu A1 dan A0, dengan

kombinasi sebagai berikut :

A1=0; A0=0; ==> memilih port A

A1=0; A0=1; ==> memilih port B

A1=1; A0=0; ==> memilih port C

A1=1; A0=1; ==> memilih Control Word ( CW )

CS harus dibuat rendah pada saat pembacaan atau penulisan pada PPI ini.

Sinyal reset bila aktif akan membersihkan seluruh register internal PPI dan

membuat PPI berfungsi dalam mode masukan ( mode input ). Pemilihan

konfigurasi port masukan atau keluaran pada IC 8255 ini dilakukan dengan cara

mengirim control word melalui D7 s/d D0 pada saat A1 dan A0 masing-masing

berlogic 1. Tabel operasi 8255 adalah sebagai berikut :

A1 A0 RD WE CS Keterangan

0 0 0 1 0 Port A ke bus data

0 1 0 1 0 Port B ke bus data

1 0 0 1 0 Port C ke bus data

0 0 1 0 0 Bus data ke port A

0 1 1 0 0 Bus data ke port B

1 0 1 0 0 Bus data ke port C

1 1 1 0 0 Bus data ke bus kontrol

Page 149: Isi Buku Mikro Teori

X X X X X Bus data three state

1 1 0 1 0 Ilegal

X X 1 1 0 Bus data three state

3.2 PERANTARAAN PPI 8255

Misalnya kita akan menyimpan alamat I/O PPI pada alamat 300H s/d 303H.

Maka pengaturan port-portnya adalah sebagai berikut : Port A = 300H; Port B =

301H; Port C = 302H dan Control Word = 303H Untuk mengirim data ke port A

yang telah diprogram sebagai port keluaran dapat digunakan instruksi :

MOV DX, 300H

MOV AL, data_out

OUT DX,AL

Sedangkan bila telah diprogram sebagai masukan, untuk membaca data dari

port A dapat dilakukan dengan instruksi berikut ini:

MOV DX,300H

IN AL,DX

Hal yang sama juga dapat digunakan untuk port B dengan alamat 301H dan

port C dengan alamat 302H. Mengenai register dari mikroprosesor yang

digunakan untuk tempat menyimpan alamat dan data terserah pemogram, asalkan

register tersebut sesuai dengan operasi yang akan dilakukan.

Ada tiga mode utama yang dapat diprogramkan ke PPI, yaitu :

Page 150: Isi Buku Mikro Teori

1. Mode 0

Mode 0 adalah mode operasi masukan dan keluaran yang paling sederhana

(basic input/ output operation). Pada mode ini tiap port pada PPI hanya dapat

digunakan sebagai masukan atau keluaran.

Dalam mode 0, 24 jalur I/O dibagi menjadi 2 group (lihat gambar 2.6), yaitu

group A dan group B. Group A terdiri dari 8 jalur port A dan 4 jalur port C upper.

Group B terdiri dari 8 jalur port B dan 4 jalur port C lower2.

2. Mode 1

Mode 1 adalah mode operasi masukan dan keluaran yang terkontrol (strobed

input/output operation). Pada mode ini port A dan port B dapat digunakan

sebagai masukan atau keluaran, tergantung kontrol dari port C.

Dalam mode 1, PPI hanya menggunakan dua buah port yaitu port A dan port

B. Untuk operasi masukan atau keluaran, masing-masing port mentransfer data

bersamaan dengan adanya Strobe atau sinyal Handshaking. Port A dan Port B

menggunakan semua bit dari port C.

3. Mode 2

Mode 2 adalah mode operasi masukan dan keluaran secara dua arah

(bidirectional input/output operation). Pada mode ini, port A sebagai bus data dua

arah yang dikontrol oleh port C.

Dalam mode ini hanya port A yang dapat digunakan, namun operasi yang

dilakukan dapat dua arah ( biderectional ) dengan data yang berbeda untuk setiap

operasi tulis atau operasi baca.

Mode 1 dan 2 adalah mode operasi yang memerlukan sinyal kontrol

input/output atau handshaking signal (sinyal jabat tangan) yaitu sinyal yang

Page 151: Isi Buku Mikro Teori

menyatakan kesiapan alat untuk dikenai proses baca atau tulis. Gambaran mode

operasi pada PPI 8255 dapat dilihat dalam Gambar 3.

Gambar 3. Mode Operasi PPI 8255,

a). mode 0, b), mode 1, c). mode 2.

Diantara ketiga mode operasi di atas, mode 0 adalah mode yang paling

sering digunakan karena kemudahannya. Dengan mode 0, perangkat lunak tidak

perlu membaca data port kontrol secara terus menerus untuk menentukan proses

baca/tulis terhadap alat. Kapanpun kita ingin membaca atau menulis data pada

port dapat langsung dilakukan saat itu juga

Gambar dibawah ini memperlihatkan dua buah group kontrol port, yaitu

group A dan group B.

Page 152: Isi Buku Mikro Teori

Kontrol group A mengontrol mode transfer data (dari atau ke) 8 bit port A

dan 4 bit dari port C upper. Sedangkan kontrol group B mengontrol mode transfer

data (dari atau ke) 8 bit port B dan 4 bit dari port C lower. Kontrol data yang

dituliskan dari kontrol register akan menentukan karakteristik pengoperasian PPI.

Pada gambar tersebut terlihat D5-D7 digunakan untuk mengontrol grup B.

D7 menentukan port C lower (PC0-PC3), logic1 diprogram untuk masukan

sedangkan logic 0 diprogram sebagai keluaran. D6 menentukan port B (PB0-

PB7), logic1 diprogram untuk masukan sedangkan logic 0 diprogram sebagai

keluaran.

D5 digunakan untuk memilih mode port B yang diinginkan, yakni mode 0

atau mode 1. D1 sampai D4 digunakan untuk mengontrol grup A. D4 menentukan

Page 153: Isi Buku Mikro Teori

port C upper (PC4-PC7), logic 1 diprogram sebagai masukan dan logic 0

dipogram sebagai keluaran. D3 menentukan port A (PA0-PA7), logic1 diprogram

untuk masukan sedangkan logic 0 diprogram sebagai keluaran.

Sedangkan D1 dan D2 akan menentukan mode untuk group A; bila 00

berarti modus 0, bila 01 berarti modus 1, dan bila 1X berarti modus 2. Modus 0

dinamakan simple input/output. Bila diprogram sebagai keluaran, data yang ada di

port keluaran akan ditahan, sedangkan bila diprogram sebagai port masukan,

masukan ini tidak ditahan. Sedangkan D0 adalah modus set flag. D0 ini harus

selalu berlogic 1 agar PPI dapat beroperasi.

Contoh soal :

Rancang suatu memory decoder dengan IC decoder untuk menghubungkan

suatu prosesor yang memiliki 24 saluran alamat dengan unit memory yang ada

:

EPROM I 16 Kbyte EPROM II 16 Kbyte RAM I 16 Kbyte RAM II 16 Kbyte

Input chip select dari semua IC memory adalah “ aktif Low “ .

Jawab;

Mencari input yang digunakan :

FPB dari 64 dan 16 =>16 maka ada 4 kelompok sehingga jumlah bit yang

digunakan 2 byte

Maka input yang digunakan : A14 , A15

Memory Map Alamat : 00000 - 03FFF

Alamat : 04000 - 07FFF

EPROM

16 Kb

EPROM

16 Kb

RAM

16 Kb

RAM

16 Kb

Kosong

Don’t care

Page 154: Isi Buku Mikro Teori

Alamat : 08000 - 0BFFF

Alamat : 0C000 - 0FFFF

Alamat : 10000 - FFFFF

Tabel Kebenaran :

Input OutputA15 A14 Cs0 Cs1 Cs2 Cs3

0 0 0 1 1 10 1 1 0 1 11 0 1 1 0 11 1 1 1 1 0

Rangkaian Decoder :

BAB 4

TRAINER MIDICOM

Untuk melakukan percobaan – percobaan mikroprosesor diperlukan suatu

trainer mikroprosesor yang mudah dioperasikan dan fungsinya dapat

A14

MIKROPROSESOR

A15

EPROM I RAM IIRAM IEPROM II

Page 155: Isi Buku Mikro Teori

dikembangkan sesuai dengan kemampuan pemrogram. Trainer yang digunakan

yaitu trainer MIDICOM yang berbasis mikroprosesr INTEL 8085.

Trainer MIDICOM dipilih karena alasan-alasan berikut :

# Struktur organisasinya mudah dipelajari

# Diagram blok untuk sistem mikroprosesor ini sesuai dengan tata letak

komponen pada board

# Dirancang khusus untuk keperluan di pendidikan

# Trainer tersebut telah dilengkapi dengan fasilitas input /output, seperti

monitor dan ASCII keyboard sehingga memudahkan proses belajar

# Telah mempunyai fasilitas untuk interfacing dan assembler

Penggunaan mikroprosesor INTEL 8085 pada trainer MIDICOM ini sangat

menguntungkan karena dengan memahami mikroprosesor tersebut akan

mempermudah pemakai untuk mempelajari prosesor-prosesor generasi yang lebih

baru seperti INTEL 8088, INTEL 80286 dan lain- lain

Sebelum kita dapat menggunakan suatu sistem mikroprosesor, maka terlebih

dahulu kita harus mengenal peta memori yang dipakai dalam sistem tersebut.

Karena dengan mengetahui peta memori, kita dapat menempatkan program dan

atau data pada alamat-alamat yang tersedia khusus untuk pemakai. Pada trainer

MIDICOM peta memorinya disusun seperti gambar dibawah ini :

Page 156: Isi Buku Mikro Teori

Dari peta memori tersebut kita dapat mengetahui bahwa program monitor

menempati daerah EPROM yang hanya bisa dibaca tetapi tidak bisa ditulis.

Daerah RAM yang menempati alamat 6000h sampai dengan 67FFh dipergunakan

sebagai memori kerja monitor dan selanjutnya mulai alamat 6800h sampai dengan

Page 157: Isi Buku Mikro Teori

6FFFh digunakan untuk daerah kerja BASIC. Untuk program dan data,

pemrogram dapat memanfaatkan daerah RAM mulai dari alamat 7000h – FFFFh.

Dalam daerah tersebut dapat saja dimasukkan lebih dari satu program asal saja

penempatannya tidak tumpang tindih. Dengan demikian, program yang akan

dimasukkan data ditempatkan pada alamat-alamat antara 7000h dan FFFFh.

A. Cara menghidupkan trainer MIDICOM

Untuk menghidupkan trainer MIDICOM pertama - tama periksa apakah

kabel penghubung daya telah terpasang dengan benar. Kemudian ubah posisi

saklar yang terletak di sudut kiri atas modul ke posisi ON. Pada saat saklar daya

diubah ke posisi ON unit peraga akan menampilkan :

Ln. 85 3.2

Keterangan :

Ln = menunjukkan pabrik pembuatnya (Lucas Nulle)

85 = menunjukkan jenis prosesor yang dipergunakan (INTEL 8085)

3.2 = menunjukkan versi dari monitor program

Namun, setiap kali tombol RESET ditekan maka unit peraga akan

menampilkan pola yang sama. Pola tersebut akan selalu ditampilkan setiap kali

prosesor memasuki program monitor yang artinya trainer siap menerima instruksi.

B. Melihat dan mengganti isi register

Untuk melihat data yang ada pada suatu register, maka pertama-tama

tekanlah tombol REG, kemudian tekanlah tombol-tombol huruf yang sesuai

dengan nama register yang akan kita lihat. Untuk melihat isi register yang lainnya,

tekanlah tombol + satu kali, maka unit peraga akan menampilkan data yang

berada pada register berikutnya. Dan sebaliknya untuk fungsi tombol - .

Sedangkan untuk mengganti isi suatu register, pertama-tama tekanlan

tombol REG , kemudian register yang kita ingin ubah misalnya A, setelah itu

tekanlah tombol - tombol angka yang sesuai dengan yang diinginkan misalnya

2A.

Page 158: Isi Buku Mikro Teori

C. Melihat dan mengubah isi suatu lokasi memori (RAM)

Untuk melihat data yang berada pada suatu lokasi memori baik itu pada

RAM maupun ROM, yaitu dengan menekan tombol MEM . Setelah itu, unit

peraga akan menampilkan 4 digit, yang harus kita isi dengan alamat yanga akan

kita tuju. Setelah diisi alamatnya, tekanlah tombol + untuk menampilkan data

yang berada pada alamat tersebut.

Sedangkan untuk mengubah data yang berada pada alamat memori sama

seperti pada mengganti data pada register.

D. Menyisipkan data ke dalam suatu blok memori

Untuk menyisipkan data pada suatu blok memori tanpa harus mengubah

semua data yang akan disisipkan pada alamat-alamat tertentu. Dapat dilaksanakan

dengan menekan tombol INS (insert), dilanjutkan dengan memasukkan alamat

awal dari kode/data yang akan disisipkan (4 digit). Kemudian tekan tombol +

dilanjutkan dengan memasukkan alamat terakhir dari blok memori yang akan

disisipkan data baru. Setelah selesai tekanlah tombol EX.

Contoh

Masukkan data secara berurutan mulai dari 00h sampai dengan 05h ( data-

data yang harus dimasukkan adalah 00h, 01h, 02h, 03h, 04h dan 05h ) pada blok

memori mulai dari alamat 8000h sampai dengan alamat 8005h, catat hasilnya

pada tabel berikut ini :

Register A B C D PC

Data 9C 5F BE 9C 800A

Sisipkan tiga byte data baru ke dalam blok memori di atas (data yang harus

disisipkan adalah 2Ah, 7Ch dan F2h) pada lokasi mulai alamat 8002h (yaitu

alamat 8002h, 8003h dan 8004h). Tekan tombol berikut :

Page 159: Isi Buku Mikro Teori

Keterangan :

# 8002 adalah alamat awal tempat data baru akan disisipkan

# 8005 adalah alamat akhir dari blok memori sebelum data beru

disisipkan

# 2Ah, 7Ch dan F2h adalah data-data baru yang akan disisipkan pada

blok memori alamat 8000h sampai 8005h

E. Menjalankan program

Untuk menjalankan program tekanlah tombol GO, kemudian

masukan alamat awal dari program yang akan dieksekusi. Dan selanjutnya tekan

tombol EX sebagai perintah dimulainya pelaksanaan proses eksekusi tersebut.

Contoh

Untuk melaksanakan program yan dimulai dengan alamat awal 7000h, tombol-

tombol yang harus ditekan adalah :

F. Menggandakan (meng-copy) suatu blok memori

Untuk menggandakan suatu blok memori yang berisikan data atau program

dapat dilakukan dengan menggunakan instruksi copy (CPY).

Setelah kita mengetahui cara kerja dan fungsi yang terdapat pada trainer

MIDICOM, kita dapat membuat program yang kita inginkan.