You are on page 1of 16

Modul I Praktikum Sistem Mikrokontroler

Pemrograman Assembly
Teknik Elektro UIN SGD Bandung Hal 1 dari 16
Modul I
PEMROGRAMAN ASSEMBLY


I. Tujuan
1. Mengenal dan memahami instruksi-instruksi dalam MCS-51
2. Mampu membuat program sederhana
3. Mengenal dan memahami prosedur memasukkan program ke dalam
mikrokontroler


II. Dasar Teori
Modul ini akan memberikan pengenalan instruksi-instruksi dasar pada MCS-51,
format umum dan penjelasan fungsi-fungsinya. Selanjutnya, berdasarkan instruksi-
instruksi tersebut, praktikan dilatih membuat suatu program sederhana. Terakhir, akan
dijelaskan prosedur memasukkan program itu ke dalam mikrokontroler.
Kita akan memulai pemrograman assembly dengan mengenal instruksi-instruksi yang
ada dalam MCS-51.
Secara umum instruksi-instruksi dalam keluarga MCS-51 dapat dikategorikan dalam
empat bagian : instruksi perpindahan data, instruksi aritmatika, instruksi logika dan
instruksi percabangan.

II.1 Instruksi Perpindahan Data
Instruksi perpindahan data merupakan instruksi yang paling sering dipergunakan
dalam suatu pemrograman assembly. Berikut merupakan format umum instruksi ini :
Ins Parameter1, Parameter2
Ins adalah instruksi, Parameter1 adalah tujuan dari hasil operasi dan kadang kala
merupakan parameter pertama dalam operasi yang dilakukan, sedangkan Parameter2
umumnya berupa nilai yang akan dioperasikan oleh instruksi.

Contoh : MOV A, R0

Modul I Praktikum Sistem Mikrokontroler
Pemrograman Assembly
Teknik Elektro UIN SGD Bandung Hal 2 dari 16
Dalam hal ini, instruksi yang digunakan adalah MOV : bertugas memindahkan data
dari R0 ke A .
Misal, sebelum eksekusi:
R0 30h 25h A
Parameter2 Parameter1

Setelah eksekusi:
R0 30h 30h A
Parameter2 Parameter1
Dengan mengetahui arah aliran data dalam instruksi, akan memudahkan kita untuk
memahami instruksi lainnya yang akan dibahas.
Beberapa format instruksi perpindahan data yang lain dapat dilihat pada tabel berikut:
Tabel 1 Instruksi Perpindahan Data
Instruksi Keterangan Contoh
MOV A, Rn
Memindahkan isi register Rn ke A
(akumulator)
MOV A, R0
MOV A, direct
Memindahkan isi direct byte ke
akumulator
MOV A, 30h
MOV A, #data
Mengisi akumulator dengan nilai
data
MOV A, #20h
MOV A, @Rn
Mengisi akumulator dengan isi dari
alamat yang ditunjuk oleh Rn
MOV A, @R0


II.2 Instruksi Aritmatika
Berikut merupakan beberapa contoh instruksi aritmatika (Tabel 2).

Tabel 2 Instruksi Aritmatika
Instruksi Keterangan Contoh
ADD A, Rn
Menambah isi register Rn dengan isi
akumulator lalu disimpan di akumulator
ADD A, R1
ADD A, direct
Menambah isi direct dengan akumulator,
hasilnya disimpan di akumulator
ADD A, 30H
ADD A, #data
Menambahkan immediate data ke akumulator
ADD A, #20h
ADD A, @Rn
Menambahkan isi dari alamat yang ditunjuk
Rn dengan akumulator
ADD A, @R1
Modul I Praktikum Sistem Mikrokontroler
Pemrograman Assembly
Teknik Elektro UIN SGD Bandung Hal 3 dari 16
ADDC A, #data
Menambahkan immediate data ke akumulator
dengan carry
ADDC A,
#20h
SUBB A, Rn
Kurangkan isi register Rn dari akumulator
SUBB A, R1
INC A
Tambah isi akumulator dengan 1
INC A
DEC A
Kurangkan isi akumulator dengan 1
DEC A
MUL AB
Kalikan isi A dengan isi B, low-byte disimpan
pada akumulator, dan high byte pada B
MUL AB
DIV AB
Bagi isi A dengan isi B. Akumulator
menerima hasil integer pembagian dan B
menerima integer sisanya.
DIV AB


II.3 Instruksi Logika
Berikut merupakan beberapa contoh instruksi logika.

Tabel 3 Instruksi Logika

Instruksi Keterangan Contoh
ANL A, Rn
AND isi Rn dengan isi akumulator
AND A, R0
ANL A, #data
AND immediate data dengan isi akumulator
AND A, #20H
ORL A, Rn
OR isi Rn dengan isi akumulator
OR A, R0
XRL A, #data
XOR immediate data dengan isi akumulator
XOR A, #data
CPL A
Komplemen isi akumulator
CPL A


II.4 Instruksi Percabangan
Percabangan pada 8051 ada beberapa macam, antara lain :
Conditional Jump ;
Direct Jump ;
Direct Call (pemanggilan subroutine) ;
Return from subroutine (kembali dari subroutine).

II.4.1 Conditional Jump
8051 memiliki beberapa instruksi yang dapat digolongkan sebagai instruksi
conditional jump. Instruksi-instruksi ini menyebabkan 8051 mengeksekusi program
tidak secara baris per-baris, melainkan berubah/meloncat berdasar suatu kondisi
tertentu. Proses ini mirip dengan struktur if. else. pada pemrograman C++. Hal
yang perlu diperhatikan dalam conditional jump adalah program hanya dapat
melakukan percabangan pada alamat relatif sejauh 128 byte sebelumnya atau 127 byte
Modul I Praktikum Sistem Mikrokontroler
Pemrograman Assembly
Teknik Elektro UIN SGD Bandung Hal 4 dari 16
sesudahnya. Berikut adalah contoh potongan program yang menunggu input dari pin
P0.2 sampai berharga satu:

WAIT: JNB P0.2, WAIT


JNB adalah instruksi jump dengan syarat berikut : apabila bit yang diperiksa 1, ia
akan mengeksekusi alamat label pada operandnya; apabila bit yang diperiksa = 1, ia
akan menjalankan instruksi di bawahnya.

II.4.2 Direct Jump
Apabila conditional jump sangat penting dalam proses pengambilan keputusan, direct
jump sangat penting ketika kita ingin melakukan suatu percabangan ke alamat memori
tertentu tanpa memperhatikan suatu kondisi. Contoh:

LOOPHERE: AJMP LOOPHERE

Dengan dieksekusinya potongan program tersebut, maka mikrokontroler akan terus
melakukan iterasi selamanya pada LOOPHERE. Umumnya algoritma ini digunakan
untuk mengakhiri suatu program, sehingga PC tidak menjalankan instruksi yang tidak
diinginkan, atau microcontroller sedang menunggu interrupt dari I/O.

II.4.3 Direct Calls
Operasi ini akan menyebabkan program memanggil subroutine. Perbedaan dengan
jump adalah instruksi ini menyimpan alamat untuk kembali ke flow program semula.
Misalkan suatu program utama MAIN memanggil fungsi DELAY.

MAIN:

CALL DELAY


DELAY:

RET
Modul I Praktikum Sistem Mikrokontroler
Pemrograman Assembly
Teknik Elektro UIN SGD Bandung Hal 5 dari 16
Ketika fungsi subroutine DELAY dipanggil, maka instruksi pada subroutine DELAY
akan dieksekusi hingga instruksi RET. Instruksi RET menunjukkan subroutine
DELAY telah selesai dilaksanakan, selanjutnya yang harus dikerjakan mikrokontroler
adalah instruksi di bawah CALL DELAY.


III. Alat dan Bahan
1. Komputer
2. Programmer ALL-11
3. Software UMPS
4. Software WACCESS
5. AT89C51


IV. Prosedur Praktikum
Lakukanlah praktikum ini sebaik-baiknya dengan mengikuti urutan prosedur yang
dijelaskan berikut!

IV.1 Konfigurasi Software dan Peralatan
1. Nyalakan komputer Anda!
2. Pastikan ALL-11 telah aktif dan terhubung dengan komputer Anda melalui
port paralel yang telah tersedia!
3. Pastikan software UMPS telah tersedia pada komputer Anda! Software ini
akan dipergunakan sebagai lingkungan kerja dalam pembuatan program
assembly.
4. Pastikan software WACCESS telah tersedia pada komputer Anda! Software
ini akan dipergunakan untuk mengakses Programmer ALL-11.
5. Pastikan Anda telah memiliki sebuah AT89C51!

Modul I Praktikum Sistem Mikrokontroler
Pemrograman Assembly
Teknik Elektro UIN SGD Bandung Hal 6 dari 16
IV.2 Membuat Program Sederhana dengan UMPS
IV.2.1 Mempersiapkan Lingkungan Kerja UMPS
1. Buka software UMPS! Pada layar akan muncul tampilan sesuai Gambar 1.


Gambar 1 Tampilan Awal UMPS

2. Pilih menu [Configure] [Load CPU]. Carilah lokasi dimana CPU berada!
Selanjutnya pilih file: 8031.cpl. Tekan tombol [OK] Proses ini diperlihatkan
pada Gambar 2.


Gambar 2 Menu Pemilihan CPU


Modul I Praktikum Sistem Mikrokontroler
Pemrograman Assembly
Teknik Elektro UIN SGD Bandung Hal 7 dari 16
3. Buka menu [FILE] [New], sehingga pada layar muncul tampilan berikut


Gambar 3 UMPS <8031>

4. Sekarang, lingkungan kerja untuk pemrograman assembly MCS51 telah siap
dipergunakan.

IV.2.2 Pembuatan Program Sederhana
1. Salinlah kode program berikut dalam UMPS!
ORG 0H ; mulai pada alamat 0H
MOV R5, #25H ; isi R5 dengan 25H
MOV R7, #34H ; isi R7 dengan 34H
MOV A, #0 ; isi A dengan 0
ADD A, R5 ; tambahkan isi R5 dengan isi A
; sekarang A = A + R5
ADD A, R7 ; tambahkan isi R7 dengan isi A
; sekarang A = A + R7
ADD A, #12H ; tambahkan isi A dengan 12H
; sekarang A = A + 12H
HERE: SJMP HERE ; lakukan terus loop ini
END ; akhir kode program

Modul I Praktikum Sistem Mikrokontroler
Pemrograman Assembly
Teknik Elektro UIN SGD Bandung Hal 8 dari 16
2. Simpan file tersebut dengan nama mod1_01.asm. Seperti terlihat pada gambar
4. Tekan [OK].


Gambar 4 Save File dalam Format *.asm

3. Pilih menu [PROGRAM] [COMPILE], sehingga muncul tampilan berikut.
Pilihlah file mod1_01.asm sebagai file yang akan dikompile


Gambar 5 Compile sebuah File *.asm
Modul I Praktikum Sistem Mikrokontroler
Pemrograman Assembly
Teknik Elektro UIN SGD Bandung Hal 9 dari 16
4. Bila proses ini berjalan dengan baik, tampilan berikutnya akan terlihat sebagai
berikut:


Gambar 6 Status Kompilasi

5. Sampai disini proses compile telah selesai. Bila Anda lihat pada folder dimana
mod1_01.asm berada, terdapat file mod1_01.hex dan mod1_01.lst. File
mod1_01.hex adalah file heksadesimal program yang telah dibuat, yang
selanjutnya akan disimpan/di-burn dalam AT89C51 kita. Sedang file
mod1_01.lst menampilkan pesan-pesan kesalahan yang terjadi selama proses
kompile berlangsung.
6. Penggunaan UMPS lebih lanjut akan dibahas pada modul II.


[TUGAS01]
Berdasarkan contoh yang telah dijelaskan di atas, buatlah suatu program yang
melakukan proses berikut:
(a) hapus akumulator (A), kemudian
(b) tambahkan 3 ke dalam akumulator sebanyak 10 kali
Simpanlah file tersebut dengan nama mod1_02.asm, kemudian compile-lah file
tersebut!

Modul I Praktikum Sistem Mikrokontroler
Pemrograman Assembly
Teknik Elektro UIN SGD Bandung Hal 10 dari 16
[TUGAS02]
Tulislah suatu program yang dapat menghapus 16 buah lokasi RAM mulai dari alamat
60H! Simpanlah file tersebut dengan nama mod1_03.asm, kemudian compile-lah file
tersebut!

[TUGAS-03]
Tulislah suatu program yang dapat meng-copy sebuah blok yang terdiri dari 10 bytes
data yang terletak mulai dari alamat 35H ke alamat yang dimulai dari 60H!
Simpanlah file tersebut dengan nama mod1_04.asm, kemudian compile-lah file
tersebut!

IV.2.3 Memasukkan Program yang Telah Dibuat ke dalam Mikrokontroler
1. Pasang IC AT89C51 Anda ke dalam Programmer ALL-11, pastikan tanda
segitiga berada pada sudut kiri atas Programmer. Bila sudah terpasang dengan
baik kuncilah IC tersebut.
2. Buka software WACCESS, sehingga pada layar akan terlihat tampilan seperti
Gambar 7.


Gambar 7 Software WACCESS
Modul I Praktikum Sistem Mikrokontroler
Pemrograman Assembly
Teknik Elektro UIN SGD Bandung Hal 11 dari 16
3. Pilih menu [OPTION] [I/O BASE ADDRESS], hal ini dilakukan untuk
memeriksa apakah IC telah terpasang dengan baik, seperti terlihat pada
Gambar 8. Kemudian tekan [CANCEL].


Gambar 8 Status Programmer

4. Pilih menu [DEVICE], pada layar akan muncul tampilan sesuai Gambar 9.
Pilihlah ATMEL, lalu [OK]!


Gambar 9 Manufacturing List

5. Selanjutnya akan muncul menu type list yang diinginkan. Pilih MPU/MCU,
dan AT89C51 sebagai jenisnya. Tekan [RUN].

Modul I Praktikum Sistem Mikrokontroler
Pemrograman Assembly
Teknik Elektro UIN SGD Bandung Hal 12 dari 16
6. Pada layar akan muncul tampilan seperti Gambar 10.


Gambar 10 Menu ATMEL AT89C51

7. Selanjutnya pilihlah menu [FILE] [Load File To Programmer Buffer]. Pada
layar akan muncul tampilan berikut. Tekan [OPEN].


Gambar 11 Load File to Programmer Buffer

Modul I Praktikum Sistem Mikrokontroler
Pemrograman Assembly
Teknik Elektro UIN SGD Bandung Hal 13 dari 16
8. Tampilan berikutnya dapat dilihat pada Gambar 12, pilihlah format file Intel
HEX dan Unused Byte FF, lalu tekan [OK]


Gambar 12 Format File

9. Kemudian, pilihlah [OPERATION] [AUTO], sehingga berikutnya muncul
tampilan seperti Gambar 13. Hapus Lockbit1 sampai Lockbit3. Tekan
[RUN]. Tunggu sebentar! Dan lihatlah program telah berhasil disimpan di IC.


Gambar 13 Menu AUTO
Modul I Praktikum Sistem Mikrokontroler
Pemrograman Assembly
Teknik Elektro UIN SGD Bandung Hal 14 dari 16
10. Lakukan prosedur memasukkan program ke mikrokontroler dengan
menggunakan Programmer ALL-11 dan software WACCESS terhadap file
mod1_02.hex, mod11_03.hex dan mod1_04.hex
11. Selamat Berlatih !!!


Modul I Praktikum Sistem Mikrokontroler
Pemrograman Assembly
Teknik Elektro UIN SGD Bandung Hal 15 dari 16
V. Hasil Praktikum
[TUGAS-01]
Isikan jawaban Anda di sini lalu berikan penjelasan singkat mengenai cara kerja
program yang Anda buat!

















[TUGAS-02]
Isikan jawaban Anda di sini lalu berikan penjelasan singkat mengenai cara kerja
program yang Anda buat!

















Modul I Praktikum Sistem Mikrokontroler
Pemrograman Assembly
Teknik Elektro UIN SGD Bandung Hal 16 dari 16
[TUGAS-03]
Isikan jawaban Anda di sini lalu berikan penjelasan singkat mengenai cara kerja
program yang Anda buat!

You might also like