![]() |
| Operasi Logika MCS51 |
ANL
Melakukan operasi AND antara dua buah variabel dan menyimpannya di variabel tujuan. Apabila variabel tujuan adalah akumulator, maka variabel yang lain dapat menggunakan register (Rn), alamat langsung, tak langsung atau immediate data, apabila variabel tujuan adalah alamat langsung, maka variabel yang lain dapat menggunakan akumulator atau immediate data.ANL A,Rn
Siklus | Jumlah Byte | Instruksi | |||||||
1 | 1 | ANL A,Rn | |||||||
Flag | C | AC | F0 | RS1 | RS0 | OV | P | ||
Melakukan operasi AND antara akumulator A dan Rn (R0…R7) dan hasilnya disimpan di akumulator A.
ANL A,direct
Siklus | Jumlah Byte | Instruksi | |||||||
1 | 2 | ANL A,direct | |||||||
Flag | C | AC | F0 | RS1 | RS0 | OV | P | ||
Melakukan operasi AND antara akumulator A dan alamat langsung dan hasilnya disimpan di akumulator A.
Contoh:
ANL A,05H
Akumulator A di AND dengan data di alamat 05H dan hasilnya disimpan di akumulator A.
ANL A,@Ri
Siklus | Jumlah Byte | Instruksi | |||||||
1 | 1 | ANL A,@Ri | |||||||
Flag | C | AC | F0 | RS1 | RS0 | OV | P | ||
Melakukan operasi AND antara akumulator A dan data yang ditunjuk oleh Register Index (R0 atau R1) serta hasilnya disimpan di akumulator A.
Contoh:
ANL A,@R0
Akumulator A di AND dengan data yang ditunjuk oleh R0, misalkan R0 berisi 50H, maka akumulator A di AND dengan data yang tersimpan di alamat 50H dan hasilnya disimpan di akumulator A.
ANL A,#data
Siklus | Jumlah Byte | Instruksi | |||||||
1 | 2 | ANL A,#data | |||||||
Flag | C | AC | F0 | RS1 | RS0 | OV | P | ||
Melakukan operasi AND antara akumulator A dan immediate data serta hasilnya disimpan di akumulator A.
ANL direct,A
Siklus | Jumlah Byte | Instruksi | |||||||
1 | 2 | ANL direct,A | |||||||
Flag | C | AC | F0 | RS1 | RS0 | OV | P | ||
Melakukan operasi AND antara alamat langsung dengan akumulator A serta hasilnya disimpan di alamat langsung tersebut.
Contoh:
ANL 07H,A
Data di alamat 07H di AND dengan akumulator A dan hasilnya kembali disimpan di alamat 07H.
ANL direct,#data
Siklus | Kode Operasi | Instruksi | |||||||
2 | 3 | ANL direct,#data | |||||||
Flag | C | AC | F0 | RS1 | RS0 | OV | P | ||
Melakukan operasi AND antara alamat langsung dengan immediate data serta hasilnya disimpan di alamat langsung tersebut.
ORL
Melakukan operasi OR antara dua buah variabel dan menyimpannya di variabel tujuan. Apabila variabel tujuan adalah akumulator, maka variabel yang lain dapat menggunakan register (Rn), alamat langsung, tak langsung atau immediate data, apabila variabel tujuan adalah alamat langsung, maka variabel yang lain dapat menggunakan akumulator atau immediate data.ORL A,Rn
Siklus | Jumlah Byte | Instruksi | |||||||
1 | 1 | ORL A,Rn | |||||||
Flag | C | AC | F0 | RS1 | RS0 | OV | P | ||
Melakukan operasi OR antara akumulator A dan Rn (R0…R7) dan hasilnya disimpan di akumulator A.
ORL A,direct
Siklus | Jumlah Byte | Instruksi | |||||||
1 | 2 | ORL A,direct | |||||||
Flag | C | AC | F0 | RS1 | RS0 | OV | P | ||
Melakukan operasi OR antara akumulator A dan alamat langsung dan hasilnya disimpan di akumulator A.
Contoh:
ORL A,05H
Akumulator A di OR dengan data di alamat 05H dan hasilnya disimpan di akumulator A.
ORL A,@Ri
Siklus | Jumlah Byte | Instruksi | |||||||
1 | 1 | ORL A,@Ri | |||||||
Flag | C | AC | F0 | RS1 | RS0 | OV | P | ||
Melakukan operasi OR antara akumulator A dan data yang ditunjuk oleh Register Index (R0 atau R1) serta hasilnya disimpan di akumulator A.
Contoh:
ORL A,@R0
Akumulator A di OR dengan data yang ditunjuk oleh R0, misalkan R0 berisi 50H, maka akumulator A di OR dengan data yang tersimpan di alamat 50H dan hasilnya disimpan di akumulator A.
ORL A,#data
Siklus | Jumlah Byte | Instruksi | |||||||
1 | 2 | ORL A,#data | |||||||
Flag | C | AC | F0 | RS1 | RS0 | OV | P | ||
Melakukan operasi OR antara akumulator A dan immediate data serta hasilnya disimpan di akumulator A.
ORL direct,A
Siklus | Jumlah Byte | Instruksi | |||||||
1 | 2 | ORL direct,A | |||||||
Flag | C | AC | F0 | RS1 | RS0 | OV | P | ||
Melakukan operasi OR antara alamat langsung dengan akumulator A serta hasilnya disimpan di alamat langsung tersebut.
Contoh:
ORL 07H,A
Data di alamat 07H di OR dengan akumulator A dan hasilnya kembali disimpan di alamat
07H.
ORL direct,#data
Siklus | Jumlah Byte | Instruksi | |||||||
2 | 3 | ORL direct,#data | |||||||
Flag | C | AC | F0 | RS1 | RS0 | OV | P | ||
Melakukan operasi OR antara akumulator A dan immediate data serta hasilnya disimpan di akumulator A.
XRL
Melakukan operasi EXOR antara dua buah variabel dan menyimpannya di variabel tujuan. Apabila variabel tujuan adalah akumulator, maka variabel yang lain dapat menggunakan register (Rn), alamat langsung, tak langsung atau immediate data, apabila variabel tujuan adalah alamat langsung, maka variabel yang lain dapat menggunakan akumulator atau immediate data.XRL A,Rn
Siklus | Jumlah Byte | Instruksi | |||||||
1 | 1 | XRL A,Rn | |||||||
Flag | C | AC | F0 | RS1 | RS0 | OV | P | ||
Melakukan operasi EXOR antara akumulator A dan Rn (R0…R7) dan hasilnya disimpan di akumulator A.
XRL A,direct
Siklus | Jumlah Byte | Instruksi | |||||||
1 | 2 | XRL A,direct | |||||||
Flag | C | AC | F0 | RS1 | RS0 | OV | P | ||
Melakukan operasi EXOR antara akumulator A dan alamat langsung dan hasilnya disimpan di akumulator A.
Contoh:
XRL A,05H
Akumulator A di EXOR dengan data di alamat 05H dan hasilnya disimpan di akumulator A.
XRL A,@Ri
Siklus | Jumlah Byte | Instruksi | |||||||
1 | 1 | XRL A,@Ri | |||||||
Flag | C | AC | F0 | RS1 | RS0 | OV | P | ||
Melakukan operasi EXOR antara akumulator A dan data yang ditunjuk oleh Register Index (R0 atau R1) serta hasilnya disimpan di akumulator A.
Contoh:
XRL A,@R0
Akumulator A di EXOR dengan data yang ditunjuk oleh R0, misalkan R0 berisi 50H, maka akumulator A di EXOR dengan data yang tersimpan di alamat 50H dan hasilnya disimpan di akumulator A.
XRL A,#data
Siklus | Jumlah Byte | Instruksi | |||||||
1 | 2 | XRL A,#data | |||||||
Flag | C | AC | F0 | RS1 | RS0 | OV | P | ||
Melakukan operasi EXOR antara akumulator A dan data yang ditunjuk oleh Register Index (R0 atau R1) serta hasilnya disimpan di akumulator A.
Contoh:
XRL A,@R0
Akumulator A di EXOR dengan data yang ditunjuk oleh R0, misalkan R0 berisi 50H, maka akumulator A di EXOR dengan data yang tersimpan di alamat 50H dan hasilnya disimpan di akumulator A.
XRL direct,A
Siklus | Jumlah Byte | Instruksi | |||||||
1 | 2 | XRL direct,A | |||||||
Flag | C | AC | F0 | RS1 | RS0 | OV | P | ||
Melakukan operasi OR antara alamat langsung dengan akumulator A serta hasilnya disimpan di alamat langsung tersebut.
Contoh:
ORL 07H,A
Data di alamat 07H di OR dengan akumulator A dan hasilnya kembali disimpan di alamat 07H.
XRL direct,#data
Siklus | Jumlah Byte | Instruksi | |||||||
2 | 3 | XRL direct,#data | |||||||
Flag | C | AC | F0 | RS1 | RS0 | OV | P | ||
Melakukan operasi EXOR antara alamat langsung dengan immediate data serta hasilnya disimpan di alamat langsung tersebut.
CLR A
Siklus | Jumlah Byte | Instruksi | |||||||
1 | 1 | CLR A | |||||||
Flag | C | AC | F0 | RS1 | RS0 | OV | P | ||
Memberikan nilai 0 pada 8 bit Akumulator A.
CPL A
Siklus | Jumlah Byte | Instruksi | |||||||
1 | 1 | CPL A | |||||||
Flag | C | AC | F0 | RS1 | RS0 | OV | P | ||
Melakukan komplemen pada setiap bit dalam akumulator A.
Contoh :
Bila nilai akumulator A adalah 55H atau 01010101b, maka setelah terjadi proses komplemen nilai akumulator A berubah menjadi AAH atau 10101010b.
RL A
Siklus | Jumlah Byte | Instruksi | |||||||
1 | 1 | RL A | |||||||
Flag | C | AC | F0 | RS1 | RS0 | OV | P | ||
Melakukan pergeseran ke kiri 1 bit untuk setiap bit dalam akumulator A Contoh:
Nilai Akumulator A adalah 05H atau 00000101b, setelah dilakukan proses pergeseran maka nilai Akumulator A akan berubah menjadi 00001010b atau 0AH.
RLC A
Siklus | Jumlah Byte | Instruksi | |||||||
1 | 1 | RLC A | |||||||
Flag | C | AC | F0 | RS1 | RS0 | OV | P | ||
X | |||||||||
Melakukan pergeseran ke kiri 1 untuk setiap bit dalam akumulator A diikuti dengan carry flag. Bit ke 7 akan masuk ke carry flag dan bit carry flag akan masuk ke bit 0.
Contoh:
Nilai Akumulator A adalah 05H atau 00000101b dan carry flag set, setelah dilakukan proses pergeseran maka nilai Akumulator A akan berubah menjadi 00001011b atau 0BH dengan carry flag clear.
RR A
Siklus | Jumlah Byte | Instruksi | |||||||
1 | 1 | RR A | |||||||
Flag | C | AC | F0 | RS1 | RS0 | OV | P | ||
Melakukan pergeseran ke kanan 1 bit untuk setiap bit dalam akumulator A Contoh:
Nilai Akumulator A adalah 05H atau 00000101b, setelah dilakukan proses pergeseran maka nilai Akumulator A akan berubah menjadi 10000010b atau 0AH.
RRC A
Siklus | Jumlah Byte | Instruksi | |||||||
1 | 1 | RRC A | |||||||
Flag | C | AC | F0 | RS1 | RS0 | OV | P | ||
X | |||||||||
Melakukan pergeseran ke kanan 1 untuk setiap bit dalam akumulator A diikuti dengan carry flag. Bit ke 7 akan masuk ke carry flag dan bit carry flag akan masuk ke bit 0.
Contoh:
Nilai Akumulator A adalah 05H atau 00000101b dan carry flag set, setelah dilakukan proses pergeseran maka nilai Akumulator A akan berubah menjadi 00001011b atau 0BH dengan carry flag clear.
SWAP A
Siklus | Jumlah Byte | Instruksi | |||||||
1 | 1 | SWAP A | |||||||
Flag | C | AC | F0 | RS1 | RS0 | OV | P | ||
Melakukan operasi penukaran nibble tinggi dan nibble rendah di akumulator A Contoh:
Isi akumulator A adalah 51H, setelah instruksi SWAP A dilakukan maka data 5 di nibble tinggi akan ditukar dengan data 1 di nibble rendah menadi 15H.
