Apa itu Bahasa Assembly

Pada pembahasn kali ini kita akan sedikit membahas tentang bahsa assembly, apa itu bahasa assembly?? bahasa assembly adalah bahasa pemrogmranan tingkat rendah yang digunakan dalam pemrograman komputer, mikroprosesor, pendendali mikro dan perangkat lainya yang dapat diprogram, bahasa assembly mengimplementasikan representasi atas kode mesin dalam bentuk simbol-simbol secara relatf lebih dapat dipahami oleh manusia tidak seperti bahasa-bahasa tingkat tinggi yang berlaku umum, bahasa assmbly biasanya mendukung secara spesifik untuk suatu ataupun beberapa jenis arsitektur komputer tertentu sehingga protabilias bahasa rakitan tidak dapat menandingi bahasa-bahasa pemrogmran tingkat tinggi. Namun, bahasa assembly memungkinkan programemer memanfaatkan seceara penuh kemampuan suatu perangkat keras tertentu yang biasanya tidak dapat ataupun terbatas bila dibuat dengan menggunakan bahasa pemrograman tingkat tinggi.
Assembler adalah program yang bekerja membantu penulisan instruksi dalam format bahasa inggris sehingga mudah dibaca dan dipahami.
MOV R0, #02h
MOV A, #03h
ADD A, R0

Perintah baris pertama bekerja menjalankan proses pengisian register R0 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 R0 dijalankan menggunakan perintah ADD A,R0 dan menghasilkan data 05h tersimpan di register A. Perintah MOV dan ADD adalah mnemonik atau singkatan dari perintah MOVE dan ADD. Mnemonik dari perintah lainnya dapat dirangkum dalam tabel 8 berikut.
No PERINTAH MNEMONIK
1 ADD ADD
2 ADD WITH CARRY ADC
3 SUB WITH BORROW SBB
4 INCREMENT INC
5 DECREMENT DEC
6 MULTIPLY MUL
7 DEVIDE DIV
8 AND LOGIC ANL
9 OR LOGIC ORL
10 EXLUSIVE OR LOGIK XRL
11 DECIMAL ADJUST ACCUMULATOR DAA
12 CLEAR ACCUMULATOR CLR A
13 COMPLEMENT ACCUMULATOR CPL A
14 ROTATE ACCUMULATOR LEFT RLA
15 ROTATE ACCUMULATOR LEFT THROUGH CARRY RLCA
16 ROTATE ACCUMULATOR RIGHT RRA
17 ROTATE ACCUMULATOR RIGHT THROUGH CARRY RRCA
18 SWAPP NIBBLE WITHIN ACCUMULATOR SWAP
19 PUSH DIRECT BYTE KE STACK PUSH
20 POP DIRECT BYTE DARI STACK POP
21 JUMP IF CARRY SET C=1 JC
22 JUMP IF CARRY NOT SET C = 0 JNC
23 JUMP IF DIRECT BIT SET JB
24 JUMP IF DIRECT BIT NOT SET JNB
25 JUMP IF DIRECT BIT SET & CLEAR BIT JBC
26 ABSOLUTE CALL ACALL
27 LONG CALL LCALL
28 RETURN RET
29 RETURN FROM INTERRUPT RETI
30 ABSOLUTE JUMP AJMP
31 LONG JUMP LJMP
32 SHORT JUMP SJMP
33 JUMP INDIRECT JMP
34 JUMP IF ACCUMULATOR ZERRO JZ
35 JUMP IF ACCUMULATOT NOT ZERRO JNZ
36 COMPARE AND JUMP IF NOT EQUAL CJNE
37 DECREAMENT AND JUMP IF NOT ZERO DJNZ
38 NO OPERATION NOP

Konstruksi Program Assembly
Source program dalam bahasa Assembly menganut prinsip 1 baris untuk satu perintah tunggal. Setiap baris perintah tersebut bisa terdiri atas beberapa bagian (field), yakni bagian Label, bagian mnemonik, bagian operand yang bisa lebih dari satu dan terakhir bagian komentar. Untuk membedakan masing-masing bagian tersebut dibuat ketentuan sebagian berikut:
1. Masing-masing bagian dipisahkan dengan spasi atau TAB, khusus untuk operand yang lebih dari satu masing-masing operand dipisahkan dengan koma.
2. Bagian-bagian tersebut tidak harus semuanya ada dalam sebuah baris, jika ada satu bagian yang tidak ada maka spasi atau TAB sebagai pemisah bagian tetap harus ditulis.
3. Bagian Label ditulis mulai huruf pertama dari baris, jika baris bersangkutan tidak mengandung Label maka label tersebut digantikan dengan spasi atau TAB, yakni sebagai tanda pemisah antara bagian Label dan bagian mnemonik.

Label mewakili nomor memori-program dari instruksi pada baris bersangkutan, pada saat menulis instruksi JUMP, Label ini ditulis dalam bagian operand untuk menyatakan nomor memori-program yang dituju. Dengan demikian Label selalu mewakili nomor memoriprogram dan harus ditulis dibagian awal baris instruksi. Disamping Label dikenal pula Symbol, yakni satu nama untuk mewakili satu nilai tertentu dan nilai yang diwakili bisa apa saja tidak harus nomor memori-program. Cara penulisan Symbol sama dengan cara penulisan Label, harus dimulai di huruf pertama dari baris instruksi.
Mnemonik (artinya sesuatu yang memudahkan diingat) merupakan singkatan perintah, dikenal dua macam mnemonik, yakni manemonic yang dipakai sebagai instruksi mengendalikan prosesor, misalnya ADD, MOV, DJNZ dan lain sebagainya. Ada pula mnemonik yang dipakai untuk mengatur kerja dari program Assembler misalnya ORG, EQU atau DB, mnemonik untuk mengatur kerja dari program Assembler ini dinamakan sebagai ‘Assembler Directive’.
Operand adalah bagian yang letaknya di belakang bagian mnemonik, merupakan pelangkap bagi mnemonik. Kalau sebuah instruksi di-ibaratkan sebagai kalimat perintah, maka mnemonik merupakan subjek (kata kerja) dan operand merupakan objek (kata benda) dari kalimat perintah tersebut. Tergantung pada jenis instruksinya, operand bisa berupa berbagai macam hal. Pada instruksi JUMP operand berupa Label yang mewakili nomor memori-program yang dituju misalnya LJMP Start, pada instruksi untuk pemindahan/pengolahan data, operand bisa berupa Symbol yang mewakili data tersebut, misalnya ADD A,#Offset. Banyak instruksi yang operandnya adalah register dari prosesor, misalnya MOV A,R1. Bahkan ada pula instruksi yang tidak mempunyai operand, misalnya RET.
Komentar merupakan bagian yang sekedar sebagai catatan, tidak berpengaruh pada prosesor juga tidak berpengaruh pada kerja program Assembler, tapi bagian ini sangat penting untuk keperluan dokumentasi.
Assembler Directive
Seperti sudah dibahas di atas, bagian Mnemonik dari sebuah baris perintah bisa merupakan instruksi untuk prosesor, maupun berupa Assembler Directive untuk mengatur kerja dari program Assembler. Mnemonik untuk instruksi prosesor, sangat tergantung pada prosesor yang dipakai, sedangkan mnemonik untuk Assembler Directive tergantung pada program Assembler yang dipakai. Meskipun demikian, terdapat beberapa Assembler Directive yang umum, yang sama untuk banyak macam program Assembler.
Assembler Directive yang bersifat umum tersebut, antara lain adalah
ORG – singkatan dari ORIGIN, untuk menyatakan nomor memori yang dipakai setelah perintah itu, misalnya ORG 0000h maka memori berikutnya yang dipakai Assembler adalah 0000h. ORG berlaku untuk memori program maupun memori-data. Dalam hal penomoran memori, dikenal tanda sebagai awalan untuk menyatakan nomor memori dari baris bersangkutan. Misalnya :
ORG 0H
MOV A,#11111110B
Mulai:
MOV P0,A

EQU – singkatan dari EQUATE, dipakai untuk menentukan nilai sebuah Symbol. Misalnya Angka88 EQU 88 memberi nilai 88 pada Symbol Angka88, atau CR EQU 0D mempunyai makna kode ASCII dari CR (Caarriage Return) adalah 08. DB – singkatan dari DEFINE BYTE, dipakai untuk memberi nilai tertentu pada memoriprogram. Nilai tersebut merupakan nilai 1 byte, bisa berupa angka ataupun kode ASCII. DB merupakan Assembler Directive yang dipakai untuk membentuk teks maupun tabel.
DW – singkatan dari DEFINE WORD, dipakai untuk memberi nilai 2 byte ke memoriprogram pada baris bersangkutan. Assembler Directive ini biasa dipakai untuk membentuk suatu tabel yang isinya adalah nomor-nomor memori-program.
DS – singkatan dari Define Storage, Assembler Directive ini dipakai untuk membentuk variable. Sebagai variabel tentu saja memori yang dipakai adalah memori-data (RAM) bukan memori-program (ROM). Hal ini harus benar-benar dibedakan dengan Assembler Directive DB dan DW yang membentuk kode di memori-program. Dan karena DS bekerja di RAM, maka DS hanya sekedar menyediakan tempat di memori, tapi tidak mengisi nilai pada memori bersangkutan
Sekian dulu untuk pembahasan kali ini, jika ada kesalahan atau kurang jelas bisa tinggalkan di komentar

0 komentar