Pages

Rabu, 12 Februari 2014

Bahasa Assembler (Assembly)

IC 89S51 adalah salah satu ic mikro kontroller yang cocok untuk belajar program bagi pemula. Pemrogramannya cukup simpel dan mudah dimengerti serta banyak referensinya. Bahasa yang sering dipakai untuk pemrograman IC 89S51 adalah bahasa assembler (meskipun kini sudah banyak juga yang memakai bahasa c).
Bahasa assembler adalah instruksi dasar mesin pada mikro kontroller. Bahasa ini berupa kode perintah program dan nilai heksa desimal yang dipisahkan dengan spasi. Bahasa assembler pada pemrograman IC 89S51 mengacu pada instruksi set dari atmel selaku produsen IC tersebut.
Contoh bahasa assembler :
MOV     R1,#F7h
CALL     TUNDA
Instruksi MOV R1,#F7h berarti meemberi nilai heksa desimal sebesar F7 pada R1. Jadi setelah instruksi ini maka R1 bernilai F7h.
Instruksi CALL TUNDA berarti alur program menuju ke label TUNDA dan akan kembali setelah ada perintah RET
Berikut ini beberapa instruksi assembler yang sering dipakai :
InstruksiPenjelasanContoh
MOVMemindahkan/mengisi nilai pada suatu register atau akumulatorMOV R1,#F7h
MOVCMemindahkan/mengisi nilai dari lookup table ke akumulatorMOVC A,@A+DPTR
CALLMemindahkan alur program ke label setelah callCALL TUNDA
ADDMenjumlahkan akumulator dengan nilai byteADD A,#5Bh
ADDCMenjumlahkan akumulator dengan nilai byte disertai carryADDC A,#87h
SUBBMengurangi akumulator dengan nilai byteSUBB A,#45h
INCDitambah satuINC A
DECDikurangi satuDEC A
ANLOperasi logika ANDANL A,#77h
ARLOperasi logika ORORL A,#77h
CPLOperasi logika NOTCPL A
SETBMembuat nilai bit menjadi satuSETB TR1
CLRMembuat nilai bit menjadi nolCLR TR1
RLNilai byte digeser ke kiriRL A
RLCNilai byte digeser ke kiri melibatkan carryRLC A
RRNilai byte digeser ke kananRR A
RRCNilai byte digeser ke kananRRC A
SWAPMenukar 4bit (nible) dalam satu byteSWAP A
JBLompat jika nilai bit=1JB P1.1,TERUS
JNBLompat jika nilai bit=0JNB TF1,LANJUT
JCLompat jika nilai carry=1JC TERUS
JNCLompat jika nilai carry=0JNC LANJUT
JZLompat jika nilai akumulator=1JZ TERUS
JNZLompat jika nilai akumulator=0JNZ LANJUT
DJNZKurangi satu lalu lompat ke label jika nilai belum sama dengan nolDJNZ R1,ULANG
CJNEBandingkan isi akumulator dengan nilai byte lalu lompat ke label jika nilainya tidak samaCJNE A,#77h,BEDA
JMPLompat ke label. selain JMP ada lagi instruksi lompat yaitu AJMP, LJMP dan SJMPJMP START
PUSHMemindahkan nilai ke register penampungPUSH R1
POPMengambil nilai dari register penampungPOP R1
ORGInisialisasi memori awal program, biasanya diisi #00hORG 00h
ENDAkhir programEND

0 komentar:

Posting Komentar