Rabu, 18 Agustus 2010

Register-register CPU

CPU yang berbeda memiliki set register yang berbeda pula. Perbedaan utama terletak pada jumlah dan ukuran dari register itu sendiri. Dalam gambar 4.1 diperlihatkan register-register CPU yang terdapat dalam mikrokontroler keluarga M68HC05.
CPU yang berbeda memiliki set register yang berbeda pula. Perbedaan utama terletak pada jumlah dan ukuran dari register itu sendiri. Dalam gambar 4.1 diperlihatkan register-register CPU yang terdapat dalam mikrokontroler keluarga M68HC05.

Register A berukuran 8 bit, juga dikenal sebagai akumulator karena register ini digunakan untuk menyimpan hasil dari operasi aritmatika dan manipulasi data. Register ini juga dapat langsung diakses untuk operasi non-aritmatika. Akumulator digunakan dalam proses eksekusi dari program saat isi dari beberapa lokasi memori yang digunakan di-load ke akumulator. Demikian juga instruksi penyimpanan akan menyebabkan isi dari akumulator disimpan dalam memori yang telah ditentukan.
Register X adalah index register yang berukuran 8 bit. Kegunaan utama dari index register ini adalah untuk menunjukkan suatu area memori di mana CPU akan mengambil atau menuliskan suatu informasi. Kadang-kadang index register juga disebut dengan pointer register.

PC atau program counter digunakan CPU untuk menata urutan alamat instruksi yang akan dikerjakan. Saat CPU reset atau baru dihidupkan, PC ini dimuati dengan alamat yang telah ditentukan dalam reset vector. Lokasi reset vector ini berisi alamat dari instruksi pertama yang akan dikerjakan oleh CPU. Saat suatu instruksi dikerjakan, CPU akan menambah isi PC sehingga akan menunjuk ke alamat informasi berikutnya yang akan dibutuhkan CPU. Jumlah bit dari PC sama persis dengan jumlah jalur bus alamat. Isi dari register ini dinyatakan dalam empat digit heksadesimal di mana enam bit teratas selalu nol karena hanya 10 bit jalur bus alamat.

CCR atau condition code register adalah register dengan ukuran 8 bit, yang menyimpan indikator status dari hasil operasi CPU sebelumnya. Terdapat tiga bit teratas tidak digunakan dan selalu sama dengan logika satu. Instruksi percabangan menggunakan bit-bit status dalam register ini untuk mengerjakan suatu keputusan percabangan.

Isi dari CCR ini adalah sebuah interrupt mask dan empat indikator status seperti pada gambar 4.1. Kelima flag tersebut adalah H atau half cary, N atau negative, Z atau zero, dan C atau carry/borrow.
Flag H (half carry) digunakan untuk operasi aritmatika BCD (Binary Coded Decimal) dan dipengaruhi oleh kerja instruksi ADD dan ADC. Bit H ini akan set jika ada carry yang timbul dari digit heksadesimal 0-3 (low order) dan digit desimal 4-7 (high order).

Bit I (interrupt mask) bukanlah status flag tetapi merupakan bit yang akan men-nonaktif-kan semua sumber interrupt yang maskable saat bit ini diset. Interrupt baru akan aktif jika bit ini nol. Jika ada interrupt eksternal yang terjadi saat bit I diset, maka interrupt tersebut akan di-latch dan akan diproses saat bit I dinolkan. Karena itu, interrupt yang terjadi tidak akan hilang. Setelah interrupt ditangani, instruksi RTI (return from interrupt) akan menyebabkan register ini dikembalikan ke nilai semula. Umumnya, bit I ini akan menjadi nol setelah instruksi RTI dilaksanakan.

Flag N (negative) akan diset jika hasil dari operasi aritmatika, logika, maupun manipulasi data yang terakhir adalah negatif. Nilai negatif dalam two's complement ditandai jika bit MSB adalah satu.
Flag Z (zero) diset jika hasil dari operasi aritmatika, logika, maupun manipulasi data terakhir adalah nol. Instruksi perbandingan (compare) akan mengurangi suatu harga dari suatu lokasi memori yang akan dites. Jika nilainya sama, maka bit Z ini akan diset.

Flag C (carry/borrow) digunakan untuk menandai apakah ada carry dari hasil operasi tambah atau ada borrow darioperasi pengurangan. Instruksi shift dan rotate juga dapat memakai bit C ini.
SP atau stack pointer digunakan sebagai pointer ke lokasi yang tersedia berikutnya dalam tumpukan stack dalam uruatn LIFO (last-in first-out). Stack ini dapat dianalogikan sebagai tumpukan kartu. Setiap kartu menyimpan satu byte (8 bit) informasi. Dalam suatu saat, CPU dapat menaruh satu kartu di atas tumpukan kartu tersebut maupun mengambil satu kartu dari tumpukan. Kartu di dalam tumpukan tidak dapat diambil kecuali jika kartu di atasnya sudah diambil sebelumnya. Stack mirip dengan tumpukan kartu ini hanya saja dalam fisiknya, stack mempunyai arah tumpukan ke bawah bukan ke atas seperti pada tumpukan kartu.

SP akan menunjuk pada alamat stack yang akan tersedia berikutnya. Jika CPU menaruh informasi dalam stack, maka data tersebut akan dituliskan dalam memori yang ditunjukkan oleh nilai SP saat itu, dan kemudian nilai SP akan dikurangi satu sehingga SP akan menunjukkan ke lokasi memori berikutnya yang kosong untuk digunakan sebagai penyimpan berikutnya. Jika CPU mengambil data dari stack, SP akan ditambah satu sehingga menunjukkan ke lokasi stack yang terakhir, dan kemudian data diambil dan dibaca oleh CPU. Saat CPU pertama kali dihidupkan atau setelah instruksi Reset Stack Pointer (RSP), maka SP akan menunjukkan memori tertentu dalam RAM.

0 komentar:

Posting Komentar