1. Spesifikasi Umum
Bus data dua arah 8 bit
Bus alamat 16 bit
72 set instruksi dengan 7 mode
pengalamatan
Kebutuhan tegangan 5,0 volt
Kompatibel dengan TTL.
Frekuensi kerja 2,0 MHz.
2. Fungsi Pin
Mempunyai 40 pin dual in line diperlihatkan
dalam gambar 1.1. Gambar 1.1.
Clock (Ø1, Ø2) sebagai masukan pulsa clock Susunan pin mikroprosessor 6800
dua fasa yang tidak tumpang tindih.
Bus alamat (A0 – A15) sebagai saluran kode
alamat dari mikroprosessor ke memori atau peripheral. Pin-pin bus alamat terhubung ke
bus internal melalui output buffer (buffer satu arah tiga kondisi). Jika buffer dalam kondisi
OFF hubungan antara pin-pin bus alamat dengan bus internalnya tidak terhubung, kondisi
ini terjadi jika pin TSC dalam kondisi “1” (high).
Bus data (D0 – D7) sebagai saluran data dari mikroprosessor ke memori, periperal atau
dari memori, periperal ke mikroprosessor. Pin-pin bus data terhubung ke bus internal
melalui data buffer (buffer dua arah tiga kondisi). Saat mikroprosessor melakukan operasi
Read, data masuk ke mikroprosessor. Saat mikroprosessor melakukan operasi Write, data
keluar dari mikroprosessor. Jika buffer dalam kondisi OFF hubungan antara pin-pin bus
data dengan bus internalnya tidak terhubung, kondisi ini terjadi jika pin DBE dalam kondisi
“0” (low).
Data Bus Enable (DBE) merupakan masukan kontrol tiga keadaan aktif pada kondisi “!”
(high), untuk mengontrol data buffer. Jika DBE dalam kondisi “1” (high) pin-pin bus data
terhubung ke bus internalnya. Dalam operasi normal, DBE diberi sinyal clock Ø2.
Bus available (BA) merupakan keluaran kontrol, jika BA dalam kondisi “1” (high)
menyatakan bahwa mikroprosessor telah berhenti dan bus alamat siap untuk menyalurkan
kode alamat yang baru.
Read/Write (R/W) merupakan keluaran kontrol untuk mengontrol memori dan periperal
saat mikroprosessor melakukan operasi read atau write. Saat mikroprosessor melakukan
operasi write, pin R/W dalam kondisi “0” (low). Saat mikroprosessor melakukan operasi
read, pin R/W dalam kondisi “1” (high).
Reset merupakan masukan kontrol untuk me-reset dan men-start mikroprosessor dari
kondisi penurunan tegangan sumber atau saat sistem mikroprosessor di-on-kan.
Jika input ini menerima kondisi “1” setelah kondisi “0”, mikroprosessor memulai sikuensi
reset. Selama sikuensi reset, isi dari dua lokasi memori (FFFE, FFFF) dimasukkan kedalam
Pencacah Program untuk menunjuk awal program rutin reset. Selama rutin reset, bit
Interrupt mask dalam kondisi set dan harus di-clear dibawah kontrol program sebelum
mikroprosessor dapat diinterupsi melalui IRQ.
1 / 15
Mikoprosessor
2 / 15
Mikoprosessor
3 / 15
Mikoprosessor
4. Instruksi-Instruksi MC6800
Mikroprosessor 6800 mempunyai 72 set instruksi dengan 197 kode operasi yang dapat
dieksekusi. Instruksi-instruksi tersebut dikategorikan menjadi instruksi; aritmatik, lojik, data
handling, test data, register indeks dan stak pointer, lompat dan cabang, kode kondisi.
4 / 15
Mikoprosessor
Instruksi-instruksi aritmatik.
Mne- Operasi 5 4 3 2 1 0
Operasi Penjelasan Singkat
monic Boolean H I N Z V C
Menjumlahkan isi Acc A dengan isi dari suatu lokasi memori dan
ADDA A+M→A ↕ ● ↕ ↕ ↕ ↕
hasilnya diberikan ke Acc A
Add
Menjumlahkan isi acc B dengan isi dari suatu lokasi memori dan
ADDB B+M→B ↕ ● ↕ ↕ ↕ ↕
hasilnya diberikan ke Acc B
Menjumlahkan isi Acc A dengan isi Acc B dan hasilnya diberikan
Add Acmltrs ABA A+B→A ↕ ● ↕ ↕ ↕ ↕
ke Acc A
Menjumlahkan isi Acc A dengan isi dari suatu lokasi memori
ADCA A+M+C→A ↕ ● ↕ ↕ ↕ ↕
dengan isi Carry dan hasilnya diberikan ke Acc A
Add with Carry
Menjumlahkan isi Acc B dengan isi dari suatu lokasi memori
ADCB B+M+C→B ↕ ● ↕ ↕ ↕ ↕
dengan isi Carry dan hasilnya diberikan ke Acc B
Complement 2’s Isi memori dinegatifkan dengan cara, 00 dikurangi dengan isi
(Negate) NEG 00-M→M ● ● ↕ ↕ 1 2 suatu lokasi memori dan hasilnya diberikan ke memori pada lokasi
yang sama
Isi Acc A dinegatifkan dengan cara, 00 dikurangi dengan isi Acc A
NEGA 00-A→A ● ● ↕ ↕ 1 2
dan hasilnya diberikan ke Acc A
Isi Acc B dinegatifkan dengan cara, 00 dikurangi dengan isi Acc B
NEGB 00-B→B ● ● ↕ ↕ 1 2
dan hasilnya diberikan ke Acc B
Decimal Adjust,
DAA * ● ● ↕ ↕ ↕ 3 Menegubah isi Acc A ke format BCD (Binary Coded Decimal)
A
Subtract SUBA A-M→A Mengurangkan isi Acc A dengan isi dari suatu lokasi memori dan
↕ ● ↕ ↕ ↕ ↕
hasilnya diberikan ke Acc A
SUBB B-M→B Mengurangkan isi Acc B dengan isi dari suatu lokasi memori dan
↕ ● ↕ ↕ ↕ ↕
hasilnya diberikan ke Acc B
Subtract Acmltrs SBA A-B→A Mengurangkan isi Acc A dengan isi Acc B dan hasilnya diberikan
↕ ● ↕ ↕ ↕ ↕
ke Acc A
Subtract With SBCA A-M-C→A Mengurangkan isi Acc A dengan isi dari suatu lokasi memori
↕ ● ↕ ↕ ↕ ↕
Carry dengan isi Carry dan hasilnya diberikan ke Acc A
SBCB B-M-C→B Mengurangkan isi Acc B dengan isi dari suatu lokasi memori
↕ ● ↕ ↕ ↕ ↕
dengan isi Carry dan hasilnya diberikan ke Acc B
* Digunakan setelah operasi aritmatik BCD ABA, ADC dan ADD; setiap 8bit dianggab berisi dua bilangan
BCD 4-bit. DAA menambahkan 0110 ke 4 bit terendah jika bilangan terendah >1001 atau jika instruksi
sebelumnya menyebabkan Half Carry. Menambahkan 0110 ke 4 bit tertinggi jika 4 bit tertinggi >1001
atau jika instruksi sebelumnya menyebabkan Carry. Juga menambahkan 0110 ke 4 bit tertinggi jika 4
bit terendah >1001 dan 4 bit tertinggi = 9.
1 (Bit V) Test: Hasil = 10000000?
2 (Bit C) Test: Hasil = 00000000?
3 (Bit C) Test: Nilai desimal 4 bit tertinggi > 9?
(Tidak di-clear jika sebelumnya set)
● Tidak berubah
↕ Berubah tergantung dari hasil operasi yang dilakukan; kondisi 1 untuk Set dan kondisi 0 untuk Reset
5 / 15
Mikoprosessor
Load LDAA M→A ● ● ↕ ↕ R ● Mengisi Acc A dengan data dari suatu lokasi memori
Accumulator LDAB M→B ● ● ↕ ↕ R ● Mengisi Acc B dengan data dari suatu lokasi memori
ROL a) ● ● ↕ ↕ 6 ↕ Merotasi ke kiri 1 bit isi dari suatu lokasi memori
Rotate Left ROLA a) ● ● ↕ ↕ 6 ↕ Merotasi ke kiri 1 bit isi Acc A
ROLB a) ● ● ↕ ↕ 6 ↕ Merotasi ke kiri 1 bit isi Acc B
ROR b) ● ● ↕ ↕ 6 ↕ Merotasi ke kanan 1 bit isi dari suatu lokasi memori
Rotate Right RORA b) ● ● ↕ ↕ 6 ↕ Merotasi ke kanan 1 bit isi Acc A
RORB b) ● ● ↕ ↕ 6 ↕ Merotasi ke kanan 1 bit isi Acc B
ASL c) ● ● ↕ ↕ 6 ↕ Menggeser ke kiri 1 bit isi dari suatu lokasi memori
Shift Left,
ASLA c) ● ● ↕ ↕ 6 ↕ Menggeser ke kiri 1 bit isi Acc A
Arithmatic
ASLB c) ● ● ↕ ↕ 6 ↕ Menggeser ke kiri 1 bit isi Acc B
ASR d) ● ● ↕ ↕ 6 ↕ Menggeser ke kanan 1 bit isi dari suatu lokasi memori
Shift Right,
ASRA d) ● ● ↕ ↕ 6 ↕ Menggeser ke kanan 1 bit isi Acc A
Arithmatic
ASRB d) ● ● ↕ ↕ 6 ↕ Menggeser ke kanan 1 bit isi Acc B
LSR e) ● ● R ↕ 6 ↕ Menggeser ke kanan 1 bit isi dari suatu lokasi memori
Shift Right, Logic LSRA e) ● ● R ↕ 6 ↕ Menggeser ke kanan 1 bit isi Acc A
LSRB e) ● ● R ↕ 6 ↕ Menggeser ke kanan 1 bit isi Acc B
6 / 15
Mikoprosessor
Instruksi-Instruksi Lojik
Mne- Operasi 5 4 3 2 1 0
Operasi Penjelasan Singkat
monic Boolean H I N Z V C
Meng-AND-kan bit-bit isi Acc A dengan bit-bit yang setara isi
ANDA A.M→A ● ● ↕ ↕ R ●
dari suatu lokasi memori dan hasilnya diberikan ke Acc A
And
Meng-AND-kan bit-bit isi acc B dengan bit-bit yang setara isi
ANDB B.M→B ● ● ↕ ↕ R ●
dari suatu lokasi memori dan hasilnya diberikan ke Acc B
Me-NOT-kan bit-bit isi dari suatu lokasi memori dan hasilnya
COM M →M ● ● ↕ ↕ R S
di lokasi memori yang sama
Complement, 1’s
COMA A →A ● ● ↕ ↕ R S Me-NOT-kan bit-bit isi Acc A dan hasilnya di Acc A
COMB B →B ● ● ↕ ↕ R S Me-NOT-kan bit-bit isi Acc B dan hasilnya di Acc B
Meng-Eksklusif OR-kan bit-bit isi Acc A dengan bit-bit yang
EORA A ⊕M →A ● ● ↕ ↕ R ●
setara isi dari suatu lokasi memori dan hasilnya di Acc A
Exclusive OR
Meng-Eksklusif OR-kan bit-bit isi Acc B dengan bit-bit yang
EORB B ⊕M →B ● ● ↕ ↕ R ●
setara isi dari suatu lokasi memori dan hasilnya di Acc B
Meng-OR-kan bit-bit isi Acc A dengan bit-bit yang setara isi
ORA A + M →A ● ● ↕ ↕ R ●
dari suatu lokasi memori dan hasilnya di Acc A
OR, Inclusive
Meng-OR-kan bit-bit isi Acc B dengan bit-bit yang setara isi
ORB B + M →B ● ● ↕ ↕ R ●
dari suatu lokasi memori dan hasilnya di Acc B
7 / 15
Mikoprosessor
Copare Index Membandingkan 16 bit isi register indeks dengan 16 bit isi
CPX (XH/XL) – (M/M+1) ● ● 1 ↕ 2 ●
Reg dari dua lokasi memori
Decrement Index Mengurangi dengan 1isi register indeks dan hasilnya di
DEX X-1→X ● ● ● ↕ ● ●
Reg register indeks
Decrement Stack Mengurangi dengan 1 isi register stack dan hasilnya di
DES SP-1→SP ● ● ● ● ● ●
Pointer register stack
Increment Index Menambah dengan 1isi register indeks dan hasilnya di
INX X+1→X ● ● ● ↕ ● ●
Reg register indeks
Increment Stack Menambah dengan 1 isi register stack dan hasilnya di
INS SP+1→SP ● ● ● ● ● ●
Pointer register stack
M→XH, Memuati register indeks dengan 16 bit data dari dua lokasi
Load Index Reg LDX ● ● 3 ↕ R ●
(M+1) →XL memori
M→SPH, Memuati register stack dengan 16 bit data dari dua lokasi
Load Stack Pointer LDS ● ● 3 ↕ R ●
(M+1) →SPL memori
XH→M,
Store Index Reg STX ● ● 3 ↕ R ● Menyimpan 16 bit isi register indeks ke dua lokasi memori
XL→ (M+1)
Stack Pointer→
TSX SP→ X ● ● ● ● ● ● Mentransfer 16 bit isi register stack ke register indeks
Index Reg
Instruksi-Instruksi Branch
Mne- 5 4 3 2 1 0
Operasi Branch Test Penjelasan Singkat
monic H I N Z V C
8 / 15
Mikoprosessor
Mne- 5 4 3 2 1 0
Operasi Branch Test Penjelasan Singkat
monic H I N Z V C
Mencabang ke suatu lokasi memori jika hasil operasi
Branch if ≤ Zero BLE Z + (N ⊕V) = 1 ● ● ● ● ● ●
sebelumnya membuat Z + (N ⊕V) = 1.
9 / 15
Mikoprosessor
Mne- 5 4 3 2 1 0
Extend
Immed
Operasi Operasi Boolean
Direct
Index
monic
Inher
H I N Z V C
ADDA A+M→A ↕ ● ↕ ↕ ↕ ↕
Add
ADDB B+M→B ↕ ● ↕ ↕ ↕ ↕
Add Acmltrs ABA A+B→A ↕ ● ↕ ↕ ↕ ↕
ADCA A+M+C→A ↕ ● ↕ ↕ ↕ ↕
Add with Carry
ADCB B+M+C→B ↕ ● ↕ ↕ ↕ ↕
Complement 2’s NEG 00-M→M ● ● ↕ ↕ 1 2
(Negate)
NEGA 00-A→A ● ● ↕ ↕ 1 2
NEGB 00-B→B ● ● ↕ ↕ 1 2
Decimal Adjust,
DAA * ● ● ↕ ↕ ↕ 3
A
Subtract SUBA A-M→A ↕ ● ↕ ↕ ↕ ↕
SUBB B-M→B ↕ ● ↕ ↕ ↕ ↕
Subtract Acmltrs SBA A-B→A ↕ ● ↕ ↕ ↕ ↕
Subtract With SBCA A-M-C→A ↕ ● ↕ ↕ ↕ ↕
Carry
SBCB B-M-C→B ↕ ● ↕ ↕ ↕ ↕
Clear CLR 00→M ● ● R S R R
CLRA 00→A ● ● R S R R
CLRB 00→B ● ● R S R R
Decrement DEC M-1→M ● ● ↕ ↕ 4 ●
DECA A-1→A ● ● ↕ ↕ 4 ●
DECB B-1→B ● ● ↕ ↕ 4 ●
Increment INC M+1→M ● ● ↕ ↕ 5 ●
INCA A+1→A ● ● ↕ ↕ 5 ●
INCB B+1→B ● ● ↕ ↕ 5 ●
Load LDAA M→A ● ● ↕ ↕ R ●
Accumulator LDAB M→B ● ● ↕ ↕ R ●
Rotate Left ROL a) ● ● ↕ ↕ 6 ↕
ROLA a) ● ● ↕ ↕ 6 ↕
ROLB a) ● ● ↕ ↕ 6 ↕
Rotate Right ROR b) ● ● ↕ ↕ 6 ↕
RORA b) ● ● ↕ ↕ 6 ↕
RORB b) ● ● ↕ ↕ 6 ↕
Shift Left, ASL c) ● ● ↕ ↕ 6 ↕
Arithmatic ASLA c) ● ● ↕ ↕ 6 ↕
ASLB c) ● ● ↕ ↕ 6 ↕
Shift Right, ASR d) ● ● ↕ ↕ 6 ↕
Arithmatic ASRA d) ● ● ↕ ↕ 6 ↕
ASRB d) ● ● ↕ ↕ 6 ↕
10 / 15
Mikoprosessor
Kode Operasi
Mne- 5 4 3 2 1 0
Extend
Immed
Operasi Operasi Boolean
Direct
Index
monic
Inher
H I N Z V C
Operasi
Mne-
Operasi Boolean 5 4 3 2 1 0
Extend
Immed
Direct
monic
Index
Inher
H I N Z V C
11 / 15
Mikoprosessor
Kode Operasi
Operasi
Mne-
Operasi Boolean 5 4 3 2 1 0
Extend
Immed
Direct
monic
Index
Inher
H I N Z V C
XH→M,
Store Index Reg STX ● ● 3 ↕ R ●
XL→ (M+1)
SPH→M,
Store Stack Pointer STS ● ● 3 ↕ R ●
SPL→(M+1)
Index Reg→Stack
TXS X→SP ● ● ● ● ● ●
Pointer
Instruksi-instruksi Branch
Kode Operasi
Mne- 5 4 3 2 1 0
Relative
monic
Index
H I N Z V C
12 / 15
Mikoprosessor
Inher
monic
H I N Z V C
5. Mode Pengalamatan
Mode Pengalamatan Immediate
Format instruksi dalam mode pengalamatan immediate,
Opcode Operand
Opcode (code operation) atau kode operasi 1 byte (8 bit). Operand 1 byte (8 bit) jika objek
operasi yang dilakukan pada register atau memori 1 byte (8 bit). Operand 2 byte (16 bit)
jika objek operasi yang dilakukan pada register 2 byte (16 bit).
Contoh:
Instruksi dengan mode pengalamatan immediate 2 byte; 1 byte Opcode dan 1 byte
Operand
LDAA 6Fh 86 6Fh
Mnemonic LDAA (Load Accumulator A) artinya muati akumulator A, dalam mode
pengalamatan immediate mempunyai kode operasi 86h. Data yang dimuat ke dalam
akumulator A adalah operand 1 byte karena akumulator A mempunyai kapasitas 1 byte,
dalam contoh ini operandnya adalah 6Fh. Sehingga setelah instruksi tersebut dieksekusi
oleh mikroprosessor, akumulator berisi 6Fh (01101111 biner).
Instruksi dengan mode pengalamatan immediate 3 byte; 1 byte Opcode dan 2 byte
Operand
LDX 01F0h CE 01F0h
Mnemonic LDX (Load Index Register) artinya muati register indeks, dalam mode
pengalamatan immediate mempunyai kode operasi CEh. Data yang dimuat ke dalam
register indeks adalah operand 2 byte karena register indeks mempunyai kapasitas 2 byte,
dalam contoh ini operandnya adalah 01F0h. Sehingga setelah instruksi tersebut dieksekusi
oleh mikroprosessor, register indeks berisi 01F0h (0000 0001 1111 0000 biner), byte
tertinggi operand mengisi byte tertinggi register indeks dan byte terendah operand mengisi
byte terendah register indeks.
13 / 15
Mikoprosessor
Opcode (code operation) atau kode operasi 1 byte (8 bit) dan Operand 1 byte (8 bit).
Operand menunjuk alamat memori antara 0000h sampai 00FFh sehingga operand dalam
mode pengalamatan direct merupakan byte terendah dari lamat memori dengan nilai 00h
sampai FFh.
Contoh:
CMPA 0Fh 91 0Fh
Opcode (code operation) atau kode operasi 1 byte (8 bit) dan Operand 1 byte (8 bit).
Operand merupakan nilai yang akan ditambahkan dengan isi register indeks untuk
menunjuk alamat memori.
Contoh:
LDAA F0h A6 F0h
Mnemonic LDAA (Load Accumulator A) artinya muati akumulator A, dalam mode
pengalamatan index mempunyai kode operasi A6h. Data yang dimuat ke dalam akumulator
A diperoleh dari memori dengan alamat operand ditambah dengan isi register indeks.
Misalkan isi register indeks adalah 0F00h, dalam contoh ini karena operand F0h maka
alamat memori yang ditunjuk adalah 0F00h + F0h = 0FF0h. Sehingga eksekusi instruksi ini
akan memuati akumulator A dengan data dari memori dengan alamat 0FF0h.
Opcode (code operation) atau kode operasi 1 byte (8 bit) dan Operand 2 byte (16 bit).
Operand merupakan alamat memori antara 0100h sampai FFFFh.
Contoh:
LDAA 01FFh B6 01FFh
Mnemonic LDAA (Load Accumulator A) artinya muati akumulator A, dalam mode
pengalamatan extended mempunyai kode operasi B6h. Data yang dimuat ke dalam
akumulator A diperoleh dari memori dengan alamat yang dinyatakan operand, dalam
contoh ini alamat memori adalah 01FFh. Sehingga eksekusi instruksi ini akan memuati
akumulator A dengan data dari memori dengan alamat 01FFh.
14 / 15
Mikoprosessor
Instruksi dalam mode pengalamatan inherend atau implied hanya Opcode tidak mempunyai
operand, data yang akan dikerjakan sudah terdapat didalam register internal
mikroprosessor.
Contoh:
CBA 11
Mnemonic CBA (Compare Accumulators) artinya membandingkan isi kedua akumulator
(mikroprosessor 6800 hanya mempunyai dua akumulator), dalam mode pengalamatan
inherend mempunyai kode operasi 11h. Sebelum instruksi ini dieksekusi akumulator A dan
akumulator B sudah berisi data. Sehingga eksekusi instruksi ini akan membandingkan isi
akumulator A dengan isi akumulator B.
Opcode (code operation) atau kode operasi 1 byte (8 bit) dan Operand 1 byte (8 bit).
Operand menunjuk alamat relatif memori tujuan Branch terhadap alamat memori dimana
instruksi Branch berada. Alamat tujuan Branch dapat lebih rendah atau lebih tinggi dari
alamat instruksi Branch;
15 / 15