You are on page 1of 3

Pemrograman Bahasa Assembly untuk IC AT89S51

Untuk berinteraksi dengan perangkat keras yang meliputi memberi perintah maupun pengaturan perangkat dapat digunakan suatu bahasa pemrograman dasar tingkat rendah yaitu bahasa pemrograman Assembly. Assembly merupakan bahasa dasar mesin, meskipun saat ini telah banyak bahasa pemrograman tingkat tinggi yang lebih sederhana dan mudah dipahami namun semua bahasa tersebut sesungguhnya juga merupakan pengembangan dari bahasa assembly. Agar kita dapat menguasai lebih mendalam akan interaksi antara user (manusia) dengan mesin maka pada kuliah microprosesor dan microkontroler di gunakan bahasa assembly sebagai bahasa pemrograman sistem microkontroler. Struktur dasar dari bahasa assembly terdiri atas : Label - Mnemonic (OPcode) - Operand 1 - Operand 2 - Komentar misalnya, mulai : mov P0,#13 ; pengisian data 13 Keterangan :
1.

Label, Kode yang ditentukan sendiri oleh pemrogram. jika lebih dari 2 kata, harus digabung (tidak boleh dipisah) diakhiri dengan tanda ( : ) contoh, mulai : panjangbola :

2.

Mnemonic (opcode), kode perintah yang akan melakukan aksi tiap operand contoh, mov sjmp

3.

Operand 1 (operand tujuan/target), data yang akan diproses oleh Mnemonic contoh, P0 A

4.

Operand 2 (operand asal), data yang akan dipindahkan ke operand tujuan contoh, #13 #110001010B

5.

Komentar, dapat ditulis dengan menggunakan tanda ( ; ) dan tidak akan dieksekusi oleh hardware. Contoh, ; --------------------------- INI ADALAH PROGRAM LED --------------

Instruksi - instruksi Mnemonic yang sering digunakan pada sistem microkontroler diantaranya adalah sebagai berikut :

1.

Intruksi pemindahan data ( MOV ) instruksi (MOV) digunakan untuk memindahkan data dari satu tempat ke tempat lain, atau juga digunakan untuk memindahkan data dari satu pin microcontroler ke pin yang lain. Contoh : mov P3, #11001100B keterangan : instruksi diatas digunakan untuk memindahkan data biner 11001100 ke port 3 pada sistem microcontroler.

2.

Instruksi lompatan ada beberapa macam instruksi lompatan diantaranya : SJMP (Short Jump), melompat ke alamat / label untuk alamat kode yang pendek. AJMP (Absolut Jump), sama dengan SJMP hanya jarak lompatannya lebih jauh. ACALL, Instruksi memanggil subrutin ke sebuah label/sub program. RET (Return), digunakan untuk menghentikan subrutin dan melanjutkan ke instruksi berikutnya.

3.

Instruksi operasi bit SETB (Set Bit), digunakan untuk mengisi alamat bit dengan nilai 1 contoh, SETB P0.0 ; bit P0.0 diisi dengan nilai 1 CLR (Clear), Mengosongkan / mengubah alamat bit dengan nilai 0 contoh, CLR P0.0 ; bit P0.0 dikosongkan dengan nilai 0

4.

Instruksi lompatan bersyarat CJNE (Compare and Jump if Not Equal) Membandingkan nilai sebuah register dengan suatu data/register lain dan akan melompat ke alamat/label yang dituju jika belum sama nilainya. Contoh, CJNE R0,#100,mulai JB (Jump if Bit Set) Melakukan lompatan menurut isi (nilai) sebuah bit. Yang di cari adalah nilai "1" pada bit yang diamati nilainya. Jika bit bernilai "0" akan melanjutkan instruksi berikutnya, namun jika bit bernilai "1" akan melompat ke alamat yang ditentukan. Contoh, mulai : JB P0.0, eksekusi SJMP mulai JNB (Jump if Not Bit Set) Kebalikan dari JB, yang dicari adalah nilai NOL (0) pada bit yang dialamati. DJNZ (Decrement and Jump if Not Zero) Mengurangi nilai sebuah register /alamat tertentu dengan nilai 1 dan jika

hasilnya sudah NOL (0) maka instruksi selanjutnya akan dijalankan contoh DJNZ R4, mulai
5.

Instruksi aritmatika INC (Increment) menambahkan "1" angka dari register/data yang dituju dan hasilnya disimpan pada register tersebut. Contoh INC A ADD Menambahkan isi Akumulator dengan sebuah nilai dan hasilnya disimpan kembali akumulator tersebut. DEC (Decrement) Mengurangi "1" angka dari register yang dituju dan hasilnya disimpan pada register tersebut.

6.

Instruksi geser RR (Rotate Right), Menggeser ke kanan perbit isi akumulator RL (Rotate Left), Menggeser ke kiri perbit isi akumulator

You might also like