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 |
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 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 |