1. Percabangan dengan Syarat
a. CJNE Compare Jumpe If Not Equal
Instruksi ini akan membandingkan isi register atau isi memori dengan satu dat. Bila sama, instruksi selanjutnya yang akan dituju. Bila tidak sama, instruksi yang ditunjuk
oleh label yang akan dilaksanakan. Sebagai contoh :
CJNE R0,0FFH,1sb
Berarti jika R0 tidak sama dengan 0FFH maka instruksi akan menuju ke alamat label 1 sb.
b. DJNZ Decreament and Jump If Not Zero
Instruksi ini akan mengurangi isi register atau isi memori dengan satu. Bila sudah 0, instruksi selanjutnya yang akan dilaksanakan. Bila belum 0, instruksi dilanjutkan ke
label. Sebagai contoh :
DJNZ mem_ultra,ultras
Berarti jika mem_ultra tidak sama demgan nol setelah dikurangi satu, pelaksanaan instruksi harus melompat ke label ultras.
c. JNB Jump If Bit Is Not Set
Instruksi ini menguji satu alamat bit. Bila sisinya 0, eksekusi akan menuju alamat kode. Jika isinya 1, instruksi selanjutnya yang akan dilaksanakan. Sebagai contoh :
JNB TI,
Instruksi ini menguji apakah data sudah dikirim, jika belum periksa kembali. Dimana artinya lompat ke nilai program counter pada baris itu sendiri.
Universitas Sumatera Utara
2. Percabangan Tanpa Syarat
Instruksi ini meliputi SJMP Short Jump dan LJMP Long Jump. Sebagai contoh:
SJMP selesai
Eksekusi program akan menyatakan selesai tanpa syarat apapun.
2.3.10.5 Instruksi Transfer Data
Instruksi transfer data terbagi menjadi dua kelas operasi sebagai berikut : a.
Transfer data utama General Purpose Transfer, yaitu : MOV,PUSH, dan POP. b.Transfer spesifik akumulator Accumulator Specifik Transfer, yaitu : XCH,
XCHD dan MOV C.
Instruksi transfer data adalah instruksi pemindahan atau pertukaran data antara operand sumber dengan operand tujuan. Operandnya dapat berupa register, memori
atau lokasi suatu memori.
2.3.10.6 Instruksi Aritmatika Instruksi Perhitungan
Operasi dasar aritmatik seperti seperti penjumlahan, pengurangan, perkalian, dan pembagian, dimiliki oleh AT89S51 dengan mnemonic : INC, ADD, ADDC, SUBB,
DEC, MUL, dan DIV.
Universitas Sumatera Utara
2.3.10.7 Instruksi Logika
Mikrokontroler AT89S51 dapat melakukan operasi logika bit maupun operasi logika byte. Operasi logika tersebut dibagi atas dua bagian yaitu :
1. Operasi logika operand tunggal, yaitu : CLR, SETB, CPL, RLC, RR,
RRC,SWAB. 2.
Operasi logika dua operand, yakni operasi AND kode operasi ANL, operasi OR kode operasi ORL, operasi Exclusive-OR kode operasi XRL. Data yang
bisa dipakai dalam operasi ini bisa berupa data yang berada dalam akumulator atau data yang berada dalam memori data, hal ini sedikit berbeda dengan operasi
aritmatik yang harus melibatkan akumulator secara aktif.
2.3.10.8 Instruksi Transfer Kendali
Instruksi transfer kendali control transfer terdiri dari tiga kelas operasi yaitu: 1.
Lompatan tidak bersyarat Unconditional jump, seperti : ACALL, AJMP,
LJMP, SJMP, JMP A+DPTR. 2.
Lompatan bersyarat Conditional jump, seperti : JZ, JNZ, JB, CJNE, dan DJNZ. 3.
Interupsi seperti RET1 dan RET.
2.4 Special Function Register SFR