Anda di halaman 1dari 15

MIKROPROSESSOR MC6800

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

Ketika masukan Reset kondisi “0”


(katakanlah 8 siklus pulsa clock telah Tabel 1.1.
terjadi) maka keluaran mikroprosessor Memory map Interrupt Vectors
mempunyai kondisi; VMA=“0”, BA=“0”, Vector
Bus Data=impedansi tinggi, R/W=“1” Interrupt
LS MS
(kondisi Read), dan Bus Alamat FFF9 FFF8 Interrupt Request
mengandung alamat FFFE. FFFB FFFA Software Interrupt
Setelah tegangan catu mencapai 4,75V, FFFD FFFC Non-Maskable Interrupt
minimal 8 siklus pulsa clock diperlukan FFFF FFFE RESET
mikroprosessor menstabilkan persiapan
Restart. Selama 8 siklus tersebut, VMA dalam kondisi takmenentu sehingga setiap
perangkat yang dikontrol VMA yang dapat menerima kesalahan membaca harus di-disable
sampai VMA kondisi “0” setelah 8 siklus clock.
Reset juga dapat digunakan untuk memulai kembali sistem mikroprosessor setiap saat
selama operasinya dengan memberi pulsa kondisi “0” selama minimum tiga siklus lengkap
Ø2.
Interrupt Request (IRQ) merupakan masukan kontrol aktif “Low”. Mikroprosessor akan
menunggu hingga arus instruksi yang sedang dikerjakan lengkap sebelum menanggapi
permintaan interupsi. Pada saat itu, jika bit interrupt mask di dalam register kode kondisi
tidak set, mikroprosessor akan memulai sikuensi interupsi. Isi; Register Indeks, Pencacah
Program, Akumulator dan Register Kode Kondisi disimpan ke memori Stack. Selanjutnya,
mikroprosessor akan respon terhadap permintaan interupsi dengan men-setting bit interrupt
mask menjadi “High” sehingga tidak terjadi interupsi lebih lanjut. Pada akhir siklus, alamat
16 bit diisikan yang menunjuk alamat vektor yang ditempatkan di memori dengan lokasi
FFF8 dan FFF9. Alamat yang diisikan pada lokasi tersebut menyebabkan mikroprosessor
mencabang ke rutin interupsi di dalam memori.
Jalur HALT harus dalam kondisi “High” agar interupsi dilayani. Interupsi akan ditahan
secara internal saat HALT kondisi “Low”.
Masukan IRQ mempunyai perangkat Pullup internal berimpedansi tinggi, meskipun
demikian, resistor 3 kΩ harus dihubungkan antara IRQ dengan VCC untuk wire-OR dan
kontrol optimal interupsi.
Non Maskable Interrupt (NMI) dan Wait for Interrupt (WAI) NMI merupakan masukan
kontrol aktif pada transisi pulsa. Penanganan interupsi melalui NMI sama seperti IRQ,
tetapi dengan alamat vektor yang berbeda.
Bit interrupt mask di-set untuk mencegah interupsi selanjutnya. Alamat rutin interupsi
diambil dari FFFC dan FFFD. Setelah layanan rutin interupsi lengkap, eksekusi RTI akan
menarik isi PC, IX, ACC dan CCR keluar dari memori Stack; bit interrupt mask
dikembalikan ke kondisi sebelumnya. Bus Available akan kondisi “1” menunjukkan kondisi
jalur kontrol berikut; VMA = “0”, Address Bus, R/W dan Data Bus dalam kondisi impedansi
tinggi.
Resistor eksternal 3 kΩ - 10 kΩ dihubungkan ke VCC harus digunakan untuk wire-OR dan
kontrol optimal interupsi.
Three State Control (TSC) merupakan masukan kontrol aktif pada kondisi “1”. Jika TSC
menerima kondisi “1”, Address Bus dan R/W menjadi dalam kondisi impedansi tinggi, VMA
dan BA menjadi dalam kondisi “0” untuk mencegah kesalahan pembacaan atau penulisan
pada setiap perangkat yang dikontrol melalui VMA, ini perlu memperlambat eksekusi
program saat TSC dalam kondisi “1”. Ini dilakukan dengan memastikan tidak ada transisi
Ø1 (atau Ø2) terjadi selama periode ini. (Level lojik clock tidal berpengaruh selama tidak

2 / 15
Mikoprosessor

berubah). Karena mikroprosessor merupakan peragkat dinamis, clock Ø1 dapat


diberhentikan untuk waktu maksimum tanpa merusak data didalam mikroprosessor.
Selanjutnya TSC dapat digunakan dalam aplikasi Direct Memory Access (DMA)
Valid Memory Address (VMA) merupakan keluaran kontrol aktif High. Output ini
menunjukkan bahwa pada bus alamat terdapat alamat yang valid. Normalnya VMA
digunakan untuk meng-enable antar muka seperti PIA dan ACIA.
Halt Merupakan masukan kontrol aktif Low. Masukan Halt disediakan pada
mikroprosessor agar memungkinkan pengontrolan eksekusi program melalui sumber dari
luar.
Jika masukan ini memperolah kondisi “0” seluruh aktifitas mikroprosessor diberhentikan.
Sinyal respon, BA menunjukkan status mikroprosessor. Jika BA kondisi Low,
mikroprosessor dalam proses mengeksekusu kontrol program, jika BA kondisi High,
mikroprosessor telah berhenti dan seluruh aktifitas internalnya telah diberhentikan.
Bila BA kondisi High, AB, DB dan R/W dalam kondisi impedansi tinggi, efektifnya
mikroprosessor lepas dari bus sistem. VMA menjadi kondisi Low sehingga bus sistem tidak
mengaktifkan peralatan pada bus yang di-enable oleh VMA.
Ketika mikroprosessor telah berhenti, seluruh aktifitas program diberhentikan, dan jika
salah satu interupsi NMI atau IRQ terjadi, akan ditahan di dalam mikroprosessor dan akan
dikerjakan pada saat mikroprosessor keluar dari kondisi berhenti (Halt). Jika perintah Reset
terjadi saat mikroprosessor berhenti, kondisi yang terjadi; VMA = Low, BA = Low, DB =
Impedansi tinggi, R/W = High (kondisi membaca), dan AB beriai alamat FFFE selama
Reset kondisi Low. Selanjutnya Reset kondisi High, mikroprosessor menunjuk lokasi FFFE
dan FFFF untuk alamat rutin Reset.

3. Struktur Internal 6800


Diagram blok mikroprosessor 6800
diperlihatkan dalam gambar 1.2.
Output Buffers merupakan rangkaian
penyangga tiga kondisi satu arah antara bus
bagian dalam dengan bus alamat bagian
luar.
Data Buffers merupakan rangkaian
penyangga tiga kondisi dua arah antara bus
bagian dalam dengan bus data bagian luar.
Instruction Decode and Control merupakan
rangkaian yang berfungsi mendekodekan/
menerjemahkan kode instruksi, menerima
sinyal kontrol dari luar dan menghasilkan
sinyal-sinyal kontrol.
Instruction Register merupakan register 8
bit (1 byte) yang berfungsi menyimpan
sementara kode instruksi.
Arithmatic Lojic Unit (ALU) merupakan
rangkaian yang berfungsi melakukan operasi
Gambar 1.2.
aritmatik dan operasi lojik. Diagram blok internal mikroprosessor
Program Counter merupakan 6800
rangkaian pencacah 16 bit yang dapat
diprogram untuk menunjuk alamat arus program.

3 / 15
Mikoprosessor

Stack Pointer merupakan register 2 byte


(16 bit) untuk menunjuk alamat memori
stack pada operasi stack. Memori Stack
normalnya merupakan memori baca tulis
(RAM), tetapi data di dalam memori stack
tidak boleh hilang jika terjadi power lost
pada sistem.
Index Register merupakan register 2 byte
(16 bit) yang digunakan untuk menyimpan
data atau alamat memori 16 bit dalam mode
pengalamatan indeks.
Accumulator (A, B) merupakan dua
register dinamai akumulator A dan
akumulator B, masing-masing berkapasitas
8 bit. Digunakan untuk menyimpan operand
atau hasil dari operasi yang dilakukan
Arithmatic Lojic Unit.
Condition Code Regiter (CCR) merupakan Gambar 1.3. Register internal 6800
register 1 byte (8 bit). Bit-bit didalam CCR
disebut juga dengan flag dengan nama;
Carry (C), Overflow (V), Zero (Z), Negative (N), Interrupt (I) dan Half carry (H), sedangkan 2
bit terakhir selalu dalam kondisi “1”. Kondisi bit-bit yang terdapat di dalam CCR
menunjukkan kondisi dari hasil eksekusi suatu instruksi.
Bit C (Carry), merupakan indikator yang menunjukkan ada tidaknya carry dari bit 7 dalam
operasi aritmatik atau lojik. Bit C kondisi “1” jika ada carry dari bit 7 dan kondisi “0” jika tidak
ada carry dari bit 7.
Bit V (Overflow), merupakan indikator yang menunjukkan terjadi atau tidak oveerflow dari
suatu operasi aritmatik atau lojik. Bit V kondisi “1” jika terjadi overflow dan kondisi “0” jika
tidak terjadi overflow.
Bit Z (Zero), merupakan indikator yang menunjukkan hasil suatu operasi aritmatik atau lojik
nol atau tidak. Bit Z kondisi “1” jika hasil operasi “nol” dan kondisi “0” jika hasil operasi tidak
“nol”.
Nit N (Negative), merupakan indikator hasil operasi aritmatik atau lojik negatif atau tidak. Bit
N kondisi “1” jika hasil operasi merupakan bilangan negatif dan kondisi “0” jika tidak negatif.
Bit I (Interrupt), merupakan indikator apakah prosessor sedang menerima interupsi atau
tidak. Bit I kondisi “1” jika prosessor sedang menerima interupsi dan kondisi “0” jika
prosessor tidak sedang menerima interupsi.
Bit H (Half carry), merupakan indikator yang menunjukkan ada tidaknya carry dari bit 3
dalam operasi aritmatik atau lojik. Bit H kondisi “1” jika ada carry dari bit 3 dan kondisi “0”
jika tidak ada carry dari bit 3.

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

Instruksi-Instruksi Data Handling


Mne- Operasi 5 4 3 2 1 0
Operasi Penjelasan Singkat
monic Boolean H I N Z V C

CLR 00→M ● ● R S R R Isi dari suatu lokasi memori di-nol-kan


Clear CLRA 00→A ● ● R S R R Isi Acc A di-nol-kan
CLRB 00→B ● ● R S R R Isi Acc B di-nol-kan
DEC M-1→M ● ● ↕ ↕ 4 ● Mengurangi dengan 1 isi dari suatu lokasi memori
Decrement DECA A-1→A ● ● ↕ ↕ 4 ● Mengurangi dengan 1 isi Acc A
DECB B-1→B ● ● ↕ ↕ 4 ● Mengurangi dengan 1 isi Acc B
INC M+1→M ● ● ↕ ↕ 5 ● Menambah dengan 1 isi dari suatu lokasi memori
Increment INCA A+1→A ● ● ↕ ↕ 5 ● Menambah dengan 1 isi Acc A
INCB B+1→B ● ● ↕ ↕ 5 ● Menambah dengan 1 isi Acc B

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

Store STAA A→M ● ● ↕ ↕ R ● Menyimpan isi Acc A ke suatu lokasi memori


Accumulator STAB B→M ● ● ↕ ↕ R ● Menyimpan isi acc B ke suatu lokasi memori

Transfer TAB A→B ● ● ↕ ↕ R ● Mentransfer isi Acc A ke Acc B


Accumulators TBA B→A ● ● ↕ ↕ R ● Mentransfer isi Acc B ke Acc A
4 (Bit V) Test: Operand = 10000000 sebelum eksekusi?
5 (Bit V) Test: Operand = 01111111 sebelum eksekusi?
6 (Bit V) Test: Set sama dengan hasil N ⊕C setelah shift terjadi

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

Instruksi-Instruksi Test Data


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
BITA A.M ● ● ↕ ↕ R ● dari suatu lokasi memori tanpa mengubah isi Acc A maupun
isi lokasi memori
Bit Test Meng-AND-kan bit-bit isi Acc B dengan bit-bit yang setara isi
dari suatu lokasi memori tanpa mengubah isi Acc B maupun
BITB B.M ● ● ↕ ↕ R ●
isi lokasi memori, perubahan hanya pada register kode
kondisi sebagai hasil pengujian.
Mengurangkan isi Acc A dengan isi dari suatu lokasi memori
tanpa mengubah isi Acc A maupun isi lokasi memori,
CMPA A-M ● ● ↕ ↕ ↕ ↕
perubahan hanya pada register kode kondisi sebagai hasil
pembandingan
Compare
Mengurangkan isi Acc B dengan isi dari suatu lokasi memori
tanpa mengubah isi Acc B maupun isi lokasi memori,
CMPB B-M ● ● ↕ ↕ ↕ ↕
perubahan hanya pada register kode kondisi sebagai hasil
pembandingan
Mengurangi isi Acc A dengan isi Acc B tanpa mengubah isi
Compare Acmlts CBA A-B ● ● ↕ ↕ ↕ ↕ Acc A maupun isi Acc B, perubahan hanya pada register
kode kondisi sebagai hasil perbandingan
Mengurangi isi dari suatu lokasi memori dengan 00 untuk
TST M - 00 ● ● ↕ ↕ R R mengetahui apakah isi lokasi memori tersebut negatif atau
nol, tanpa mengubah isi lokasi memori tersebut
Test, Zero or Mengurangi isi Acc A dengan 00 untuk mengetahui apakah
Minus TSTA A - 00 ● ● ↕ ↕ R R isi Acc Ai tersebut negatif atau nol, tanpa mengubah isi Acc
A tersebut
Mengurangi isi Acc B dengan 00 untuk mengetahui apakah isi Acc
TSTB B - 00 ● ● ↕ ↕ R R B tersebut negatif atau nol, tanpa mengubah isi Acc B tersebut

7 / 15
Mikoprosessor

Instruksi-Instruksi Register Indeks dan Stack Pointer


Mne- Operasi 5 4 3 2 1 0
Operasi Penjelasan Singkat
monic Boolean H I N Z V C

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)

Store Stack SPH→M,


STS ● ● 3 ↕ R ● Menyimpan 16 bit isi register stack ke dua lokasi memori
Pointer SPL→(M+1)
Index Reg→Stack
TXS X→SP ● ● ● ● ● ● Mentransfer 16 bit isi register indeks ke register stack
Pointer

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

Branch Always BRA ● ● ● ● ● ● Mencabang ke suatu lokasi memori


Branch if Carry
BCC C=0 ● ● ● ● ● ● Mencabang ke suatu lokasi memori jika bit C dalam kondisi 0
Clear

Branch if Carry Mencabang ke suatu lokasi memori jika hasil operasi


BCS C=1 ● ● ● ● ● ●
Set sebelumnya menghasilkan Carry (bit C = 1)
Mencabang ke suatu lokasi memori jika hasil operasi
Branch if = Zero BEQ Z=1 ● ● ● ● ● ●
sebelumnya sama dengan nol (bit Z = 1)
Normalnya digunakan setelah instruksi subtract atau
compare.
Branch if ≥ Zero BGE N⊕V = 0 ● ● ● ● ● ● Mencabang ke suatu lokasi memori jika hasil operasi
sebelumnya membuat N⊕V = 0 .
Mencabang ke suatu lokasi memori jika hasil operasi
sebelumnya sama dengan nol (eksklusif OR kondisi bit N
Branch if > Zero BGT Z + (N ⊕V) = 0 ● ● ● ● ● ●
dengan bit V di-OR-kan dengan kondisi bit Z sama dengan
nol)
Mencabang ke suatu lokasi memori jika hasil operasi
Branch if Higher BHI C+Z=0 ● ● ● ● ● ●
sebelumnya membuat C + Z = 0.

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.

Branch if Lower or Mencabang ke suatu lokasi memori jika hasil operasi


BLS C+Z=1 ● ● ● ● ● ●
Same sebelumnya membuat C + Z = 1.
Mencabang ke suatu lokasi memori jika hasil operasi
Branch if < Zero BLT N⊕V = 1 ● ● ● ● ● ●
sebelumnya membuat N⊕V = 1 .
Mencabang ke suatu lokasi memori jika hasil operasi
Branch if Minus BMI N=1 ● ● ● ● ● ●
sebelumnya mengakibatkan N = 1.
Mencabang ke suatu lokasi memori jika hasil operasi
Branch if ≠ Zero BNE Z=0 ● ● ● ● ● ●
sebelumnya mengakibatkan Z = 0.
Branch if Overflow Mencabang ke suatu lokasi memori jika hasil operasi
BVC V=0 ● ● ● ● ● ●
Clear sebelumnya membuat V = 0
Branch if Overflow Mencabang ke suatu lokasi memori jika hasil operasi
BVS V=1 ● ● ● ● ● ●
Set sebelumnya membuat V = 1.
Mencabang ke suatu lokasi memori jika hasil operasi
Branch if Plus BPL N=0 ● ● ● ● ● ●
sebelumnya mengakibatkan N = 0.
No Operation NOP ● ● ● ● ● ●
Wait for Interrupt WAI ● 1 ● ● ● ●

Instruksi-Instruksi Register Code Condisi


Mne- Operasi 5 4 3 2 1 0
Operasi Penjelasan Singkat
monic Boolean H I N Z V C

Clear Carry CLC 0→C ● ● ● ● ● R Bit C (Carry) di-nol-kan


Clear Interrupt
CLI 0→I ● R ● ● ● ● Bit I (Interrupt mask) di-nol-kan
Mask
Clear Overflow CLV 0→V ● ● ● ● R ● Bit V (Overflow) di-nol-kan
Set Carry SEC 1→C ● ● ● ● ● S Bit C (Carry) di-set
Set Interrupt
SEI 1→I ● S ● ● ● ● Bit I (Interrupt mask) di-set
Mask
Set Overflow SEV 1→V ● ● ● ● S ● Bit V (Overflow) di-set
Acmltr A→CCR TAP A→CCR (1) Mentransfer 6 bit terendah isi Acc A ke CCR
CCR→ Acmltr A TPA CCR→A ● ● ● ● ● ● Mentransfer isi CCR ke Acc A
R = Reset
S = Set
● = Not Affected
(1) Set atau Reset sesuai dengan isi akumulator A

9 / 15
Mikoprosessor

Instruksi-instruksi akumulator dan memori


Kode Operasi

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

Shift Right, LSR e) ● ● R ↕ 6 ↕


Logic LSRA e) ● ● R ↕ 6 ↕
LSRB e) ● ● R ↕ 6 ↕
Store STAA A→M ● ● ↕ ↕ R ●
Accumulator STAB B→M ● ● ↕ ↕ R ●
Transfer TAB A→B ● ● ↕ ↕ R ●
Accumulators TBA B→A ● ● ↕ ↕ R ●
And ANDA A.M→A ● ● ↕ ↕ R ●
ANDB B.M→B ● ● ↕ ↕ R ●
Complement, COM M →M ● ● ↕ ↕ R S
1’s
COMA A →A ● ● ↕ ↕ R S
COMB B →B ● ● ↕ ↕ R S
Exclusive OR EORA A ⊕M →A ● ● ↕ ↕ R ●
EORB B ⊕M →B ● ● ↕ ↕ R ●
OR, Inclusive ORA A + M →A ● ● ↕ ↕ R ●
ORB B + M →B ● ● ↕ ↕ R ●
Bit Test BITA A.M ● ● ↕ ↕ R ●
BITB B.M ● ● ↕ ↕ R ●
Compare CMPA A-M ● ● ↕ ↕ ↕ ↕
CMPB B-M ● ● ↕ ↕ ↕ ↕
Compare CBA A-B ● ● ↕ ↕ ↕ ↕
Acmlts
Test, Zero or TST M - 00 ● ● ↕ ↕ R R
Minus TSTA A - 00 ● ● ↕ ↕ R R
TSTB B - 00 ● ● ↕ ↕ R R

Instruksi-instruksi register indeks dan stack pointer


Kode Operasi

Operasi
Mne-
Operasi Boolean 5 4 3 2 1 0
Extend
Immed
Direct

monic
Index

Inher

H I N Z V C

Copare Index Reg CPX (XH/XL) – (M/M+1) ● ● 1 ↕ 2 ●


Decrement Index Reg DEX X-1→X ● ● ● ↕ ● ●
Decrement Stack Pointer DES SP-1→SP ● ● ● ● ● ●
Increment Index Reg INX X+1→X ● ● ● ↕ ● ●
Increment Stack Pointer INS SP+1→SP ● ● ● ● ● ●
M→XH,
Load Index Reg LDX ● ● 3 ↕ R ●
(M+1) →XL
M→SPH,
Load Stack Pointer LDS ● ● 3 ↕ R ●
(M+1) →SPL

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

Stack Pointer→ Index


TSX SP→ X ● ● ● ● ● ●
Reg

Instruksi-instruksi Branch
Kode Operasi

Mne- 5 4 3 2 1 0
Relative

Operasi Branch Test


Extend
Direct

monic
Index

H I N Z V C

Branch Always BRA ● ● ● ● ● ●


Branch if Carry Clear BCC C=0 ● ● ● ● ● ●
Branch if Carry Set BCS C=1 ● ● ● ● ● ●
Branch if = Zero BEQ Z=1 ● ● ● ● ● ●
Branch if ≥ Zero BGE N⊕V = 0 ● ● ● ● ● ●

Branch if > Zero BGT Z + (N ⊕V) = 0 ● ● ● ● ● ●

Branch if Higher BHI C+Z=0 ● ● ● ● ● ●

Branch if ≤ Zero BLE Z + (N ⊕V) = 1 ● ● ● ● ● ●

Branch if Lower or Same BLS C+Z = 1 ● ● ● ● ● ●


Branch if < Zero BLT N⊕V = 1 ● ● ● ● ● ●
Branch if Minus BMI N=1 ● ● ● ● ● ●
Branch if ≠ Zero BNE Z=0 ● ● ● ● ● ●
Branch if Overflow Clear BVC V=0 ● ● ● ● ● ●
Branch if Overflow Set BVS V=1 ● ● ● ● ● ●
Branch if Plus BPL N=0 ● ● ● ● ● ●
No Operation NOP ● ● ● ● ● ●
Wait for Interrupt WAI ● 1 ● ● ● ●

12 / 15
Mikoprosessor

Instruksi-instruksi register kode kondisi


Kode Operasi
Mne- 5 4 3 2 1 0
Operasi Operasi Boolean

Inher
monic
H I N Z V C

Clear Carry CLC 0→C ● ● ● ● ● R


Clear Interrupt Mask CLI 0→I ● R ● ● ● ●
Clear Overflow CLV 0→V ● ● ● ● R ●
Set Carry SEC 1→C ● ● ● ● ● S
Set Interrupt Mask SEI 1→I ● S ● ● ● ●
Set Overflow SEV 1→V ● ● ● ● S ●
Acmltr A→CCR TAP A→CCR
CCR→ Acmltr A TPA CCR→A ● ● ● ● ● ●

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

Mode Pengalamatan Direct


Format instruksi dalam mode pengalamatan direct,
Opcode Operand

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

Mnemonic CMPA (Compare accumulator A) artinya bandingkan akumulator A, dalam mode


pengalamatan direct mempunyai kode operasi 91h. Operand dengan nilai 0Fh menyatakan
alamat memori 000Fh. Sehingga eksekusi instruksi ini akan membandingkan isi akumulator
A dengan isi memori dengan alamat 000Fh.

Mode Pengalamatan Index


Format instruksi dalam mode pengalamatan index,
Opcode Operand

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.

Mode Pengalamatan Extended


Format instruksi dalam mode pengalamatan extended,
Opcode Operand

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

Mode Pengalamatan Inheren (Implied)


Format instruksi dalam mode pengalamatan inherend,
Opcode

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.

Mode Pengalamatan Relative


Mode pengalamatan relatif hanya dimiliki instruksi-instruksi Branch. Format instruksi dalam
mode pengalamatan relative,
Opcode Operand

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

Anda mungkin juga menyukai