Jumat, 29 Mei 2015

MODE DAN FORMAT PENGALAMATAN

B.       Mode dan Fotmat Pengalamatan
Kekuatan utama dari setiap komputer terletak pada kemampuannya dalam mengakses memori. Mode pengalamatan dari CPU menyediakan kemampuan ini. Mode pengalamatan mempunyai pengertian bagaimana suatu instruksi akan mendpatkan data yang diperlukannya dalam eksekusi. Karena ada beberap a macam mode pengalamatan yang berbeda, suatu instruksi dapat mengakses operan dalam satu atau beberapa cara yang berbeda. Setiap variasi mode pengalamatan dari suatu instruksi harus memiliki kode operasi (op-code) yang unik, sehingga 62 instruksi dasar mikrokontroler M68HC05 membutuhkan setidaknya 210 kode operasi dari instruksi-instruksinya.
CPU M68HC05 menggunakan enam mode pengalamatan. Mode pengalamatan ini adalah inherent, immediate, extended, direct, indexed, dan relative. Dalam mikrokontroler M68HC05 yang terkecil, semua variabel program dan register I/O cukup dalam area $0000 sampai $00FF di memori sehingga mode pengalamatan yang digunakan adalah direct addressing mode.
Informasi yang disediakan dalam listing program menggunakan beberapa simbol untuk menentukan tipe dari numerik yang digunakan. Simbol khusus ini adalah:
1.      Tanpa simbol mengindikasikan numerik desimal. Angka ini akan diterjemahkan menjadi nilai biner sebelum disimpan dalam memori dan digunakan oleh CPU.
2.      Simbol $ mengindikasikan numerik heksadesimal, seperti $24 adalah 2416 dalam heksadesimal yang bernilai sama dengan 36 desimal.
3.      Simbol @ mengindikasikan numerik oktal, seperti @10 bernilai sama dengan 8 desimal.
4.      Simbol % mengindikasikan numerik biner, seperti 0100 bernilai sama dengan 8 desimal.
5.      Simbol ‘ (apostrof) mengindikasikan karakter ASCII tunggal.
6.      Simbol # mengindikasikan operand langsung (immediate) dan angka ditemui langsung dalam lokasi memori yang mengikuti kode operasi. Beberapa macam simbol dan ekspresi dapat mengikuti simbol # ini.
Mode pengalamatan yang dikenal oleh mikrokontroler keluarga 6805 ada beberapa macam sebagaimana tercantum di bawah ini:
B.1       Inhernt
Mode Pengalamatan INHERENT
Dalam mode pengalamatan inherent, semua informasi yang dibutuhkan untuk operasi telah diketahui otomatis oleh CPU, dan tidak dibutuhkan operan eksternal dari memori atau dari program. Operan yang digunakan hanyalah register internal dari CPU atau data dalam stack. Karena itu operasi ini hanyalah terdiri dari satu byte instruksi. Contoh:
0200 4C INCA ; increment akumulator
Pertama CPU membaca kode operasi $4C yang menginstruksikan CPU untuk menambah harga dari isi akumulator. Kemudian CPU akan menyimpan harga baru ke dalam akumulator dan mengeset bitflag jika dibutuhkan. Tabel 5.2 menampilkan semua instruksi M68HC05 yang dapat menggunakan mode pengalamatan inherent.

Instruksi-instruksi Mode Pengalamatan INHERENT
Instruksi
Mnemonic
Arithmetic Shift Left
Arithmetic Shift Right
Clear Carry Bit
Clear Interrupt Mask Bit
ASLA, ASLX
ASRA, ASRX
CLC
CLI
Clear
Complement (invert all bits)
Decrement
Increment
CLRA, CLRX
COMA, COMX
DECA, DECX
INCA, INCX
Logical Shift Left
Logical Shift Right
Multiply
Negate (two’s complement)
LSLA, LSLX
LSRA, LSRX
MUL
NEGA, NEGX
No Operation
Rotate Left thru Carry
Rotate Right thru Carry
Reset Stack Pointer
NOP
ROLA, ROLX
RORA, RORX
RSP
Return from Interrupt
Return from Subroutine
Set Carry Bit
Set Interrupt Mask Bit
RTI
RTS
SEC
SEI
Enable IRQ, STOP Oscillator
Software Interrupt
Transfer Accumulator to Index Register
Test for Negative Zero
STOP
SWI
TAX
TSTA, TSTX
Transfer Index Register to Accumulator
Wait for Interrupt
TXA
WAIT
B.2       Immediate
Dalam mode pengalamatan immediate, operan terkandung di dalam byte yang langsung mengikuti kode operasi. Mode ini digunakan saat suatu harga atau konstanta diketahui saat program dibuat dan tidak akan dirubah selama eksekusi program. Operasi dengan mode ini membutuhkan dua byte instruksi, satu untuk kode operasi dan satu lagi untuk data byte. Contoh:
0200 A6 02 LDA #$02 ; Load konstanta ke akumulator
Pertama CPU akan membaca kode operasi $A6 yang menginstruksikan CPU untuk me-load akumulator dengan nilai immediate yang mengikuti kode operasi. Kemudian CPU akan membaca dataimmediate $02 dari lokasi memori dengan alamat $0201 ke dalam akumulator. Tabel 5.1 menampilkan semua instruksi keluarga M68HC05 ang dapat menggunakan mode pengalamatan immediate ini.
Instruksi-instruksi Mode Pengalamatan IMMEDIATE
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
Load Accumulator from Memory
CMP
CPX
EOR
LDA
Load Index Register from Memory
Inclusive OR
Substract with Carry
Substract (without borrow)
LDX
ORA
SBC
SUB
B.3       Direction
Mode pengalamatan direct mirip dengan mode pengalamatan extended kecuali bahwa upper byte dari alamat operan selalu dianggap $00. Karena itu, hanya lower-byte dari operan yang diperlukan untuk dimasukkan dalam instruksi. Pengalamatan direct menyebabkan efisiensi alamat dalam 256 byte pertama dalam memori. Area ini dinamakan dengan direct page dan mengandung on-chip RAM dan register I/O. Pengalamatan direct ini efisien bagi memori program dan waktu eksekusi. Dalam mode ini instruksi terdiri dari dua byte, satu untuk kode operasi dan satu lagi untuk alamat operan. Contoh: 0200 B6 E0 LDA $E0
Pertama CPU akan membaca kode operasi $B6 yang menginstruksikan CPU untuk menggunakan mode pengalamatan direct. Kemudian CPU membaca $E0 dari lokasi memori dengan alamat $0201. Harga $E0 ini diterjemahkan sebagai low-order dari alamat dalam direct page ($0000 sampai $00FF). Setelah itu CPU menyusun alamat lengkap $00E0 dengan menganggap high-order byte alamat sebagai $00. Alamat lengkap $00E0 ini kemudian diletakkan dalam bus alamat dan kemudian proses pembacaan data pun dikerjakan. Tabel 5.4 menampilkan semua instrusi yang bisa dikerjakan dengan mode pengalamatan direct ini.
C.     Instruksi-instruksi Mode Pengalamatan DIRECT
Instruksi
Mnemonic
Add with Carry
Add (without carry)
Logical AND
Arithmetic Shift Left
ADC
ADD
AND
ASL
Arithmetic Shift Right
Clear Bit in Memory
Bit Test Memory with Accumulator
Branch if Bit n is Clear
ASR
BCLR
BIT
BRCLR
Branch if Bit n is Set
Set Bit in Memory
Clear
Compare Accumulator with Memory
BRSET
BSET
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

B.4       Extended
Dalam mode pengalamatan extended, alamat dari operan terkandung dalam dua byte yang mengikuti kode operasi. Pengalamatan extended ini dapat digunakan untuk mengakses semua lokasi dalam memori mikrokontroler termasuk I/O, RAM, ROM, dan EPROM. Karena itu operasi ini membutuhkan tiga byte, satu untuk kode operasi, dan dua untuk alamat dari operan.
0200 C6 03 65 LDA $0365
Pertama CPU akan membaca kode operasi C6 yang menginstruksikan akumulator untuk menggunakan mode pengalamatan extended. Kemudian CPU akan membaca $03 dari lokasi memori $0201dan diterjemahkan sebagai alamat high-order. Setelah itu CPU membaca $65 dari lokasi $0202 dan diterjemahkan sebagai low-order dari alamat. Terakhir, CPU membangun alamat lengkap $0365 dan meletakkannya dalam bus alamat dan kemudian melakukan operasi read sehingga isi memori dengan alamat $0365 akan tersedia dalam bus data. Tabel 5.3 di bawah ini akam memperlihatkan semua instruksi yang dapat digunakan dalam mode pengalamatan extended.
Instruksi-instruksi Mode Pengalamatan EXTENDED
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

B.5       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


Tidak ada komentar:

Posting Komentar