Menulis program 89S51 dengan bahasa assembler


Bahasa assembler untuk pemrograman MCS51

Bahasa assembler untuk pemrograman MCS51

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 :

Instruksi Penjelasan Contoh
MOV Memindahkan/mengisi nilai pada suatu register atau akumulator MOV R1,#F7h
MOVC Memindahkan/mengisi nilai dari lookup table ke akumulator MOVC A,@A+DPTR
CALL Memindahkan alur program ke label setelah call CALL TUNDA
ADD Menjumlahkan akumulator dengan nilai byte ADD A,#5Bh
ADDC Menjumlahkan akumulator dengan nilai byte disertai carry ADDC A,#87h
SUBB Mengurangi akumulator dengan nilai byte SUBB A,#45h
INC Ditambah satu INC A
DEC Dikurangi satu DEC A
ANL Operasi logika AND ANL A,#77h
ARL Operasi logika OR ORL A,#77h
CPL Operasi logika NOT CPL A
SETB Membuat nilai bit menjadi satu SETB TR1
CLR Membuat nilai bit menjadi nol CLR TR1
RL Nilai byte digeser ke kiri RL A
RLC Nilai byte digeser ke kiri melibatkan carry RLC A
RR Nilai byte digeser ke kanan RR A
RRC Nilai byte digeser ke kanan RRC A
SWAP Menukar 4bit (nible) dalam satu byte SWAP A
JB Lompat jika nilai bit=1 JB P1.1,TERUS
JNB Lompat jika nilai bit=0 JNB TF1,LANJUT
JC Lompat jika nilai carry=1 JC TERUS
JNC Lompat jika nilai carry=0 JNC LANJUT
JZ Lompat jika nilai akumulator=1 JZ TERUS
JNZ Lompat jika nilai akumulator=0 JNZ LANJUT
DJNZ Kurangi satu lalu lompat ke label jika nilai belum sama dengan nol DJNZ R1,ULANG
CJNE Bandingkan isi akumulator dengan nilai byte lalu lompat ke label jika nilainya tidak sama CJNE A,#77h,BEDA
JMP Lompat ke label. selain JMP ada lagi instruksi lompat yaitu AJMP, LJMP dan SJMP JMP START
PUSH Memindahkan nilai ke register penampung PUSH R1
POP Mengambil nilai dari register penampung POP R1
ORG Inisialisasi memori awal program, biasanya diisi #00h ORG 00h
END Akhir program END
Advertisements

2 Responses to Menulis program 89S51 dengan bahasa assembler

  1. Pingback: Menulis program 89S51 dengan bahasa C | Abi Sabrina

  2. wedidilacak says:

    hehe..kapan2 ketemu masbro..
    tak jak mikir sg luwih penting karo masbro sijine..
    aq mbiyen wis sering nggawe project mirkokontroller nganggo assembler, malah tau nggawe downloader program hex e (win32 program) model komunikasi isp nganggo port paralel pc make bahasa assembler pc rosasm karo fasm..sayang e g payu..haha..
    mugo2 iseh ono wektu mikir sg luwih penting..
    keep alive bro..

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: