Anda di halaman 1dari 14

Assembler

Assembler

Bahasa Assembler àbahasa computer yang kedududkannya di antara bahasa mesin dan bahasa
level tinggi seperti bahasa pascal, C, C++, Basic, Java dll.

Bahasa C atau pascal dikatakan sebagai bahasa level tinggi karena memakai kata-kata dan
pernyataan yang mudah dimengerti manusia meski pun jauh berbeda dengan bahasa manusia
sesungguhnya.

Assembler à Program yang bekerja membantu penulisan instruksi dalam format bahasa Inggris
sehingga mudah dibaca dan dipahami

Contoh:

 MOV RO, #02h


 MOV A, #03h
 ADD A, RO

Keterangan:

 Perintah baris pertama bekerja menjaklankan proses pengisian register RO dengan data
02h
 Perintah baris kedua bekerja menjalankan proses pengisian register A dengan data 03h
 Kemudian proses penjumlahan data pada register A dengan data pada register RO
dijalankan menggunakan perintah ADD A, RO dan menghasilkan data 05h di register A

Perintah MOV dan ADD adalah mnemonic atau singkatan dari perintah MOVE dan ADD.

Bahasa Mesin adalah kumpulan kode biner yang merupakan instruksi yang bisa dijalankan oleh
computer.

Didalam microcontroller instruksi disimpan dalam kode hexa, sehingga sulit dibaca dan
dipahami maknanya.

Bahasa assembly memakai kode mnemonic untuk menggantikan kode biner agar lebih mudah
diingat sehingga lebih memudahkan dalam penulisan program.

Contoh:

Operation Code          :           Assembly

7802                            :           MOV 20, #02H


7403                            :           MOV A,#03H

20                                :           ADD A, RO

 Kode bahasa mesin sering disebut dengan operation code


 Program yang ditulis dengan bahasa assembly terdiri dari label, kode mnemonic,
operand1, operand2, keterangan lain, dsb. Program ini disebut sebagai program sumber
(source code)
 Source code ditulis dengan program editor biasa. Missal, notepad pd windows atau
sidekick pd DOS, lalu source code diterjemahkan kebahasa mesin dengan menggunakan
program assembler
 Proses menterjemahkan source code menjadi bahasa mesin disebut proses assembler
 Hasil kerja program assembler adalah “program objek” danjuga “assembly listing”
 File program object menggunakan ekstensi .HEX
 Source program dalam bahasa assembly menganut prinsip satu baris untuk satu perintah
tunggal

Ketentuannya :

1. Masing – masing bagian dipisahkan dengan spasi/tab. Untuk operator lebih dari satu
dipisah dengan koma
2. Bagian label ditulis mulai huruf pertama dari baris. Jika baris tidak mengandung label,
maka label itu digantikan dengan spasi/tab yakni pemisah label dengan mnemonic.

 Label mewakili nomor memori program dari instruksi pd baris bersangkutan


 Mnemonic (artinya sesuatu yang memudahkan untuk diingat) merupakan singkatan
perintah. dikenal dua macam mnemonic

1. Mnemonic sebagai instruksi pengendali prosesor. Cth, ADD, MOV. Dll.


2. Mnemonic yang dipakai untuk mengatur kerja dari program assembler. Cth; ORG, EQU
atau DB.

 Mnemonic untuk mengatur kerja


 di program assembler disebut assembler directive.
 Operand artinya bagian yang letaknya dibelakang bagian mnemonic
 Komentaràbagian yang sekedar sebagai catatan. Tidak berpengaruh pada prosesor juga
tidak berpengaruh pd kerja program assembler, tp sehingga bagian penting untuk
dokumentasi.
 Assembler directive yang bersifat umum:

1. ORG(Origin) untuk menyatakan nomor memori yang dipakai setelah perintah itu. : Cth;
ORG 0000h, maka memori berikutnya yang dipakai assembler adalah 0000h.

Cth:           ORG oh

MOV A,#1111110H

Mulai:        MOV P0,A

1. EQU(Equate) untuk menentukan nilai sebuah symbol.

Cth:           CR EQU OD, mempunyai makna kode ASCII dari CR (Carriage Return) adalah OD

1. DB (Define Byte) untuk memberi nilai tertentup di memori program. DB merupakan


Assembler Directive yg dipakai untuk membentuk text maupun label.
2. DW (Define Word) untuk memberi nilai 2 byte ke memori program pd baris
bersangkutan. Sering dipakai untuk membentuk suatu label yg hanya memori memori
program.

PEMROGRAMAN

Artinya kumpulan instruksi yg ditulis dengan format tertentu bila dieksekusi oleh microprocessor
maka microprocessor tsb akan melaksanakan fungsi tertentu dengan hasil yg diperkirakan

Struktur instruksi bahasa Assembly

1. Operation Code (OPCODE)


2. Source Operand (Sumber)
3. Destination Operand (Tujuan)

Contoh :

LD             A                     H

Opcode     Source             Destination

Instruksi, pindahkanisi register 8 bit H ke register 8 bit A. isi H = isi A

OPCODE

Contoh:

1. LD             g. LDI
2. PUSH        h. LDIR
3. POP           i. LPD
4. CPIR         j. INC
5. CPD          k. DAA
6. ADD         l. IM

Mnemonic = OPCODE yg ditulis dalam bentuk khusus

OPCODE biasanya disertai Operand

1. Source Operand
2. Destination Operand

Object Code

Contoh program Assembler

MOV ax,5                   àpindahkan 5 digit binerke ax

ADD ax,10                 àtambahkan 10 digit binerke ax

ADD ax,20                 àtambahkan 20 digit binerke ax

MOV SUM,ax                        àpindahkannilai ax ke operand SUM

INT 20                                    à interrupt pindahke DOS (TLINK DOS)

ELEMEN DASAR BAHASA ASSEMBLY

1. Konstanta

àNilai yang diketahui dan di kalkulasikan pd saat penyusunan program kumpulan karakter dalam
assembly

Letter  : A-Z, a-z

Digit    : 0-9

Karakter khusus :

1. Variabel

è Lokasi memori yang dapat berubah pd saat program dijalankan


1. Integer dibangun oleh digit 1 angka tanpa titik decimal

Cth :

200

4A6BH

20479

1. Bilangan nil mengandung digit, titik decimal tunggal eksponen dan tanda awal.

Cth:

2-3

+200.576E+OS

6.08c3

c.   Karakter atau konstanta string ditulis dengan kutip tunggal atau ganda.

Cth:

“a”

‘b’

Pernyataan / Perintah

Dalam bahasa assembly terdiri dari nama, mnemonic, operand, dan komentar.

Pernyataan Secara umum dibagi dua kelas

1. Instruksi, pernyataan yg dapat dieksekusi


2. Perintah, Pernyataan yang menyediakan informasi untuk membantu assembler dlm
menghasilkan kode yg dpt dieksekusi

1. Nama

è Nama mengidentifikasikan label, variable, symbol atau kata kunci.

Nama mempunyai batasan:

1. Hanya 31 karakter pertama yg dikenali


2. Tidak ada beda huruf capital dan huruf kecil
3. Karakter pertama tidak boleh angka
4. Jika digunakan, tanda(,) hanya bisa digunakan sbg karakter pertama.
5. Tidak boleh memilih nama yg sama dgn kata kunci

ARSITEKTUR SISTEM

Perangkatkerassistem

è Video display

Kebanyakan PC yg dibuat sejak1990 mempunyai display warna VGA(video graphic array)


resolusi 640 x 480 pixel. Display VGA minimal memiliki 16 warna berbeda secara bersamaan
ada juga sampai 256 warna. Terdapat juga display super VGA (800×600) dan Extended VGA
(1024×800).

Display warna yg digunakan PC adalah CGA(Color graphic Adapter) dan EGA (Enhanced
Graphic Adapter).

è Keyboard

è Drive Disk

è Unit Sistem, “jantung” komputer yg sesungguhnya

è ROM Bios ( Firmware/Perangkat keras dengan program tambahan)

è RAM (Random Access Memory) Tempat menyimpan program dan data pd saat program
dijalankan.

è CMOS RAM

è Slot Tambahan

è Power Supply

è Parallel port

è Serial Port

4/16/2012

ARSITEKTUR SISTEM

 CPU (Central Processing Unit)


Micro komputer menggunakan CPU tunggal.

Tugas CPU yaitu:

1. Menemukan dan load instruksi berikutnya


2. Mengeksekusi instruksi berikut fetch data dari memori /regular
3. Menyimpan data dalam memori/register
4. Melaksanakan penghitungan dan pembanding
5. Memperbarui petunjuk instruksi atau percabangan

CPU terdiri atas:

1. ALU (Arithmatic Logic Unit)

Melaksanakan operasi aritmatik, logis dan penggeseran

1. CU (Control Unit)

Mengambil data dan instruksi serta menerjemahkan kode (decode) alamat untuk ALU

Bus data

ð  Kabel paralel yg mengirimkan data antara berbagai bagian CPU

Register

ð  Berada dalam CPU, area penyimpanan kecepatan tinggi yg langsung terhubung ke unit kendali
dan ALU

Clock

ð  Sinkronisasi setiap operasi CPU

Unit waktu paling dasar untuk instruksi mesin disebut siklus mesin(machine cycle)

Register àlingkungan kerja khusus dalam CPU, memiliki 16 bit pengaksesan 4 register data. (atas
dan bawah)

-          Register data : Ax, Bx, Cx, Dx (16 bit)

AH, AL, BH, BL, CH, CL, DH, DL (8bit)

-          Register segmen : CS, DS, SS, ES


-          Register Indeks : SI, D1, BP

-          Register khusus : IP, SP

-          Register flag : Overflow, direction, interupt, imp, sign, zero, auxiliarycarry, parity, carry

 Register data

1. AX(Akumulator)

Register yg digunakan untuk operasi aritmatik

1. BX(baris)

Register yg digunakan untuk operasi aritmatic dan perpindahan data, memiliki kemampuan
pengalamatan khusus.

1. CX(counter)

Bekerja sbg counter untuk instruksi pengulangan/looping

1. DX(data)

Mempunyai peranan khusus dlm operasi perkalian dan pembagian

 Register segmen

1. CS(Code segmen)

Menyimpan lokasi basis semua instruksi yg dapat dieksekusi dlm program

1. DS(data segmen)

Lokasi basis default untuk variabel – variabel (PV menghitung lokasi variabel menggunakan
nilai segmen dlm DS)

1. SS(Stash segmen)
2. ES(Extra segmen)

 Register index (register index menggandung offset variabel)

1. SI(source index)

Register ini mengambil nama dari instruksi pemindahan string yang mana string sumber ditunjuk
oleh register SI. SI biasanya mengandung nilai offset dari register DS
1. DI(Destination index)

Register DI bekerja sebagai tujuan instruksi pemindahan string. Biasanya mengandung offset
dari register ES, BP(Base Poin). Register BP mengandung offset dari register SS. Register BP
sering digunakan oleh sub rutin untuk melokasikan variabel – variabel yg dilewatkan pada stack
oleh program pemanggil.

 Register Khusus(Register IP dan SP merupakan register khusus)

1. IP(instruction pointer)

Register IP selalu mengandung offset instruksi berikutnya yg akan dieksekusi CP dan IP


digabung untuk melaksanakan alamat lengkap instruksi berikutnya yga kan dieksekusi

1. SP(Stack Pointer)

Register SP mengandung offset atau jarak dari awal stack kepuncak stack register SS dan SP
bersama melakukan alamat lengkap puncak stack

 Flag

Flag kendali sebuah bit mungkin di set dalam flag oleh pemrograman untuk mengendalikan
CPU, terdapat flag direction, interrupt dan trap.

 Flag direction mengendalikan petunjuk asumsi yang di gunakan oleh intruksi pemroses
string nilai flag 1 = up dan 0 = down. pemrograman pengendalikan flag ini menggunakan
intruksi SID dan CLD.
 Flag Interrupt memungkinkan terjadinya interrupt dari  eksternal. Interrupt ini disebabkan
oleh perangkat keras seperti keyboard , disk driver, dan timer clock sistem
 Flag Trap menentukan apakah CPU berhenti atau  tidak setelah intruksi. Debbuger telah
menset flag ini sehingga pemrograman dapat menelusuri  setiap intruksi
pemrogramannya satu persatu
 Flag status Bit bit flag status menggambarkan keluaran operasi aritmatik dan logik yang
di laksanakan oleh CPU.
 Flag overflow diset pada saat hasil operasi aritmatik bertanda terlalu besar dimuat ke
dalam operasi tujuan.
 Flag Sign diset ketika hasl operasi aritmatik dah logik menghasilkan nilai negatif
 Flag Zero diset ketika hasil operasi aritmatik dan logik menghasilkan nilai 0
 Flag Auxilari carry diset ketika operasi menyebabkan carry dari bitn 3 ke bit 4 (atau
meminjam dari bit 4 ke bit 3) operand
 Flag Parity menggambarkan jumlah bit dalam hasil operasi yang di set jika terdapat
bilangan genap maka terdapat parity nya genap

STACK

Stack adalah memory buffer khusus yang digunakan sebagai temporary yang menyimpan alamat
dan data

Push > Menyalin nilai ke dlaam stack

Pop > Mengeluarkan nilai dari stack dan menempatkannya dalam register atau variabel

Siklus eksekusi instruksi

 Fetch

unit kendali mengambil instruksi, menyalin dari memory ke dalam cpu

 Decode

Unit kendali menambahkan nilai (increment) program counter dan menerjemahkan instruksi

 Execute

Alu mengeksekusi operasi dan mengirim operand hasil ke unit kendali. intinya di kembalikan ke
register dan memory

Dasar – dasar bahasa Assembly

 Segment

- Segmen Code

Tempat instruksi mesin program berada register CS mengandung alamat segmen register IP
menunjukan instruksi pertama yang akan di eksekusi

Register data mengandung variable program

- Segmen stack

Biasanya mengandung 256 byte ruang stack register SS mengandung alamat segmen, SP
mengacu pada alamat berikutnya setelah akhir stack, jika SP mencapai 0000 maka stack berarti
penuh

Intruksi Definisi Data


Variable

Nama simbolik untuk lokasi dalam memory tempat data disimpan dalam bahasa assembly
variabel di definisikan oleh label, setiap label menunjukan lokasi awal variabel.

 offset label adalah jarak dari awal segmen ke awal variabel

Define byte (DB)

Mengalokasikan memory untuk satu atau lebih nilai 8 bit jika di perlukan lebih dari satu maka di
pisahkan dengan koma

[name] DB initial value [, initial value]

initial value dapat merupakan satu atau lebih nilai angka 8bit

contoh

char db ‘A’

signed1 db -128

signed2 db +128

list db 10,20,30,40

hex db 41h

list2 db 0AH, 20H, ‘A’, 22H

count db ?

ages db ?,?,?,?

rowsize db 10*20

c,string db “good aftermoon”,0

Perintah DB > perintah yang digunakan untuk menyimpan satu atau lebih baris text

- Define word (DW)

Membuat tempat menyimpan untuk satu atau lebih double word 16bit

- Double word (DD)


Membuat tempat penyimpan untuk satu atau lebih double 32bit

- Operator DUP

Hanya tampil sesudah perintah pengalokasian memory

Title

;program ini menampilkan pesan “hello world”

dosseg

. model small

. stack 100h

.data …………………9

.hellow_message db ‘hello, world!’ 0dh, 0ah, ‘$” ………………10

.code

main proc

mov ax, @data ………………..13

mov ds, ax

mov ah,9 ………………17

mov dx,offset hello_message ……………..18

int 2ih ……………………19

mov ax, 4000h …………….21

int 2ih ……………………22

main endp ………………………23

endp main …………………..24

Penjelasan program

Directiv dosseg = menunjukan segmen standar untuk code. data dan segmen stack
model small = mengindentifikasi bahwa program menggunakan ms assembler memory

stack mengset 100h(256) byte ruang stack untuk program

directif .code = awal segmen code

.data = awal segmen data

baris 9 – 10 = mengandung segmen data yang variabel di deklarasikan dengan nama


hello_message

DB > directive define byte, meminta assembler untuk mengalokasikan serangkaian byte memory
untuk data yang mengikutinya

baris 13 = menggunakan printah proc untuk deklarasi procedure main

baris 17-19 = memanggil fungsi DOS yang menampilkan string beralamat di register DX

baris 21-22 = stack untuk kembali ke DOS

baris 23 = akhir procedure main

baris 24 = akhir program assembler

3.B.1.a. Perintah Dasar

Diposkan oleh totok1972.

Perintah dasar ini adalah perintah yang paling utama dan sering digunakan dalam penulisan kode
mneumonik serta selalu pasti ada di setiap pemprograman system control menggunakan PLC.

ADAPUN MACAM – MACAM PERINTAH DASAR adalah :

1.  LOAD

Perintah LOAD yang sering disingkat dengan LD adalah awalan dari garis logika atau block.
Jika dalam rangkaian manual fungsinya sama dengan suatu bentuk input kontak NO (  Normally
Open ) / saklar / sensor.

2.  NOT

Perintah NOT adalah perintah kebalikan ( inverts ) input atau yang berarti tidak atau yang
bersifat tertutup. Jika dalam rangkaian manual fungsinya sama dengan suatu bentuk input kontak
NC ( Normally Close ).

3.  AND
Perintah AND adalah perintah yang digunakan untuk menghubungkan secara segaris yang
berarti dan. Jika dalam rangkaian manual fungsinya merupakan hubungan kontak – kontak bantu
secara seri dua atau lebih dari suatu input, baik yang berupa NO ataupun NC.

4.  OR

Perintah OR adalah perintah yang digunakan untuk menghubungkan secara sejajar yang berarti
atau. Jika dalam rangkaian manual fungsinya merupakan hubungan kontak – kontak bantu secara
paralel dua atau lebih dari suatu input, baik yang berupa NO ataupun NC.

5.  OUT

Perintah OUT adalah perintah yang digunakan untuk batas dari suatu akhir perintah diagram
satu garis atau yang merupakan bagian akhir dari satu perintah. Jika dalam rangkaian manual
fungsinya merupakan hubungan akhir yang menuju ke koil kontaktor.

6.  END ( 01 )

Perintah END ( 01 ) adalah perintah yang digunakan untuk menandai pemprograman telah
selesai atau pengisian program sudah akhir. Jika akhir pengisian program tidak diberi perintah
END ( 01 ), maka pemprograman dianggap belum selesai ( no end inst ) dan PLC tidak dapat
dioperasikan.

Anda mungkin juga menyukai