Jumat, 04 Desember 2009

instruksi

LAMPIRAN 2

Instruksi Penting AT89S51/52

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 :

Loop:

RL A ; Geser data Akumulator Ke kiri

ACALL Long_Delay ; Panggil Procedure penundaan waktu

JMP Loop ; Loncat Ke Procedure Loop

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 pada Port 1 bit ke 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

CLRB P1.1 ; memberikan logika 0 pada Port 1 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

Tidak ada komentar:

Posting Komentar