LAMPIRAN 2
a. ACALL (Absolute
Call)
Instruksi ACALL digunakan
untuk memanggil sub rutin program
Contoh
:
START:
ACALL TUNDA ; Panggil
Procedure penundaan waktu
….
TUNDA: ;
Label Tunda
MOV
R7,#0FFH ;
Isikan Register 7 dengan data 0FFH(255)
b. ADD (Add Immediate Data)
Instruksi ini
akan menambah
8 bit data langsung ke dalam isi akumulator
dan menyimpan hasilnya pada akumulator.
Contoh : Add A, #data
Add A, #@R1 ; Add
indirect address
Add A,
R6 ;Add register
Add A, 30H ;
add memori
c. ADDC (Add Carry Plus Immediate Data to Accumulator)
Instruksi ini
akan menambahkan
isi carry flag (0 atau 1) ke dalam isi
akumulator.
Data langsung 8 bit ditambahkan
ke akumulator
Contoh: ADDC A,#012H
ADDC A, @R1
; add carry plues indirect address
d. ANL (logical AND memori
ke akumulator)
Instruksi ini
mengAND-kan isi alamat data dengan isi akumulator
Contoh : ANL A,#0001000B ;data
acumulator akan dikalikan dengan 00010000 Biner
ANL A, 57H,#01H; logical AND immediate data
ke memori
e. CJNE (Compare Indirect Address to Immediate Data)
Instruksi ini akan membandingkan data langsung dengan lokasi memori yang dialamati oleh register R atau Akumulator A. apabila tidak sama maka instruksi akan menuju ke
alamat kode.
Format : CJNE R,#data,Alamat kode
Contoh:
CJNE R7,#001H,Command0
MOV A,StepControl
AJMP Command1
f. CLR (Clear
Accumulator)
Instruksi CLR akan
mereset data akumulator menjadi 00H.
Format : CLR A
g. CPL (Complement Accumulator)
Instruksi CPL akan mengkomplemen isi akumulator
Contoh
: CPL A
CPL C ; mengkomplemen isi carry flag
h. DA (Decimal Adjust Accumulator)
Instruksi DA akan
mengatur isi akumulator ke padanan
BCD, steleah penambahan dua angka BCD.
i. DEC (Decrement Indirect
Address)
Instruksi DEC akan mengurangi isi lokasi memori yang ditujukan oleh register R dengan 1, dan hasilnya
disimpan pada lokasi tersebut.
Contoh: DEC 40H
DEC R7 ; decrement register
j. DIV (Divide Accumulator by B)
Instruksi DIV akan membagi isi akumulator dengan isi register B. Akumulator berisi hasil bagi, register B
berisi sisa pembagian.
Contoh : MOV
B,#1H
DIV
AB
k. DJNZ (Decrement Register And
Jump Id Not Zero)
Instruksi DJNZ akan mengurangi nilai register dengan 1 dan jika hasilnya
sudah 0 maka instruksi selanjutnya akan dieksekusi. Jika belum 0 akan menuju ke alamat kode.
Format : DJNZ Rr,Alamat
Kode
l. INC (Increment Indirect Address)
Instruksi INCi akan menambahkan isi memori dengan 1
dan menyimpannya pada alamat tersebut.
Contoh: INC A
INC R7 ; increment register
m. JB (Jump if Bit is Set)
Instruksi ini
akan membaca
data per satu bit, jika
data tersebut adalah 1 maka akan menuju
ke alamat kode dan jika
0 tidak akan menuju ke alamat
kode.
Format : JB alamat
bit,alamat kode
n. JC (Jump if
Carry is Set)
Instruksi JC akan menguji
isi carry flag.
Jika berisi 1, eksekusi menuju ke alamat kode,
jika berisi 0, instruksi selanjutnya yang akan dieksekusi.
o. JNB (Jump if Bit is Not Set)
Instruksi JNB akan
membaca data per satu bit, jika data tersebut adalah 0 maka akan
menuju ke alamat kode dan
jika 1 tidak akan menuju ke
alamat kode.
Format : JNB alamat bit,alamat kode
p. JMP (Jump
to sum of Accumulator and Data Pointer)
Instruksi JMP untuk
memerintahkan loncat kesuato alamat kode tertentu.
Format : JMP alamat kode.
Contoh :
…
RL A ; Geser
data Akumulator Ke kiri
ACALL Long_Delay ; Panggil Procedure penundaan waktu
JMP
k. MOV
Instruksi ini
untuk memindahkan isi akumulator/register atau data dari nilai luar atau
alamat lain.
Contoh :
MOV A,#40H
MOV @RO,A
MOV A, P3
MOV C, P1.0
MOV DPTR, #20H
MOVC A, @A+DPTR ; pindahkan code memory offset dari data pointer ke A
MOVX @DPTR, A ; Pindahkan
akumulator ke memoeri eksterlah yang dialamati oleh
;Data pointer
q. ORL (Logical OR
Immediate Data to Accumulator)
Instruksi ORL sebagai
instruksi Gerbang logika OR yang akan menjumlahkan Accumulator terhadap
nilai yang ditentukan.
Format : ORL A,#data
Contoh : ORL
A,#0001000B
Ini berarti
data acumulator akan dijumlahkan dengan 00010000 Biner
Jika A bernilai
11100001 maka hasilnya adalah 11110001
r. RET (Return from subroutine)
Intruksi untuk kembali
dari suatu subrutin program ke alamat terakhir subrutin tersebut di panggil.
s. SETB (Set Bit)
Instruksi SETB untuk mengaktikan atau memberikan logika 1 pada sebuah bit data
Format :
SETB A.1 (memberikan logika 1 pada accumulator bit ke 1)
SETB P1.1 (memberikan logika 1
t. CLRB (Clear Bit)
Instruksi CLRB untuk
memberikan logika 0 pada sebuat bit data.
Format :
CLRB A.1 ;memberikan
logika 0 pada accumulator
bit ke 1
u. MOVX (Move Accumulator to External Memory
Addressed by Data Pointer)
Instruksi POP akan
memindahkan isi akumulator ke memori
data eksternal yang alamatnya
ditunjukkan oleh isi data pointer.
Contoh: MOVX @DPTR,A
MOVX @R0,A
v. POP (Pop
Stack to Memory)
Instruksi POP akan menempatkan byte yang ditunjukkan
oleh stack pointer ke suatu alamat data.
Contoh: POP PSW
POP 03H
w. PUSH (Push Memory onto Stack)
Instruksi ini akan
menaikkan stack pointer kemudian
menyimpan isinya ke suatu alamat
data pada lokasi yang ditunuk oleh stack pointer.
Contoh: PUSH 30H
x.
DB (Define Byte)
Digunakan untuk memberi nilai
tertentu pada memori di lokasi tersebut
Contoh : ORG
4000H
DB 40H,41H
y.
RL (Rotate
Accumulator Left)
Instruksi
RL akan memutar setiap bit dalam akumulator satu posisi ke kiri.
Contoh :
RL A
RLC A ;
rotasi akumulator dan carry flag ke kiri
RR A ;
rotasi akumulator ke kanan
z.
SETB (set Carry
flag)
Instruksi
SETB akan menset carry flag
Contoh
: SETB
C