Perintah Logika, Variabel Boolean dan Pencabangan pada MCS-51

Perintah Logika

Operasi gerbang logika AND, OR, Exclusive-OR dapat dijalankan dalam MCS-51. Perintah-perintah ini menerima dua operand 8-bit, dan hasilnya disimpan di tujuan, tidak ada flag yang dipengaruhi oleh perintah-perintah ANL, OR dan XOR. Ada beberapa perintah operand-tunggal seperti CLR, SETB dan CPL; perintah rotasi RR, RRC, RL, RL; dan perintah SWAP. Penting untuk dicatat bahwa perintah CPL adalah komplementer dari akumulator tanpa mempengaruhi flag manapun. Namun, perintah RLC dan RRC memodifikasi flag CY. Perintah RLC menggerakkan bit-7 dari akumulator ke posisi CY. Secara serupa, perintah RRC menggerakkan bit-0 dari akumulator ke flag CY. Perintah SWAP A secara sederhana menukar logika rendah dan tinggi dari akumulator dan tidak ada flag yang dipengaruhi. Perintah-perintah logika ditunjukkan dalam tabel berikut:

tabel4-3

Perintah Manipulasi Variabel Boolean

Operand untuk manipulasi variable Boolean dijelaskan dalam perintah-perintah ini. Berkaitan dengan perintah-perintah dua-operand, terdapat bit tujuan dan bit sumber. Sebagai contoh, perintah MOV memiliki dua operand bit-tunggal. Operasi OR, AND dengan dua operand bit-tunggal adalah mungkin. Perintah-perintah operandi-tunggal CLR, SETB, CPL memodifikasi lokasi bit yang ditentukan dalam instruksi. Tabel berikut menunjukkan perintah-perintah manipulasi Boolean:

tabel4-4

Perintah Pencabangan Program

MCS-51 dapat melakukan operasi cabang bersyarat dan tidak bersyarat. Terdapat perintah Jump, Call, dan Return. Perintah Jump memiliki tiga jenis: Jump pandek (SJMP), Jump panjang (LJMP) dan Jump mutlak (AJMP). Jump pendek mentransfer kendali dalam jangkauan range 256-byte, yaitu dari -128 hingga +127 bytes relative ke byte pertama dari byte perintah yang mengikuti. Jump mutlak memungkinkan penentuan alamat 11-bit dalam perintah. Tujuannya harus berada dalam blok 2K dari memori program dari perintah selanjutnya diikuti oleh perintah AJMP. Berkaitan dengan perintah LJMP, sebuah alamat 16-bit ditentukan dalam perintah dan sebuah Jump ke mana saja mungkin untuk dilakukan dalam jangkauan blok meori program 64K . Serupa dengan Jump mutalk dan panjang, terdapat perintah Call mutlak (ACALL) dan Call panjang (LCALL). Call absolute memungkinkan penentuan alamat 11-bit dalam perintah, dan memanggil subrutin dalam blok memori program 2K, dimulai dari alamat perintah selanjutnya adalah mungkin untuk dilakukan. LCALL menggunakan alamat 16-bit dalam perintah dan subrutin dimana saja dalam jangkauan blok memori program 64K yang dapat dipanggil. Terdapat perintah Jump bersyarat JZ, CJNE, DJNZ, JZ rel yang menguji akumulator untuk nol dan kemudian mentransfer kendali ke alamat dalam memori program yang telah diberikan oleh alamat relative. Perintah CJNE membandingkan operandi pertama dengan operandi kedua dan kemudian melakukan operasi cabang jika kedua operandi tidak sama dengan. Perintah DJNZ mengurangi operandi sumber dan hasilnya disimpan dalam operandi sumber. Jump dicocokkan ke alamat relative jika hasilnya bukan nol. DJNZ dapat digunakan untuk mengimplementasikan jeda rutin perangkat halus. Terpisah dari hal-hal sebelumnya, terdapat perintah RET dan RETI. RETI dan RET mentransfer kendali ke alamt pengembalian yang disimpan dalam stack; satu-satunya perbedaan adalah bahwa sebagai tambahan fungsi pengembalian, perintah RETI memungkinkan interupsi level prioritas terkini. Semua perintah pencabangan program dapat dilihat di tabel berikut:

tabel4-5

Mungkin Anda juga menyukai

Tinggalkan Balasan

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.