• Tidak ada hasil yang ditemukan

PERTEMUAN BAHASA PEMOGRAMAN ASSEMBLER

N/A
N/A
Protected

Academic year: 2021

Membagikan "PERTEMUAN BAHASA PEMOGRAMAN ASSEMBLER"

Copied!
24
0
0

Teks penuh

(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

(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 inggris singkatan kata dari kata-kata dalam bahasa inggris, contoh:

Mov dari Move

INC dari Increment

SJMP dari Short Jump, dll

Singkatan-singkatan tersebut di kenal dengan mnemonic Singkatan singkatan tersebut di kenal dengan mnemonic . Agar program yang di buat oleh seorang programer dengan

(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 dan pernyataan 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 Compileruntuk

mentermahkan bahasa yang di mengerti manusia menjadi bahasa mesin

1. Ketika di-compile lebih kecil ukuran Kelebihan Bahasa Assembly

p

2. 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

(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 F4h

MOV A, 40h ; isi reg A dgn isi memori lokasi 40h, kodenya E5h 40h MOV 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 opcode Dari contoh instruksi diatas F4h adalah opcode dari register A .

(5)

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

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

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

Op-Code Mnemonic Keterangan

F4 CPL A F4h merupakan Opcode operasi komplement a F4 CPL A F4h merupakan Opcode operasi komplement a

tanpa operand

E540 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 g

berbeda, karena jenis penggalamatannya berbeda.

Perbedaan ini di kenal sebagai ragam penggalamatan atau mode pengalamatan.

(6)

e

ssing

¾Menggunakan register untuk menyimpan dan memanipulasi data,

Menggunakan register R0 s/d R7 yang diseleksi

R

egister

 Addr

e

¾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: Accumulator

Register dan Port

(7)

Addressing

¾Biasanya digunakan untuk mengakses RAM di lokasi memori mulai 30H sampai 7FH.

¾Dapat mengakses 128 bytes RAM.

¾Lokasi bank register diakses dengan nama registernya.

Direc

t

¾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.

(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

 Addressing

¾Data menjadi bagian program yang direpresentasikan dengan tanda kres, “#”,

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

¾ DPTR dapat diakses dengan 2 register 8 bit yakni DPH

Immediat

e

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

(9)

t

Addressing

CONTOH:

Indirec

t

¾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).

t

Addressing

Solusi:

Indirec

(10)

t

Addressing

¾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 .

Indirec

t

Contoh:

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

Solusi:

t

Addressing

Contoh:

¾Buat program untuk mengcopy 10 bytes data dari 35H ke 60H.

Solusi:

Indirec

(11)

iA

ritmatika

Add Subtract Decimal  adjust

Instruks

Increment Divide  adjust Decrement Multiply Instrusi Aritmatika

Perintah-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

(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 if Notice that there is no subtraction WITHOUT borrow. Therefore, if a subtraction without borrow is desired, it is necessary to clear the C flag.

(13)

Instruksi Increment dan Decriment berfungsi untuk

menaikan dan menurunkan data yang tersimpan di dalam memori internal tanpa melalui accumulator

Increment dan Decriment

memori internal tanpa melalui accumulator.

INC A increment accumulator INC byte increment byte in memory INC DPTR increment data pointer

DEC A decrement accumulator

DEC 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 isi accumulator dengan data di dalam register B dan

(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 29h

ADD A+1 ; isi A = 2Ah (dalam BCD kita mengharapkan hasilnya = 30h) Agar hasilnya = 30h tambahkan perintah DA A

DA A ; isi A= 30h

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

Contoh:

Instrusi Logika

Instruksi logika pada AT8951 merupakan operasi boolean (bit ) yang terdiri dari operasi AND, OR, EXOR dan NOT antar bit dalam sebuah register Tabel dibawah ini berisikan antar 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

(15)

Bitwise Logic

ANL – AND 

Examples: 00001111 10101100 ANL

ORL – OR 

XRL – eXclusive OR

CPL – Complement

00001111 10101100 ORL 00001111 00001100 10101111 00001111 10101100 XRL 10101100 CPL 10100011 01010011 Rotate

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

Mnemonic Keterangan

RL Rotate Left = Putar 1 Bit data kekiri RR 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

(16)

Proses Rotate di dalam Accumulator

Rotate

Rotate instructions operate only on 

a

rl a

mov a, #0xF0

; aÅ 11110000

rl a

; a

Å 11100001

(17)

Rotate through Carry

C

rrc a

mov a, #0A9h ; a Å A9 add 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

(18)

Bit Logic Operations

Some logic operations can be used with single bit 

operands

operands

CLR C

CLR bit

CPL C

CPL bit

CPL bit

SETB C

Tabel pencabangan program

Mnemonic Keterangan

AACALL addr11 Jalankan subrutin di addr11 LCALL add 16 Jalankan subrutin di addr16 RET Kembali dari subrutin RETI Kembali dari service interupsi AJMP addr11 Lompat kealamat addr11 SJMP add 16 Lompat kealamat addr16 JMP @A + DPTR Lompat kealamat A+DPTR JZ rel Lompat ke rel jika A= 0 DJNZ rel Lompat ke rel jika A ≠ 0p j CJNE

<dest-byte>,<scr-byte>,rel

(19)

Subrutin

Sub rutin adalah potongan program yang terdapat pada memori program yang sering digunakan. Pada

mikrokontroler 89C51 subrutin dapat dipanggil dengan instruksi:

ACALL LCALL

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

(20)

Why Subroutines?

Subroutines allow us to have "structured" 

bl l

assembly 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 program

called 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 to address 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

(21)

Infinite Loops

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

Microcontroller application programs are almost always infinite loops!

Re‐locatable Code

cseg at 8000h

Memory specific (NOT Re-locatable)

mov C, p1.6 mov p3.7, C ljmp 8000h end cseg at 8000h Start: mov C, p1.6 Re-locatable Start: mov C, p1.6 mov p3.7, C sjmp Start end

(22)

Conditional jumps

Mnemonic

Description

JZ <rel addr>

Jump if a = 0

JNZ <rel addr>

Jump if a != 0

JC <rel addr>

Jump if C = 1

JNC <rel addr>

Jump if C != 1

JB <bit>, <rel addr>

Jump if bit = 1

JNB <bit> < l dd >

J

if bi ! 1

JNB <bit>,<rel addr>

Jump if bit != 1

JBC <bit>, <rel addr>

Jump if bit =1, clear bit

CJNE A, direct, <rel addr>

Compare A and memory,

jump if not equal

More Conditional Jumps

Mnemonic Description

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

not equal not 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

(23)

Conditional Jumps for Branching

if condition is true goto label condition false else goto next instruction jz led_off setb C mov P1.6, C if a = 0 is true true label sjmp skipover clr C mov P1.6, C mov 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 label1

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

(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 pencacah Instruksi DJNZ di gunakan untuk counter atau pencacah.

Contoh:

Mulai:

MOV Ro, #2h ; isi R0 dengan 2h

MOV R1,# 20H ; isi R1 dengan 20h

Putar:

MOV R1, #BBh ; isi memori R1 dengan BBh

INC R1 R1 R1+1

INC R1 ; R1=R1+1

DJNZ R0,Putar ; R0=R0-1 ≠0, kembali putar

End ;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.

Gambar

Gambar level bahasa pemograman
Tabel pencabangan program

Referensi

Dokumen terkait

Ekonomi Jambi telah mampu tumbuh secara berkualitas, yang ditopang dengan peningkatan investasi dalam dan luar negeri, belanja Pemerintah Pusat dan Pemerintah

Jenis pakan alami yang diberikan dalam pemeliharaan larva ikan kerapu adalah rotifera dan artemia. Untuk menjaga agar rotifera dan artemia tetap hidup maka diberi

kelompok intervensi menunjukkan ensi menunjukkan bahwa ter bahwa terdapat penurunan dapat penurunan kecemasan pa kecemasan paling tinggi ling tinggi sebesar 30 yang

Proyek  adalah serangkaian rencana kegiatan terkait untuk mencapai tertentutujuan bisnis. Proyek sistem informasi termasuk pengembangansistem informasi baru, peningkatan sistem

Hal ini menandakan bahwa sang pesimis berpendapat bahwa sesuatu itu sempurna, tetapi sang optimis, orang yang kreatif berfikir bahwa itu tidak sempurna dan ia bisa melakukan

Hubungan antara NDVI dan data hasil pengukuran lapangan mampu memberikan informasi tentang biomassa vegetasi dan merupakan salah satu metode pendekatan untuk menduga

 Pabrik yang tidak menggunakan SSBC , sampel diambil dari 2 titik; (i) sebelum pengutipan USB dan (ii) setelah pengutipan USB pada inclined empty bunch conveyor....

Kompetensi Dasar Materi Pokok dan Uraian Materi Nilai Budaya Dan Karakter Bangsa Kewirausah- aan/ Ekonomi Kreatif Gagasan Kegiatan Pembelajaran Indikator Pencapaian Kompetensi