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