Perintah Rotasi Pemrograman Mikrokontroler
Perintah Rotasi
Perintah rotasi memungkinkan rotasi dari konten akumulator. Ada empat perintah rotasi: RR, RL, RLC, RRC.
RR A (Rotasi Akumulator ke Kanan)
Konten dari akumulator dirotasikan sebanyak 1 bit ke kanan. Bit 0 berpindah ke posisi bit 7 sebagaimana ditunjukkan gambar dibawah :
Sebagai contoh, jika akumulator mengandung 1000 0000B, maka setelah perintah RL A, hasil dalam akumulator akan menjadi 0000 0001B. Tidak ada flag yang akan terpengaruh.
RL A (Rotasi Akumulator ke Kiri)
Konten dari akumulator dirotasikan ke kiri sehingga bit 7 berpindah ke posisi bit 0. Sebagaimana ditunjukkan gambar di bawah:
Sebagai contoh, jika akumulator mengandung 1000 0000B, maka setelah perintah RL A, hasilnya akan menjadi 0000 0001B. Tidak ada flag yang terpengaruh.
RRC A (Rotasi Akumulator ke Kanan melalui Carry)
Perintah ini merotasikan akumulator ke kanan sebanyak 1 bit sedemikian rupa sehingga bit 0 berpindah ke flag Carry dan flag Carry berpindah ke posisi bit 7. Sebagaimana ditunjukkan gambar dibawah:
Sebagai contoh, jika flag Carry diatur dan akumulatornya mengandung 0000 1110 B, maka setelah perintah RRC A, akumulator akan mengandung 1000 0111B dan flag Carry akan menjadi ‘0’.
RLC A (Rotasi akumulator ke Kiri melalui Carry)
Perintah ini merotasi akumulator ke kiri sebanyak 1 bit sedemikian rupa sehingga bit 7 berpindah ke flag Carry dan flag Carry berpindah ke posisi bit 0. Lihat gambar di bawah:
Sebagai contoh, jika flag Carry adalah ‘0’ dan akumulatornya mengandung 1000 1111 B, maka setelah RRC A akumulatornya akan mengandung 0001 1110B dan flag Carry akan berubah menjadi ‘1’. Hanya flag Carry yang terpengaruh.
Kita dapat merotasi melalui Carry dalam sebuah loop beberapa kali; sebagai contoh, perhatikan program berikut untuk merotasi akumulator ke kanan melalui Carry sebanyak 5 kali. Akumulatornya akan mengandung 1000 0000B sebelum perintah RRC, dengan C flag ‘1’. Penghitungan dari 05 akan di-load dalam register R1.
Setelah pengeksekusian program, akumulator akan mengandung 0000 1100B dan flag Carry akan menjadi ‘0’