Jumat, 04 Oktober 2013

belajar memahami bahasa ASSEMBLER

Bahasa Assembly (Assembler) adalah merupakan salah satu dari sekian banyak bahasa pemrograman yang tergolong dalam Bahasa Pemrogaman Tingkat Rendah (Low Level Language) dan setingkat diatas bahasa mesin (Machine Language). Bahasa assembly mempunyai keunggulan yang tidak mungkin diikuti oleh bahasa tingkat apapun dalam hal kecepatan, ukuran file yang kecil serta kemudahan dalam manipulasi sistem computer. Bahasa assembly tidak seperti bahasa tingkat tinggi (High Level Language) yang biasanya memiliki IDE - Integrated Development Environment, bahasa assembly dapat diketikkan dalam berbagai macam editor teks, misalnya Notepad, WordPad, dan editor teks lainnya. Perlu diingat bahwa ekstensi dari program assembly haruslah .ASM. Setelah program assembly diketikkan dan disimpan dengan ekstensi .ASM, maka program tersebut harus dikompilasi menjadi Object File berekstensi .OBJ, dan kemudian harus dilink menjadi executable file (.EXE/.COM), executable file inilah yang baru dapat dijalankan. Untuk mengcompile source file, misalnya file programku.ASM menjadi file object dengan extensi .OBJ bisa anda gunakan file TASM.exe atau dapat juga menggunakan NASM.exe
Bahasa Assembler

            Bahasa Pemrograman yang mempunyai kedudukan diantara tingkat tinggi dan bahsa tingkat rendah yang mengunakan kode Mnemonic untuk mengganti kode biner, sehingga memudahkan penulisan program.Kode Mnemonic ini harus diterjemahkan terlebih dahulu menjadi bahasa mesin baru bisa dijalankan dengan bantuan Compiler seperti compiler TASM (Turbo Assmbler) kemudian Tlink (Turbo Linker). Bahasa Assembler dapat dibuat dengan editor biasa pada komputer seperti NodePad pada Windows atau Edit pada DOS.
Setiap prosesor mempunyai konstruksi yang berlainan, sehingga bahasa assembler untuk setiap prosessor berlainan pula, yang sama hanya pola dasar dan cara penulisan programnya.
Dari Wikipedia bahasa Indonesia, ensiklopedia bebas
Assembler adalah sebuah program komputer untuk menterjemahkan Bahasa Assembly -- intinya, sebuah representasi menmonic dari bahasa mesin — menjadi kode objek. Sebuah assembler silang (lihat kompilator silang) memproduksi kode untuk satu jenis prosesor, tetapi dapat dijalankan di prosesor lain.
Selain menterjemahkan instruksi assembly mnemonic menjadi opcode, assembler juga menyediakan kemampuan untuk menggunakan nama simbolik untuk lokasi memori (menghindari penghitungan rumit dan pembaruan alamat secara manual ketika sebuah program diubah sedikit), dan fasilitas makro untuk melakukan penggantian textual — biasanya digunakan untuk menggantikan suatu urutan instruksi yang pendek untuk dijalankan perbaris dan bukan dalam sebuah subrutin.
Assembler jauh lebih mudah ditulis daripada kompilator untuk bahasa tingkat-tinggi, dan telah tersedia sejak 1950-an. Assembler modern, terutama untuk arsitektur berdasarkan RISC, seperti arsitektur MIPS, Sun SPARC, dan HP PA-RISC, mengoptimalkan penjadwalan instruksi untuk menggunakan pipeline CPU secara efisien.
Daftar Instruksi Bahasa Assembly MCS-51
Dalam program bahasa assembly terdapat 2 jenis yang kita tulis dalam program:
1. Assembly Directive (yaitu merupakan kode yang menjadi arahan bagi assembler/compiler untuk menata program)
2. Instruksi (yaitu kode yang harus dieksekusi oleh CPU mikrokontroler dengan melakukan operasi tertentu sesuai dengan daftar yang sudah tertanam dalam CPU)

Pemrograman AT89S51 bahasa Assembly


Bahasa pemrograman tingkat tinggi lebih berorientasi kepada manusia yaitu bagaimana agar pernyataan-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.

Kelebihan Bahasa Assembly:
1. Ketika di-compile lebih kecil ukuran
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
3. Lebih sulit dalam melakukan pekerjaan rumit, misalnya operasi matematis
BAHASA ASSEMBLY MCS-51 Dalam program bahasa assembly terdapat 2 jenis yang kita tulis dalam program yaitu:
1. Assembly Directive (yaitu merupakan kode yang menjadi arahan bagi assembler/compiler untuk menata program)
2. Instruksi (yaitu kode yang harus dieksekusi oleh CPU mikrokontroler)
Klik disini untuk melihat daftar Assembly Directiv
Untuk mempelajari bahasa assembler, harus memahami konsep bilangan,
karena berhubungan dalam pengaksesan ke port atau mengetahui pengkodean
ASCII.
Sistem Bilangan adalah kumpulan angka yang membentuk suatu sistem
peredaran tertentu.
Jenis bilangan :
1. Sistem Bilangan Biner
2. Sistem Bilangan Oktaf
3. Sistem Bilangan Desimal
4. Sistem Bilangan Hexadesimal
PENGGUNAAN SOFTWARE
Software untuk membantu memprogram mikrokontroler MCS-51 sudah banyak tersedia. Untuk mempermudah maka dapat dipilih software yang merupakan Integrated Development Environment (IDE) yaitu software yang merupakan editor sekaligus compiler. Bahkan juga ada yang sekaligus debugger dan simulator. Salah satunya yang digunakan pada training di PRASIMAX adalah Read51.
Berikut beberapa cara penggunaan software.
1. User dapat membuat program sistem single file maupun proyek (beberapa file). Klik menu File lalu pilih New File.
2. Ketik program di window editing. Software menyediakan syntax highlighting otomatis, sehingga tiap assembly directive akan diberi warna ungu dan tiap instuksi akan diberi warna biru.
3. User dapat langsung mengcompile program dengan sekali klik icon Build (F9). Ketika ada kesalahan maka user dapat langsung ditunjukkan letak dan jenis kesalahan.
4. User dapat melakukan simulasi software untuk melihat hasil kerja program. Klik IDE mode (F2).

5. User dapat melakukan debugging, bahkan melihat hasil eksekusi per step (per baris) terhadap kondisi-kondisi register dan memori di mikrokontroler. Klik Step Into (F8). 
 
Daftar Assembly Directive
Assembly Directive Keterangan
EQU Pendefinisian konstanta
DB Pendefinisian data dengan ukuran satuan 1 byte
DW Pendefinisian data dengan ukuran satuan 1 word
DBIT Pendefinisian data dengan ukuran satuan 1 bit
DS Pemesanan tempat penyimpanan data di RAM
ORG Inisialisasi alamat mulai program
END Penanda akhir program
CSEG Penanda penempatan di code segment
XSEG Penanda penempatan di external data segment
DSEG Penanda penempatan di internal direct data segment
ISEG Penanda penempatan di internal indirect data segment
BSEG Penanda penempatan di bit data segment
CODE Penanda mulai pendefinisian program
XDATA Pendefinisian external data
DATA Pendefinisian internal direct data
IDATA Pendefinisian internal indirect data
BIT Pendefinisian data bit
#INCLUDE Mengikutsertakan file program lain

Daftar Instruksi
Instruksi Keterangan Singkatan
ACALL Absolute Call
ADD Add
ADDC Add with Carry
AJMP Absolute Jump
ANL AND Logic
CJNE Compare and Jump if Not Equal
CLR Clear
CPL Complement
DA Decimal Adjust
DEC Decrement
DIV Divide
DJNZ Decrement and Jump if Not Zero
INC Increment
JB Jump if Bit Set
JBC Jump if Bit Set and Clear Bit
JC Jump if Carry Set
JMP Jump to Address
JNB Jump if Not Bit Set
JNC Jump if Carry Not Set
JNZ Jump if Accumulator Not Zero
JZ Jump if Accumulator Zero
LCALL Long Call
LJMP Long Jump
MOV Move from Memory
MOVC Move from Code Memory
MOVX Move from Extended Memory
MUL Multiply
NOP No Operation
ORL OR Logic
POP Pop Value From Stack
PUSH Push Value Onto Stack
RET Return From Subroutine
RETI Return From Interrupt
RL Rotate Left
RLC Rotate Left through Carry
RR Rotate Right
RRC Rotate Right through Carry
SETB Set Bit
SJMP Short Jump
SUBB Subtract With Borrow
SWAP Swap Nibbles
XCH Exchange Bytes
XCHD Exchange Digits
XRL Exclusive OR Logic
 

Tidak ada komentar:

Posting Komentar