pertemuan · 2010. 12. 9. · pertemuan bahasa ... dalam melakukan suatu pekerjaan, baris program...

24
11/18/2010 1 PERTEMUAN BAHASA PEMOGRAMAN ASSEMBLER Bahasa merupakan media komunikasi. Manusia dapat berintegrasi dengan baik jika jika memahami apa yang diinginkan oleh orang lain. Pada dasarnya bahasa yang di gunakan dapat di kelompokan berdasarkan tahapan atau tingkat 1. Tingkat rendah yang digukan anak-anak 2. Tingkat menengah berupa bahasa kebanyakan atau pergaulan atau pergaulan 3. Bahasa tingkat tinggi seperti pada buku-buku ilmiah

Upload: others

Post on 19-Jan-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PERTEMUAN · 2010. 12. 9. · PERTEMUAN BAHASA ... Dalam melakukan suatu pekerjaan, baris program relatif lebih panjang dibanding bahasa tingkat tinggi 2. Relatif lebih sulit untuk

11/18/2010

1

PERTEMUAN  

BAHASA PEMOGRAMAN ASSEMBLER

Bahasa merupakan media komunikasi.Manusia dapat berintegrasi dengan baik jika jika memahami apa yang diinginkan oleh orang lain.

Pada dasarnya bahasa yang di gunakan dapat di kelompokan berdasarkan tahapan atau tingkat

1. Tingkat rendah yang digukan anak-anak2. Tingkat menengah berupa bahasa kebanyakan

atau pergaulanatau pergaulan3. Bahasa tingkat tinggi seperti pada buku-buku

ilmiah

Page 2: PERTEMUAN · 2010. 12. 9. · PERTEMUAN BAHASA ... Dalam melakukan suatu pekerjaan, baris program relatif lebih panjang dibanding bahasa tingkat tinggi 2. Relatif lebih sulit untuk

11/18/2010

2

Demikian juga pada peralatan yang berbasiskan mikroprosesor atau mikrokontroler akan dapat menjalankan suatu pekerjaan jika ada perintah (instruksi) yang sesuai.

Format bahasa pemograman:Sama seperti mikroprosesor agar CPU didalam mikrokontroler dapat mengerjakan suatu pekerjaan maka diperlukan program dalam bentuk perintah-perintah (instruksi)

Perintah-perintah tersebut di tulis dalam bentuk:1. Bahasa mesin (bahasa tingkat rendah)2. Bahasa Asembler/Asembly (bahasa tingkat menengah)3. Basic, pascal dsb (bahasa tingkat tinggi)

Bahasa Assembly (Assembler)Bahasa yang di gunakan oleh programer untuk membuat program sehingga dapat diproses oleh mikrokontroler.Bahasa asembler merupakan sandi yang merupakan singkatan kata dari kata kata dalam bahasa inggrissingkatan kata dari kata-kata dalam bahasa inggris, contoh:

Mov dari MoveINC dari Increment

SJMP dari Short Jump, dll

Singkatan-singkatan tersebut di kenal dengan mnemonicSingkatan singkatan tersebut di kenal dengan mnemonic . Agar program yang di buat oleh seorang programer dengan bahasa assembler dapat dijalankan oleh mikrokontroler.Maka didalam mikrokontroler sandi tersebut ditermahakan menjadi kode mesin kemudian baru dapat diproses.

Page 3: PERTEMUAN · 2010. 12. 9. · PERTEMUAN BAHASA ... Dalam melakukan suatu pekerjaan, baris program relatif lebih panjang dibanding bahasa tingkat tinggi 2. Relatif lebih sulit untuk

11/18/2010

3

Bahasa Assembly adalah bahasa pemrograman tingkat Menengah. Bahasa pemrograman tingkat tinggi lebih berorientasi kepada manusia yaitu bagaimana agar pernyataan-pernyataan yang ada dalam program mudah ditulis danpernyataan yang ada dalam program mudah ditulis dan dimengerti oleh manusia. Sedangkan bahasa tingkat rendah lebih berorientasi ke mesin, yaitu bagaimana agar komputer dapat langsung mengintepretasikan pernyataan-pernyataan program.Jika dalam penulisan program menggunkan bahasa assemler atau bahasa tingkat tinggi maka di butuhkan software yang dikenal dengan Compiler untuk mentermahkan bahasa yang di mengerti manusia menjadi bahasa mesin

1. Ketika di-compile lebih kecil ukuran

Kelebihan Bahasa Assembly

p2. Lebih efisien/hemat memori 3. Lebih cepat dieksekusi

Kesulitan Bahasa Assembly:1. Dalam melakukan suatu pekerjaan, baris

program relatif lebih panjang dibanding bahasa tingkat tinggi

2. Relatif lebih sulit untuk dipahami terutama jika jumlah baris sudah terlalu banyak

3. Lebih sulit dalam melakukan pekerjaan rumit, misalnya operasi matematis

Page 4: PERTEMUAN · 2010. 12. 9. · PERTEMUAN BAHASA ... Dalam melakukan suatu pekerjaan, baris program relatif lebih panjang dibanding bahasa tingkat tinggi 2. Relatif lebih sulit untuk

11/18/2010

4

Gambar level bahasa pemograman

Mnemonic & Opcode

Mnemonic adalah simbol-simbol instruksi/perintah seperti:Mov, CPL, RR, SJMP dan lain-lain.

CPL A ; komplementkan isi reg A, kodenya F4hMOV A, 40h ; isi reg A dgn isi memori lokasi 40h, kodenya E5h 40hMOV 41, #30h ; isi memori lokasi 41h dgn konstanta 30h kodenya 75h

41h 30h

Opcode (operation code) merupakan kode dari simbol instruksi, contoh:

Dari contoh instruksi diatas F4h adalah opcodeDari contoh instruksi diatas F4h adalah opcode dari register A .

Opcode bisa diikuti atau tidak oleh satu atau dua operand.Opcode menentukan operasi yang akan dilakukan sedangkan operand menentukan jenis data ,variable atau instruksi berikutnya dalam sebuah program.

Page 5: PERTEMUAN · 2010. 12. 9. · PERTEMUAN BAHASA ... Dalam melakukan suatu pekerjaan, baris program relatif lebih panjang dibanding bahasa tingkat tinggi 2. Relatif lebih sulit untuk

11/18/2010

5

Bahasa assembly atau assembler pada dasarnya adalah susunan mnemonic yang dapat menjalankan suatu fungsi.

Seperti sudah di bahas dalam pertemuan sebelumnya bahasa assembler memudahkansebelumnya bahasa assembler memudahkan penulisan program .

Didalam Mikrokontroler setiap mnemonic diterjemahkan dulu kedalam bahasa mesin sebelum di eksekusi.

Op-Code Mnemonic KeteranganF4 CPL A F4h merupakan Opcode operasi komplement aF4 CPL A F4h merupakan Opcode operasi komplement a

tanpa operandE540 MOV A, 40h E5h operasi untuk register A dengan memory

internal dengan alamat tertera dalam operand (40h)753130 MOV 41, #30h 75h merupakan opcode dengan operand 41h dan

30h.

Mode Penggalamatan

Dari tabel diatas perintah MOV di ikuti oleh opcode yang

Mode penggalamatan berdasarkan orientasi alokasi memory

p p y gberbeda, karena jenis penggalamatannya berbeda. Perbedaan ini di kenal sebagai ragam penggalamatan atau mode pengalamatan.

Page 6: PERTEMUAN · 2010. 12. 9. · PERTEMUAN BAHASA ... Dalam melakukan suatu pekerjaan, baris program relatif lebih panjang dibanding bahasa tingkat tinggi 2. Relatif lebih sulit untuk

11/18/2010

6

essing

Menggunakan register untuk menyimpan dan memanipulasi data,

Menggunakan register R0 s/d R7 yang diseleksiRe

gister Add

re

Ukuran sumber dan tujuan register yang digunakan harus sama,

R

Tidak diijinkan perpindahan data antar register.

Direct Addressing atau penggalamatan langsung hanya dapat dilakukan di internal memory mikrokontroler (tidak

Direct Addressing

p y (dapat mengakses memory luar).Penggalamatan langsung menggunakan:

AccumulatorRegisterdan Port

Contoh Penggalamatan langsung:

Page 7: PERTEMUAN · 2010. 12. 9. · PERTEMUAN BAHASA ... Dalam melakukan suatu pekerjaan, baris program relatif lebih panjang dibanding bahasa tingkat tinggi 2. Relatif lebih sulit untuk

11/18/2010

7

t Add

ressing

Biasanya digunakan untuk mengakses RAM di lokasimemori mulai 30H sampai 7FH.

Dapat mengakses 128 bytes RAM.

Lokasi bank register diakses dengan nama registernya.

Direct

Bertolak belakang dengan mode pengalamatan segera(immediate)(immediate)

Tidak menggunakan “#” dalam operasi data.

Indirect Addressing atau penggalamatan tidak langsung diberi simbol @ (at).

Indirect Addressing

Pengertiannya disana tempat data yang harus di baca terlebih dahulu.

Contoh Penggalamatan tidak langsung:

Mov A, @R7 Baca dulu isi register R7, misalnya isinya 30h. Selanjutnya isi register A dengan data yang ada di alamat 30h.

Page 8: PERTEMUAN · 2010. 12. 9. · PERTEMUAN BAHASA ... Dalam melakukan suatu pekerjaan, baris program relatif lebih panjang dibanding bahasa tingkat tinggi 2. Relatif lebih sulit untuk

11/18/2010

8

Immediate Addressing atau penggalamatan segera Penggalamatan pada operasi-operasi dengan konstanta

Immediate Addressing

yang sudah menyatu dengan op-code program. penggalamatan segera ditandai dengan simbol #

Contoh Penggalamatan segera:

Mov A, # 200 Isi A dengan 200d.

e Add

ressing

Data menjadi bagian program yang direpresentasikandengan tanda kres, “#”,

Mengandung informasi ke semua alamat, termasuk register DPTR 16-bit.

DPTR dapat diakses dengan 2 register 8 bit yakni DPH

Immed

iate

DPTR dapat diakses dengan 2 register 8 bit, yakni DPH untuk HIGH byte dan DPL untuk LOW

Page 9: PERTEMUAN · 2010. 12. 9. · PERTEMUAN BAHASA ... Dalam melakukan suatu pekerjaan, baris program relatif lebih panjang dibanding bahasa tingkat tinggi 2. Relatif lebih sulit untuk

11/18/2010

9

tAdd

ressing

CONTOH:

Indirect Buat program untuk menyalin nilai 55H ke dalam lokasi

memori 40H dan 41H RAM, dengan menggunakan:

a) Direct addressing

b) Indirect addressing tanpa pengulangan (loop),

c) Indirect addressing Dengan pengulangan (loop).

tAdd

ressing Solusi:

Indirect

Page 10: PERTEMUAN · 2010. 12. 9. · PERTEMUAN BAHASA ... Dalam melakukan suatu pekerjaan, baris program relatif lebih panjang dibanding bahasa tingkat tinggi 2. Relatif lebih sulit untuk

11/18/2010

10

tAdd

ressing Keuntungannya: mode ini mengakses secara mudah data

dinamis seperti halnya data statis pada mode pengalamatan langsung (direct addressing).

Pengulangan (looping) tidak diperkenankan pada direct addressing mode .

Indirect

Contoh:

Buat program untuk menghapus data di 16 lokasi RAM, dimulai dari alamat 60H.

Solusi:

tAdd

ressing Contoh:

Buat program untuk mengcopy 10 bytes data dari 35H ke60H.

Solusi:

Indirect

Page 11: PERTEMUAN · 2010. 12. 9. · PERTEMUAN BAHASA ... Dalam melakukan suatu pekerjaan, baris program relatif lebih panjang dibanding bahasa tingkat tinggi 2. Relatif lebih sulit untuk

11/18/2010

11

iAritm

atika

Add

SubtractDecimal adjust

Instruks

IncrementDivide 

adjust

DecrementMultiply

Instrusi AritmatikaPerintah-perintah perhitungan yang digunakan dalam bahasa Assemler dapat di lihat pada tabel di bawah

No Mnemonic Keterangan

1 ADD A, (Source) Isi A= A + (Source)

2 ADDC A, (Source) Isi A= A + (Source) + Carry

3 SUBB A, (Source) Isi A= A - (Source) - Carry

4 INC A Isi A= A + 1

5 INC (Source) Isi (Source) = (Source) -1

6 DEC A Isi A= A - 1

7 DEC (Source) Isi (Source) = (Source) -1

8 INC DPTR Isi DPTR = DPTR + 1

9 MUL AB Isi AB= A x B

10 DIV AB A = A :B ; B = sisa A :B

11 DA A Decimal Adjust

Page 12: PERTEMUAN · 2010. 12. 9. · PERTEMUAN BAHASA ... Dalam melakukan suatu pekerjaan, baris program relatif lebih panjang dibanding bahasa tingkat tinggi 2. Relatif lebih sulit untuk

11/18/2010

12

Sumber ( source ) adalah operand dengan beragam penggalamatan; register, direct, indirect dan immediate.

Penjumlahan

Dibawah ini beberapa contoh intruksi Aritmatika:

ADD A, 0CH ; a diisi dengan a+ isi memori lokasi 0CH; ( pengalamatan langsung )

ADD A,@R1 ; a diisi dengan a+isi dari memori yang alamatnya ; disimpan di R1 ( penggalamatan taklangsung )

ADD A,R4 ; a diisi dengan a+isi dari R4 (pengalamatan register)ADD A,# 145 ; a diisi dengan a+145 ( penggalamatan segera )

Umumnya instruksi-instruksi aritmatika dieksekusi dalam 1µs kecuali instruksi INC DPTR yang memerlukan waktu 2µs dan intruksi DIV membutuhkan waktu 4µs.

Subtract 

SUBB A, byte subtract with borrow

Contoh:

SUBB A, #04Fh ; A A – 4F – C

Notice that there is no subtraction WITHOUT borrow Therefore ifNotice that there is no subtraction WITHOUT borrow. Therefore, ifa subtraction without borrow is desired, it is necessary to clear the Cflag.

Page 13: PERTEMUAN · 2010. 12. 9. · PERTEMUAN BAHASA ... Dalam melakukan suatu pekerjaan, baris program relatif lebih panjang dibanding bahasa tingkat tinggi 2. Relatif lebih sulit untuk

11/18/2010

13

Instruksi Increment dan Decriment berfungsi untukmenaikan dan menurunkan data yang tersimpan di dalam memori internal tanpa melalui accumulator

Increment dan Decriment

memori internal tanpa melalui accumulator.

INC A increment accumulatorINC byte increment byte in memoryINC DPTR increment data pointerDEC A decrement accumulatorDEC byte decrement byte

Untuk perkalian memakai instruksi MUL AB mengalikan accumulator dengan data yang ada pada register B dan

Perkalian

Pembagian

menempatkan hasil perkalian sebanyak 16 bit pada register A dan register B . Register A berisikan lo-byte dan Register B berisikan hi-byte, tetapi jika hasil perkalian lebih besar dari 256 (00FFH) maka bit 0V set, sedangkan bit CY selalu akan diclearkan ( ‘0’ ).

Mempergunakan instruksi DIV AB membagi isiaccumulator dengan data di dalam register B dan

meletakan hasil sebanyak 8bit pada accumulator dan sisa pembagian sebanyak 8 bit pada register B.

Page 14: PERTEMUAN · 2010. 12. 9. · PERTEMUAN BAHASA ... Dalam melakukan suatu pekerjaan, baris program relatif lebih panjang dibanding bahasa tingkat tinggi 2. Relatif lebih sulit untuk

11/18/2010

14

Pemakaian instruksi DA A digunakan untuk operasi aritmatika BCD. Perintah-perintah ADD dan ADDC diikuti dengan sebuah perintah DA A agar didapatkan hasil

MOV A, 29h ; Isi A dengan data 29hADD A+1 ; isi A = 2Ah (dalam BCD kita mengharapkan hasilnya = 30h)

Agar hasilnya = 30h tambahkan perintah DA ADA A ; isi A= 30h

dengan sebuah perintah DA A agar didapatkan hasil dalam format BCD.

Contoh:

Instrusi LogikaInstruksi logika pada AT8951 merupakan operasi boolean (bit ) yang terdiri dari operasi AND, OR, EXOR dan NOT antar bit dalam sebuah register Tabel dibawah ini berisikanantar bit dalam sebuah register. Tabel dibawah ini berisikan bentuk-bentuk instruksi mikrokontroler 89C51.

Mnemonic Diskripsi

ANL <dest>,<source> <dest>=<dest> AND <source>

ORL <dest>,<source> <dest>=<dest> OR <source>

XRL <dest>,<source> <dest>=<dest> XOR <source>

CLR A Kosongkan A

CPL A Komplemenkan A

RL A Geser byte A kekanan

RLC A Geser byte A kekanan via C

RR A Geser byte A kekiri

RRC A Geser byte A kekkiri via c

SWAP A Tukar nibble dari a

Page 15: PERTEMUAN · 2010. 12. 9. · PERTEMUAN BAHASA ... Dalam melakukan suatu pekerjaan, baris program relatif lebih panjang dibanding bahasa tingkat tinggi 2. Relatif lebih sulit untuk

11/18/2010

15

Bitwise Logic

ANL – AND Examples:

0000111110101100ANL

ORL – OR 

XRL – eXclusive OR

CPL – Complement0000111110101100ORL

00001111

00001100

10101111

0000111110101100XRL

10101100CPL

10100011

01010011

RotatePerintah Rotate identik dengan Shift register dimana bit-bit dalam byte di geser ke kiri atau kekanan dengan ata tanpa carr

Mnemonic KeteranganRL Rotate Left = Putar 1 Bit data kekiriRR R Ri h P 1 Bi d k k

dengan atau tanpa carry.

Perintah-perintah Rotate dalam bahasa assembler adalah:

RR Rotate Right = Putar 1 Bit data kekanan

RLC Rotate Left Carry = Putar 1 Bit data kekiri melalui Carry

RRC Rotate Right Carry = Putar 1 Bit data kekanan melalui Carry

Page 16: PERTEMUAN · 2010. 12. 9. · PERTEMUAN BAHASA ... Dalam melakukan suatu pekerjaan, baris program relatif lebih panjang dibanding bahasa tingkat tinggi 2. Relatif lebih sulit untuk

11/18/2010

16

Proses Rotate di dalam Accumulator

Rotate

• Rotate instructions operate only on a

rl a

mov a, #0xF0 ; a 11110000rl a ; a 11100001

Page 17: PERTEMUAN · 2010. 12. 9. · PERTEMUAN BAHASA ... Dalam melakukan suatu pekerjaan, baris program relatif lebih panjang dibanding bahasa tingkat tinggi 2. Relatif lebih sulit untuk

11/18/2010

17

Rotate through Carry

Crrc a

mov a, #0A9h ; a A9add a #14h ; a BD (10111101) C 0

C

add a, #14h ; a BD (10111101), C 0

rrc a ; a 01011110, C 1

Swap

swap a

mov a, #72h

swap a ; a 27h

Page 18: PERTEMUAN · 2010. 12. 9. · PERTEMUAN BAHASA ... Dalam melakukan suatu pekerjaan, baris program relatif lebih panjang dibanding bahasa tingkat tinggi 2. Relatif lebih sulit untuk

11/18/2010

18

Bit Logic Operations

Some logic operations can be used with single bit operandsoperands

CLR CCLR bitCPL CCPL bitCPL bitSETB C

Tabel pencabangan programMnemonic Keterangan

AACALL addr11 Jalankan subrutin di addr11LCALL add 16 Jalankan subrutin di addr16RET Kembali dari subrutinRETI Kembali dari service interupsiAJMP addr11 Lompat kealamat addr11SJMP add 16 Lompat kealamat addr16JMP @A + DPTR Lompat kealamat A+DPTRJZ rel Lompat ke rel jika A= 0DJNZ rel Lompat ke rel jika A ≠ 0p jCJNE <dest-byte>,<scr-byte>,rel

Bila ,dest> ≠ <source> lompat sejauh rel

CJNE A,#data,rel Bila A ≠ data lompat sejauh relDJNZ direct,rel Direct = Direct-1, bila ≠ 0 lompat sejauh relNOP No operation atau tidak ada operasi

Page 19: PERTEMUAN · 2010. 12. 9. · PERTEMUAN BAHASA ... Dalam melakukan suatu pekerjaan, baris program relatif lebih panjang dibanding bahasa tingkat tinggi 2. Relatif lebih sulit untuk

11/18/2010

19

SubrutinSub rutin adalah potongan program yang terdapat pada memori program yang sering digunakan. Pada mikrokontroler 89C51 subrutin dapat dipanggil dengan instruksi:

ACALLLCALL

ACALL dapat memanggil 2K (11 line), sedangkan LCALL d t il i 64 K

Jika program menjalankan intruksi ACALL dan LCALL maka memori stack di gunakan untuk menyimpan data-data alamat yang ditinggalkan. Untuk kembali ke program utama setelah menjalankan subrutin maka digunakan intruksi RET.

LCALL dapat memanggil sampai 64 K

Subroutines

Main:

call to the subroutine

Main: ...acall sublabel......

sublabel:...... the subroutine

ret

Page 20: PERTEMUAN · 2010. 12. 9. · PERTEMUAN BAHASA ... Dalam melakukan suatu pekerjaan, baris program relatif lebih panjang dibanding bahasa tingkat tinggi 2. Relatif lebih sulit untuk

11/18/2010

20

Why Subroutines?

• Subroutines allow us to have "structured" bl lassembly language programs. 

• This is useful for breaking a large design into manageable parts. 

• It saves code space when subroutines can be called many times in the same programcalled many times in the same program.

Unconditional Jumps

• SJMP <rel addr> ; Short jump, relative address is 8 bit 2’s complement number so jump can be up toaddress is 8‐bit 2’s complement number, so jump can be up to 127 locations forward, or 128 locations back.

• LJMP <address 16> ; Long jump

• AJMP <address 11> ; Absolute jump to anywhere within 2K block of program memory

• JMP @A + DPTR ; Long indexed jump

Page 21: PERTEMUAN · 2010. 12. 9. · PERTEMUAN BAHASA ... Dalam melakukan suatu pekerjaan, baris program relatif lebih panjang dibanding bahasa tingkat tinggi 2. Relatif lebih sulit untuk

11/18/2010

21

Infinite Loops

Start: mov C, p3.7mov p1.6, Csjmp Start

Microcontroller application programs are almost always infinite loops!

Re‐locatable Code

cseg at 8000h

Memory specific (NOT Re-locatable)

mov C, p1.6mov p3.7, Cljmp 8000h

end

cseg at 8000hStart: mov C, p1.6

Re-locatable

Start: mov C, p1.6mov p3.7, Csjmp Start

end

Page 22: PERTEMUAN · 2010. 12. 9. · PERTEMUAN BAHASA ... Dalam melakukan suatu pekerjaan, baris program relatif lebih panjang dibanding bahasa tingkat tinggi 2. Relatif lebih sulit untuk

11/18/2010

22

Conditional jumpsMnemonic Description

JZ <rel addr> Jump if a = 0JNZ <rel addr> Jump if a != 0JC <rel addr> Jump if C = 1JNC <rel addr> Jump if C != 1JB <bit>, <rel addr> Jump if bit = 1JNB <bit> < l dd > J if bi ! 1JNB <bit>,<rel addr> Jump if bit != 1JBC <bit>, <rel addr> Jump if bit =1, clear bitCJNE A, direct, <rel addr>

Compare A and memory, jump if not equal

More Conditional JumpsMnemonic Description

CJNE A, #data <rel addr> Compare A and data, jump if not equalnot equal

CJNE Rn, #data <rel addr> Compare Rn and data, jump if not equal

CJNE @Rn, #data <rel addr> Compare Rn and memory, jump if not equal

DJNZ Rn, <rel addr> Decrement Rn and then jump if not zero

DJNZ direct, <rel addr> Decrement memory and then jump if not zero

Page 23: PERTEMUAN · 2010. 12. 9. · PERTEMUAN BAHASA ... Dalam melakukan suatu pekerjaan, baris program relatif lebih panjang dibanding bahasa tingkat tinggi 2. Relatif lebih sulit untuk

11/18/2010

23

Conditional Jumps for Branchingif condition is true

goto labelcondition

false

else

goto next instruction

jz led_offsetb Cmov P1.6, Cif a = 0 is true

true

label

sjmp skipoverclr Cmov P1.6, Cmov A, P0

led_off:

skipover:

send a 0 to LED

else

send a 1 to LED

Pencabangan bersyarat

Pencabangan bersyarat artinya lompat kealamat tertentu jika persyaratannya dipenuhi.jika persyaratannya dipenuhi.

Instruksi yang di gunakan adalah CJNE<dest-byte>, <src-byte>,rel. pengertiannya compare destination byte and source byte, jump if not equal along rel (aktif)

Contoh:

Mulai:Mulai:CJNE A,#040h, Label1 ; Bandingkan A dengan 40h, jika tidak sama lompat

ke label1CJNE A,P2, Label1 ; Bandikan A dengan P2, jika tidak sama lompat

ke label1Label1

_____________

Page 24: PERTEMUAN · 2010. 12. 9. · PERTEMUAN BAHASA ... Dalam melakukan suatu pekerjaan, baris program relatif lebih panjang dibanding bahasa tingkat tinggi 2. Relatif lebih sulit untuk

11/18/2010

24

Perintah DJNZ (Decriment Jump if not Zero) pengertiannya adalah data di register di kurang satu jika hasilnya nol kembali ke ke program utama.Instruksi DJNZ di gunakan untuk counter atau pencacahInstruksi DJNZ di gunakan untuk counter atau pencacah.

Contoh:

Mulai:MOV Ro, #2h ; isi R0 dengan 2hMOV R1,# 20H ; isi R1 dengan 20h

Putar:MOV R1, #BBh ; isi memori R1 dengan BBhINC R1 R1 R1+1INC R1 ; R1=R1+1DJNZ R0,Putar ; R0=R0-1 ≠0, kembali putarEnd ;selesai

No Operation

Perintah NOP memerintahkan mikrokontroler 89C51 untuk menunda menjalankan program.menunda menjalankan program.Perintah NOP membutuhkan waktu 1 μs, sehingga perintah ini dapat di gunakan untuk delay.