Pemrograman Bahasa Assembly Untuk IC AT89S51
-
Upload
irwan-budi-nugroho -
Category
Documents
-
view
222 -
download
0
Transcript of Pemrograman Bahasa Assembly Untuk IC AT89S51
-
7/31/2019 Pemrograman Bahasa Assembly Untuk IC AT89S51
1/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 :
-
7/31/2019 Pemrograman Bahasa Assembly Untuk IC AT89S51
2/3
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
-
7/31/2019 Pemrograman Bahasa Assembly Untuk IC AT89S51
3/3
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