Pemrograman MC6805

MAIN PAGE

KONSEP MIKROKONTROLER
Pendahuluan
Sistem Input
Sistem Output
CPU
Clock dan Memori
Program Komputer
Sistem Mikrokontroler

MEMORI & I/O PARALEL
Pendahuluan
Jenis-jenis Memori
I/O Tipe Memori
Register Kontrol
Peta Memori

ARSITEKTUR KOMPUTER
Pendahuluan
Register-register CPU
Reset

PEMROGRAMAN MC6805
Pendahuluan
Alamat IMEDIATE
Alamat INHERENT
Alamat EXTENDED
Alamat DIRECT
Alamat INDEXED
Alamat RELATIVE
Assembler Directives
File Kode Objek
Rangkuman Instruksi

PERIPERAL ON-CHIP
Port Serial
ADC
EEPROM
Timer
COP

Mode Pengalamatan INDEXED

Dalam mode pengalamatan indexed, alamat efektif adalah variabel dan tergantung pada dua faktor: 1) isi index register saat itu dan 2) nilai offset yang terkandung dari byte yang mengikuti kode operasi. Terdapat tiga jenis pengalamatan indexed yang didukung oleh CPU keluarga M68HC05, yaitu: no-offset, 8-bit offset, dan 16-bit offset. Dalam mode pengalamatan indexed-no offset, alamat efektif dari operan terkandung dalam index register 8-bit. Karena itu, mode pengalamatan ini dapat mengakses 256 lokasi memori (dari $0000 sampai $00FF). Instruksi mode ini membutuhkan satu byte instruksi. Contoh: 0200 F6 LDA 0,X

Pertama CPU akan membaca kode operasi $F6 yang menginstruksikan CPU untuk menggunakan mode pengalamatan indexed-no offset. Kemudian CPU menyusun alamat lengkap dengan menjumlahkan $0000 ke isi dari index register 8-bit (X). Alamat ini kemudian diletakkan dalam bus alamat dan setelah itu dilakukan proses pembacaan data. Tabel 5.5 menampilkan semua instruksi yang dapat menggunakan mode pengalamatan ini.

INDEXED-NO OFFSET dan INDEXED-8 BIT OFFSET

Instruksi

Mnemonic

Add with Carry
Add (without carry)
Logical AND
Arithmetic Shift Left

ADC
ADD
AND
ASL

Arithmetic Shift Right
Bit Test Memory with Accumulator
Clear
Compare Accumulator with Memory

ASR
BIT
CLR
CMP

Complement (invert all bits)
Compare Index Register with Memory
Decrement
Exclusive OR Memory with Accumulator

COM
CPX
DEC
EOR

Increment
Jump
Jump to Subroutine
Load Accumulator from Memory

INC
JMP
JSR
LDA

Load Index Register from Memory
Logical Shift Left
Logical Shift Right
Negate (two’s complement)

LDX
LSL
LSR
NEG

Inclusive OR
Rotate Left thru Carry
Rotate Right thru Carry
Substract with Carry

ORA
ROL
ROR
SBC

Store Acuumulator in Memory
Strore Index Register in Memory
Substract (without borrow)
Test for Negative or Zero

STA
STX
SUB
TST

Dalam mode pengalamatan indexed-8 bit offset, alamat efektif dicapai dengan menambahkan data byte yang mengikuti kode operasi dengan isi dari index register. Harga byte offset yang disediakan dalam instruksi adalah integer tak bertanda 8-bit. Karena itu operasi ini adalah dua byte instruksi di mana offset terkandung dalam byte yang mengikuti kode operasi. Isi dari index register tidak akan dirubah. Contoh: 0200 E6 05 LDA 5,X

Pertama CPU akan membaca kode operasi $E6 yang menginstruksikan CPU menggunakan mode pengalamatan indexed 8-bit offset. Kemudian CPU akan membaca 8-bit offset ($05) dari alamat $0201. CPU akan menyusun alamat lengkap dengan menambahkan nilai offset $05 ke isi dari index register 8-bit (X). Setelah itu, alamat diletakkan dalam bus alamat dan opersi pembacaan data ke akumulator dikerjakan. Tabel 5.5 menunjukkan semua instruksi yang mampu menggunakan mode pengalamatan ini. Dalam mode pengalamatan indexed-16 bit offset, alamat efektif dari operan suatu instruksi adalah hasil penjumlahan antara isi dari index register 8-bit dengan dua byte alamat yang mengikuti kode operasi. Isi dari kode operasi tidak dirubah. Instruksi ini memakan tiga byte, satu untuk kode operasi dan dua byte untuk offset 16-bit. Contoh: 0200 D6 03 77 LDA $377,X

Pertama CPU akan membaca kode operasi $D6 yang menginstruksikan CPU untuk menggunakan mode pengalamatan indexed –16 bit offset. Kemudian CPU akan membaca high order alamat ($03) dari alamat memori $0201 dan membaca low order alamat ($77) dari alamat $0202. CPU akan menyusun alamat lengkap dengan menambahkan isi dari index register 8-bit dengan 16-bit alamat yang baru saja dibaca. Alamat ini diletakkkan dalam bus alamat dan kemudian operasi pembacaan data dilakukan.

Instruksi-instruksi Mode Pengalamatan INDEXED-16 BIT OFFSET

Instruksi

Mnemonic

Add with Carry
Add (without carry)
Logical AND
Bit Test Memory with Accumulator

ADC
ADD
AND
BIT

Compare Accumulator with Memory
Compare Index Register with Memory
Exclusive OR Memory with Accumulator
Jump

CMP
CPX
EOR
JMP

Jump to Subroutine
Load Accumulator from Memory
Exclusive OR Memory with Accumulator
Jump

JSR
LDA
LDX
ORA

Substract with Carry
Store Accumulator in Memory
Store Index Register in Memory
Substract (without borrow)

SBC
STA
STX
SUB

Mode Pengalamatan RELATIVE

Mode pengalamatan relative ini digunakanhanya dalam instruksi percabangan. Instruksi percabangan, selain percabangan instruksi manipulasi bit, membangkitkan dua byte kode mesin: satu untuk kode operasi dan satu untuk offset relatifnya. Karena kemampuannya untuk bercabang ke dua arah, byte offset adalah bilangan bertanda dengan jangkauan –128 sampai +127. Jika kondisi percabangan TRUE, isi dari byte bertanda 8-bit yang mengikuti kode operasi akan ditambahkan dengan isi dari PC untuk membentuk alamat efektif percabangan; jika FALSE maka kontrol program akan terus ke instruksi di bawah instruksi percabangan. Programmer akan menspesifikasikan tujuan dari percabangan sebagai alamat absolute (dengan label atau alamat langsung). Kemudian assembler akan mengkalkulasi offset relatif 8-bit yang akan diletakkan di belakang kode memori dalam memori. Contoh: 0200 27 rr BEQ DEST

Pertama CPU akan membaca kode operasi $27. Bit CCR Z akan set jika hasil dari operasi aritmatika atau logika sebelumnya adalah nol. CPU kemudian akan membaca harga offset $rr dari alamat $0201. Setelah siklus ini, PC akan menunjukkan ke byte pertama dari instruksi berikutnya ($0202). Jika bit Z nol, maka tidak ada aksi apa-apa. Program akan terus ke instruksi berikutnya pada alamat $0202. Jika bit Z satu, CPU akan menambahkan nilai offset $rr ke isi dari PC sekarang untuk mendapatkan alamat tujuan dari percabangan. Hal ini menyebabkan eksekusi program berlanjut ke alamat baru (DEST). Tabel 5.7 menunjukkan instruksi yang dapat menggunakan mode pengalamatan relative.

Instruksi-instruksi Mode Pengalamatan RELATIVE

Instruksi

Mnemonic

Branch if Carry Clear
Branch if Carry Set
Branch if Equal
Branch if Half-Carry Clear

BCC
BCS
BEQ
BHCC

Branch if Half-Carry Set
Branch if Higher
Branch if Higher or Same
Branch if Interrupt Line is High

BHCS
BHI
BHS
BIH

Branch if Interrupt Line is Low
Branch if Lower
Branch if Lower or Same
Branch if Interrupt Mask is Clear

BIL
BLO
BLS
BMC

Branch if Minus
Branch if Interrupt Mask is Set
Branch if Not Equal
Branch if Plus

BMI
BMS
BNE
BPL

Branch Always
Branch if Bit n is Clear
Branch if Bit n is Set
Branch Never

BRA
BRCLR
BRSET
BRN

Branch to Subroutine

BSR

| IMEDIATE | INHERENT | EXTENDED | DIRECT | INDEXED | RELATIVE |
| Assembler Directives | File Kode Objek | Rangkuman Set Instruksi |


Contact me at: hsutanto@milis.stts.edu

Copyright (c) Hermawan Sutanto
Written in January 1998
Copying content must have permission from me !

Visit Our Sponsor
adClix Sponsorship Information