|
Microcontroller Kits
Programmer and
Target 89s51
Simple
Mikrokontroller 89s51 Trainer
Standart
Mikrokontroller 89s51 Trainer
Super
Mikrokontroller Trainer 89s51
Dot matrix Trainer
ATMEGA8
All Kits
+
Programmer
via USB Port
|
|
1.7. Bahasa Asembly
Secara fisik, kerja dari sebuah mikrokontroler dapat
dijelaskan sebagai siklus pembacaan instruksi yang tersimpan di dalam
memori. Mikrokontroler menentukan alamat dari memori program yang akan
dibaca, dan melakukan proses baca data di memori. Data yang dibaca diinterprestasikan
sebagai instruksi. Alamat instruksi disimpan oleh mikrokontroler di
register, yang dikenal sebagai program counter. Instruksi ini misalnya
program aritmatika yang melibatkan 2 register. Sarana yang ada dalam
program assembly sangat minim, tidak seperti dalam bahasa pemrograman
tingkat atas (high level language programming) semuanya sudah siap pakai.
Penulis program assembly harus menentukan segalanya, menentukan letak
program yang ditulisnya dalam memori-program, membuat data konstan dan
tablel konstan dalam memori-program, membuat variabel yang dipakai kerja
dalam memori-data dan lain sebagainya.
1.7.1 Program sumber assembly
Program-sumber assembly (assembly source program) merupakan kumpulan
dari baris-baris perintah yang ditulis dengan program penyunting-teks
(text editor) sederhana, misalnya program EDIT.COM dalam DOS, atau program
NOTEPAD dalam Windows atau MIDE-51. Kumpulan baris-printah tersebut
biasanya disimpan ke dalam file dengan nama ekstensi *.ASM dan lain
sebagainya, tergantung pada program Assembler yang akan dipakai untuk
mengolah program-sumber assembly tersebut.
Setiap baris-perintah merupakan sebuah perintah yang utuh, artinya sebuah
perintah tidak mungkin dipecah menjadi lebih dari satu baris. Satu baris
perintah bisa terdiri atas 4 bagian, bagian pertama dikenali sebagai
label atau sering juga disebut sebagai symbol, bagian kedua dikenali
sebagai kode operasi, bagian ketiga adalah operand dan bagian terakhir
adalah komentar.
Antara bagian-bagian tersebut dipisahkan dengan sebuah spasi atau tabulator.
Bagian label
Label dipakai untuk memberi nama pada sebuah baris-perintah, agar bisa
mudah menyebitnya dalam penulisan program. Label bisa ditulis apa saja
asalkan diawali dengan huruf, biasa panjangnya tidak lebih dari 16 huruf.
Huruf-huruf berikutnya boleh merupakan angka atau tanda titik dan tanda
garis bawah. Kalau sebuah baris-perintah tidak memiliki bagian label,
maka bagian ini boleh tidak ditulis namun spasi atau tabulator sebagai
pemisah antara label dan bagian berikutnya mutlak tetap harus ditulis.
Dalam sebuah program sumber bisa terdapat banyak sekali label, tapi
tidak boleh ada label yang kembar.
Sering sebuah baris-perintah hanya terdiri dari bagian label saja, baris
demikian itu memang tidak bisa dikatakan sebagai baris-perintah yang
sesungguhnya, tapi hanya sekedar memberi nama pada baris bersangkutan.
Bagian label sering disebut juga sebagai bagian symbol, hal ini terjadi
kalau label tersebut tidak dipakai untuk menandai bagian program, melainkan
dipakai untuk menandai bagian data.
Bagian kode operasi
Kode operasi (operation code atau sering disingkat sebagai OpCode) merupakan
bagian perintah yang harus dikerjakan. Dalam hal ini dikenal dua macam
kode operasi, yang pertama adalah kode-operasi untuk mengatur kerja
mikroprosesor / mikrokontroler. Jenis kedua dipakai untuk mengatur kerja
program assembler, sering dinamakan sebagai assembler directive.
Kode-operasi ditulis dalam bentuk mnemonic, yakni bentuk singkatan-singkatan
yang relatip mudah diingat, misalnya adalah MOV, ACALL, RET dan lain
sebagainya. Kode-operasi ini ditentukan oleh pabrik pembuat mikroprosesor/mikrokontroler,
dengan demikian setiap prosesor mempunyai kode-operasi yang berlainan.
Kode-operasi berbentuk mnemonic tidak dikenal mikroprosesor/mikrokontroler,
agar program yang ditulis dengan kode mnemonic bisa dipakai untuk mengendalikan
prosesor, program semacam itu diterjemahkan menjadi program yang dibentuk
dari kode-operasi kode-biner, yang dikenali oleh mikroprosesor/mikrokontroler.
Tugas penerjemahan tersebut dilakukan oleh program yang dinamakan sebagai
Program Assembler.
Di luar kode-operasi yang ditentukan pabrik pembuat mikroprosesor/mikrokontroler,
ada pula kode-operasi untuk mengatur kerja dari program assembler, misalnya
dipakai untuk menentukan letak program dalam memori (ORG), dipakai untuk
membentuk variabel (DS), membentuk tabel dan data konstan (DB, DW) dan
lain sebagainya.
Bagian operand
Operand merupakan pelengkap bagian kode operasi, namun tidak semua kode
operasi memerlukan operand, dengan demikian bisa terjadi sebuah baris
perintah hanya terdiri dari kode operasi tanpa operand. Sebaliknya ada
pula kode operasi yang perlu lebih dari satu operand, dalam hal ini
antara operand satu dengan yang lain dipisahkan dengan tanda koma.
Bentuk operand sangat bervariasi, bisa berupa kode-kode yang dipakai
untuk menyatakan Register dalam prosesor, bisa berupa nomor-memori (alamat
memori) yang dinyatakan dengan bilangan atau pun nama label, bisa berupa
data yang siap di-operasi-kan. Semuanya disesuaikan dengan keperluan
dari kode-operasi.
Untuk membedakan operand yang berupa nomor-memori atau operand yang
berupa data yang siap di-operasi-kan, dipakai tanda-tanda khusus atau
cara penulisan yang berlainan.
Di samping itu operand bisa berupa persamaan matematis sederhana atau
persamaan Boolean, dalam hal semacam ini program Assembler akan menghitung
nilai dari persamaan-persamaan dalam operand, selanjutnya merubah hasil
perhitungan tersebut ke kode biner yang dimengerti oleh prosesor. Jadi
perhitungan di dalam operand dilakukan oleh program assembler bukan
oleh prosesor!
Bagian komentar
Bagian komentar merupakan catatan-catatan penulis program, bagian ini
meskipun tidak mutlak diperlukan tapi sangat membantu masalah dokumentasi.
Membaca komentar-komentar pada setiap baris-perintah, dengan mudah bisa
dimengerti maksud tujuan baris bersangkutan, hal ini sangat membantu
orang lain yang membaca program.
Pemisah bagian komentar dengan bagian sebelumnya adalah tanda spasi
atau tabulator, meskipun demikian huruf pertama dari komentar sering-sering
berupa tanda titik-koma, merupakan tanda pemisah khusus untuk komentar.
Untuk keperluan dokumentasi yang intensip, sering-sering sebuah baris
yang merupakan komentar saja, dalam hal ini huruf pertama dari baris
bersangkutan adalah tanda titik-koma.
AT89S51 memiliki sekumpulan instruksi yang sangat lengkap. Instruksi
MOV untuk byte dikelompokkan sesuai dengan mode pengalamatan (addressing
modes). Mode pengalamatan menjelaskan bagaimana operand dioperasikan.
Berikut penjelasan dari berbagai mode pengalamatan. Bentuk program assembly
yang umum ialah sebagai berikut :
Label/Simbol |
Opcode |
Operand |
Komentar |
| |
Org |
0H |
|
Start:
Kiri:
Delay:
Del1:
Del2:
|
Mov
Mov
Mov
Call
RL
DEC
CJNE
Sjmp
mov
mov
djnz
djnz
ret
end |
A, #11111110b
R0, #7
P0, A
Delay
A
R0
R0, #0, Kiri
Start
R1, #255
R2, #255
R2, del2
R1, del1 |
; Isi Akumulator
; Isi R0 dengan 7
; Copy A ke P0 ; Panggil Delay
|
Isi memori ialah bilangan heksadesimal yang dikenal
oleh mikrokontroler kita, yang merupakan representasi dari bahasa assembly
yang telah kita buat. Mnemonic atau opcode ialah kode yang akan melakukan
aksi terhadap operand . Operand ialah data yang diproses oleh opcode.
Sebuah opcode bisa membutuhkan 1 ,2 atau lebih operand, kadang juga
tidak perlu operand. Sedangkan komentar dapat kita berikan dengan menggunakan
tanda titik koma (;). Berikut contoh jumlah operand yang berbeda beda
dalam suatu assembly.
CJNE R5,#22H, aksi ;dibutuhkan 3 buah operand
MOVX @DPTR, A ;dibutuhkan 2 buah operand
RL A ;1 buah operand
NOP ; tidak memerlukan operand
Program yang telah selesai kita buat dapat disimpan
dengan ekstension .asm. Lalu kita dapat membuat program objek dengan
ekstension HEX dengan menggunakan compiler MIDE-51, yang dijelaskan
sebagai berikut:
NEXT
|
|
PERCOBAAN 1
LED
PERCOBAAN 2
SAKLAR
PERCOBAAN 3
7 Segmen
PERCOBAAN 4
LCD Character
PERCOBAAN 5
ADC
PERCOBAAN 6
DAC
PERCOBAAN 7
Keypad
PERCOBAAN 8
Motor Stepper
PERCOBAAN 9
Timer Counter
PERCOBAAN 10
Komunikasi Serial
PERCOBAAN 11
Interupsi
PERCOBAAN 12
Keyboard PC
PERCOBAAN 13
Printer
Dot Matr.
PERCOBAAN 14
RTC12C887
PERCOBAAN 15
P W M
APLIKASI
|