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:
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:
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.
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
Cth: CR EQU OD, mempunyai makna kode ASCII dari CR (Carriage Return) adalah OD
PEMROGRAMAN
Artinya kumpulan instruksi yg ditulis dengan format tertentu bila dieksekusi oleh microprocessor
maka microprocessor tsb akan melaksanakan fungsi tertentu dengan hasil yg diperkirakan
Contoh :
LD A H
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
1. Source Operand
2. Destination Operand
Object Code
1. Konstanta
àNilai yang diketahui dan di kalkulasikan pd saat penyusunan program kumpulan karakter dalam
assembly
Digit : 0-9
Karakter khusus :
1. Variabel
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.
1. Nama
ARSITEKTUR SISTEM
Perangkatkerassistem
è Video display
Display warna yg digunakan PC adalah CGA(Color graphic Adapter) dan EGA (Enhanced
Graphic Adapter).
è Keyboard
è Drive Disk
è 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
1. CU (Control Unit)
Mengambil data dan instruksi serta menerjemahkan kode (decode) alamat untuk ALU
Bus data
Register
ð Berada dalam CPU, area penyimpanan kecepatan tinggi yg langsung terhubung ke unit kendali
dan ALU
Clock
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 flag : Overflow, direction, interupt, imp, sign, zero, auxiliarycarry, parity, carry
Register data
1. AX(Akumulator)
1. BX(baris)
Register yg digunakan untuk operasi aritmatic dan perpindahan data, memiliki kemampuan
pengalamatan khusus.
1. CX(counter)
1. DX(data)
Register segmen
1. CS(Code segmen)
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)
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.
1. IP(instruction pointer)
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
Pop > Mengeluarkan nilai dari stack dan menempatkannya dalam register atau variabel
Fetch
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
Segment
- Segmen Code
Tempat instruksi mesin program berada register CS mengandung alamat segmen register IP
menunjukan instruksi pertama yang akan di eksekusi
- 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
Nama simbolik untuk lokasi dalam memory tempat data disimpan dalam bahasa assembly
variabel di definisikan oleh label, setiap label menunjukan lokasi awal variabel.
Mengalokasikan memory untuk satu atau lebih nilai 8 bit jika di perlukan lebih dari satu maka di
pisahkan dengan koma
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
count db ?
ages db ?,?,?,?
rowsize db 10*20
Perintah DB > perintah yang digunakan untuk menyimpan satu atau lebih baris text
Membuat tempat menyimpan untuk satu atau lebih double word 16bit
- Operator DUP
Title
dosseg
. model small
. stack 100h
.data …………………9
.code
main proc
mov ds, ax
Penjelasan program
Directiv dosseg = menunjukan segmen standar untuk code. data dan segmen stack
model small = mengindentifikasi bahwa program menggunakan ms assembler memory
DB > directive define byte, meminta assembler untuk mengalokasikan serangkaian byte memory
untuk data yang mengikutinya
baris 17-19 = memanggil fungsi DOS yang menampilkan string beralamat di register DX
3.B.1.a. Perintah Dasar
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.
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.