Daisypath Friendship tickers
Tampilkan postingan dengan label bahasa rakitan. Tampilkan semua postingan
Tampilkan postingan dengan label bahasa rakitan. Tampilkan semua postingan

Senin, 27 Februari 2012

Pengenalan Bahasa Rakitan/Assembler

Bahasa Rakitan/Assembler
  • Komputer “bicara/berkomunikasi” dgn menggunakan suatu bahasa
  • Bahasa-bahasa pemrograman menyediakan tools u/ mengekspresikan pemrosesan data secara simbolik
  • Setiap bahasa memiliki sintaks dan grammar yang dirumuskan dgn baik
  • Bahasa Assembler/Rakitan adalah bahasa komputer yang mempunyai kedudukan diantara bahasa tingkat tinggi dan bahasa tingkat rendah dan bertugas mengkonversi program source kode ke bahasa mesin.
o Bahasa rakitan merupakan representasi teks dari bahasa mesin
o Satu statement bahasa rakitan merepresentasikan satu instruksi mesin
o Bahasa rakitan merupakan abstarksi antara program tingkat tinggi dan kode mesin
  • Bahasa Tingkat Tinggi/High Level Language adalah bahasa komputer yang menggunakan kata-kata dan pernyataan yang mudah dimengerti oleh manusia, walaupun jauh berbeda dengan bahasa yang digunakan untuk komunikasi sehari-hari. Contoh Java, C++, Pascal, Basic dll
  • Bahasa Tingkat Rendah/Low Level Language/Bahasa Mesin adalah kumpulan kode biner yang hanya bisa di mengerti oleh komputer, kode-kode ini kemudian diterjemahkan sebagai instruksi-instruksi yang harus dijalankan oleh komputer.
  • Bahasa mesin merupakan bahasa ibu/alamiah dari komputer
  • Bahasa mesin merupakan representasi bit dari operasi mesin dieksekusi oleh hardware
  • Hirarki bahasa pemrograman:


Mengapa belajar Bahasa Rakitan?
  • Mengetahui lebih dalam tentang arsitektur komputer dan sistem operasi
  • Mengetahui lebih lanjut tentang komputer dan bagaimana bahasa komputer membangkitkan kode mesin, karena bhs rakitan mempunyai hubungan yang dekat dgn bhs mesin
  • Mempelajari utilitasnya.
Tipe pemrogramman tertentu sulit atau tidak mungkin dilakukan dgn bhs tingkat tinggi. Contoh:
  1. Komunikasi langsung dgn SO komputer
  2. Program color high-speed graphics dgn memori rendah
  3. Program interfacing
  4. Program telekomunikasi
  • Sebagai Solusi akibat batasan-batasan pada bhs tingkat tinggi.
  • Sebagai alat belajar (learning tool) .. terutama menyakut kerja OS

Aplikasi Bahasa Rakitan
  • Digunakan sebagai program subroutine khususnya untuk aplikasi spesifik
  • Program subroutine ini dapat di panggil oleh bahasa tingkat tinggi. Kombinasi ini akan menambah kekuatan bahasa tingkat tinggi
  • Misalnya bahasa pemrograman Borland Delphi ditambah subroutine bahasa assembler yang digunakan untuk mengoperasikan perangkat keras dengan interface program delphi.

Struktur Bahasa Rakitan
  • Struktur dasar bahasa rakitan memiliki 3 komponen dalam mesin Intel dan 4 komponen dalam mesin MIPS:
1. Label/ Nama proses atau operasi
  • Bagian label berfungsi mewakili nomor memori program
  • Apabila ada perintah JUMP(lompat)ke suatu label maka Assembler akan mengingat nomor memori program yang dimaksud dan menjalankan instruksi-instruksi yang terdapat didalam label tersebut
  • Cara penulisan Label, bebas tetapi tidak boleh ada spasi, tidak boleh ada nama label yang sama dan diakhiri tanda titik dua( : )
2. Mnemonic
  • Mnemonik merupakan kode alphabet pendek atau singkatan perintah yang mudah diingat
  • Bagian ini bertugas menginstruksikan suatu program untuk bekerja sesuai perintah
  • Mnemonik terdiri dari dua macam yaitu
  1. Instruksi => instruksi pengendali prosessor misalnya MOV, ADD, JMP
  2. Directive => Pengatur kerja program Assembler misal DB, DW,DD
# Penulisan harus huruf kapital semua atau huruf kecil semua
3. Operand 1
  • Operand merupakan objek dari sebuah instruksi yang harus dieksekusi oleh program assembler sesuai perintah pada bagian Mnemonic
  • Bagian ini bisa berupa register, variabel memory, label atau Immediate value
• Contoh
o AX (register)
o count (variabel memory)
o JMP Mulai (label:lompat ke label Mulai)
o 10 (immediete value)
# Penulisan harus huruf kapital semua atau huruf kecil semua
4. Operand 2 (mesin MIPS)
  • Komentar
  1. Bagian Komentar tidak berpengaruh dengan jalannya program, tetapi sangat pentung untuk mempermudah seseorang mengerti maksud dari program yang di buat
  2. Cara penulisan bebas dan harus didahului tanda titk koma (;) pada mesin intel dan # pada mesin MIPS
  • Hal-Hal yang perlu di perhatikan dalam menulis instruksi bahsa Assembeler:
    • Setiap Bagian-bagian dalam struktur seperti label, komentar tidak harus selalu ada minimal ada bagian mnemonic contohnya instruksi RET
    • Setiap bagian dalm program assembler dipisahkan oleh spasi atau tab, namun untuk bagian menemonik dan operand yang lebih dari satu harus diipisah dengan tanda koma (tanpa spasi)
    • Bagian label ditulis mulai huruf pertama dari baris, jika baris program tidak memili label maka perlu di beri spasi atau tab untuk memisahkan bagian label dengan bagian lainnya
- Contoh
Proses: MOV AX,BX ; Salin register BX ke dlm register AX (intel)

Cara mengkompile program assembler
  • Untuk mengkompile program assembler diperlukan kompiler program asembler, salah satunya Turbo Asembler dengan menjalankan program TASM.EXE dan TLINK.EXE
  • Source kode program disimpan dengan ekstensi .ASM
  • Program dapat ditulis dengan notepad (windows) atau edit(dos)
  • TASM.EXE digunakan mengkompile source code menjadi file object berekstensi .OBJ
  • TLINK.EXE digunakan mengkompile file object menjadi file executable .EXE
  • Komputer “bicara/berkomunikasi” dgn menggunakan suatu bahasa
  • Bahasa-bahasa pemrograman menyediakan tools u/ mengekspresikan pemrosesan data secara simbolik
  • Setiap bahasa memiliki sintaks dan grammar yang dirumuskan dgn baik
  • Bahasa Assembler/Rakitan adalah bahasa komputer yang mempunyai kedudukan diantara bahasa tingkat tinggi dan bahasa tingkat rendah dan bertugas mengkonversi program source kode ke bahasa mesin.
o Bahasa rakitan merupakan representasi teks dari bahasa mesin
o Satu statement bahasa rakitan merepresentasikan satu instruksi mesin
o Bahasa rakitan merupakan abstarksi antara program tingkat tinggi dan kode mesin
  • Bahasa Tingkat Tinggi/High Level Language adalah bahasa komputer yang menggunakan kata-kata dan pernyataan yang mudah dimengerti oleh manusia, walaupun jauh berbeda dengan bahasa yang digunakan untuk komunikasi sehari-hari. Contoh Java, C++, Pascal, Basic dll
  • Bahasa Tingkat Rendah/Low Level Language/Bahasa Mesin adalah kumpulan kode biner yang hanya bisa di mengerti oleh komputer, kode-kode ini kemudian diterjemahkan sebagai instruksi-instruksi yang harus dijalankan oleh komputer.
  • Bahasa mesin merupakan bahasa ibu/alamiah dari komputer
  • Bahasa mesin merupakan representasi bit dari operasi mesin dieksekusi oleh hardware
  • Hirarki bahasa pemrograman:

Mengapa belajar Bahasa Rakitan?
  • Mengetahui lebih dalam tentang arsitektur komputer dan sistem operasi
  • Mengetahui lebih lanjut tentang komputer dan bagaimana bahasa komputer membangkitkan kode mesin, karena bhs rakitan mempunyai hubungan yang dekat dgn bhs mesin
  • Mempelajari utilitasnya.
Tipe pemrogramman tertentu sulit atau tidak mungkin dilakukan dgn bhs tingkat tinggi. Contoh:
  1. Komunikasi langsung dgn SO komputer
  2. Program color high-speed graphics dgn memori rendah
  3. Program interfacing
  4. Program telekomunikasi
  • Sebagai Solusi akibat batasan-batasan pada bhs tingkat tinggi.
  • Sebagai alat belajar (learning tool) .. terutama menyakut kerja OS

Aplikasi Bahasa Rakitan
  • Digunakan sebagai program subroutine khususnya untuk aplikasi spesifik
  • Program subroutine ini dapat di panggil oleh bahasa tingkat tinggi. Kombinasi ini akan menambah kekuatan bahasa tingkat tinggi
  • Misalnya bahasa pemrograman Borland Delphi ditambah subroutine bahasa assembler yang digunakan untuk mengoperasikan perangkat keras dengan interface program delphi.

Struktur Bahasa Rakitan
  • Struktur dasar bahasa rakitan memiliki 3 komponen dalam mesin Intel dan 4 komponen dalam mesin MIPS:
1. Label/ Nama proses atau operasi
  • Bagian label berfungsi mewakili nomor memori program
  • Apabila ada perintah JUMP(lompat)ke suatu label maka Assembler akan mengingat nomor memori program yang dimaksud dan menjalankan instruksi-instruksi yang terdapat didalam label tersebut
  • Cara penulisan Label, bebas tetapi tidak boleh ada spasi, tidak boleh ada nama label yang sama dan diakhiri tanda titik dua( : )
2. Mnemonic
  • Mnemonik merupakan kode alphabet pendek atau singkatan perintah yang mudah diingat
  • Bagian ini bertugas menginstruksikan suatu program untuk bekerja sesuai perintah
  • Mnemonik terdiri dari dua macam yaitu
  1. Instruksi => instruksi pengendali prosessor misalnya MOV, ADD, JMP
  2. Directive => Pengatur kerja program Assembler misal DB, DW,DD
# Penulisan harus huruf kapital semua atau huruf kecil semua
3. Operand 1
  • Operand merupakan objek dari sebuah instruksi yang harus dieksekusi oleh program assembler sesuai perintah pada bagian Mnemonic
  • Bagian ini bisa berupa register, variabel memory, label atau Immediate value
• Contoh
o AX (register)
o count (variabel memory)
o JMP Mulai (label:lompat ke label Mulai)
o 10 (immediete value)
# Penulisan harus huruf kapital semua atau huruf kecil semua
4. Operand 2 (mesin MIPS)
  • Komentar
  1. Bagian Komentar tidak berpengaruh dengan jalannya program, tetapi sangat pentung untuk mempermudah seseorang mengerti maksud dari program yang di buat
  2. Cara penulisan bebas dan harus didahului tanda titk koma (;) pada mesin intel dan # pada mesin MIPS
  • Hal-Hal yang perlu di perhatikan dalam menulis instruksi bahsa Assembeler:
    • Setiap Bagian-bagian dalam struktur seperti label, komentar tidak harus selalu ada minimal ada bagian mnemonic contohnya instruksi RET
    • Setiap bagian dalm program assembler dipisahkan oleh spasi atau tab, namun untuk bagian menemonik dan operand yang lebih dari satu harus diipisah dengan tanda koma (tanpa spasi)
    • Bagian label ditulis mulai huruf pertama dari baris, jika baris program tidak memili label maka perlu di beri spasi atau tab untuk memisahkan bagian label dengan bagian lainnya
- Contoh
Proses: MOV AX,BX ; Salin register BX ke dlm register AX (intel)

Minggu, 26 Februari 2012

Bahasa rakitan(Assembly) (0)

Bahasa rakitan (bahasa Inggris: assembly language) adalah bahasa pemrograman komputer tingkat rendah. Bahasa rakitan merupakan notasi untuk bahasa mesin yang dapat dibaca oleh manusia dan berbeda-beda tergantung dari arsitektur komputer yang digunakan. Bahasa mesin adalah pola bit-bit (serangkaian nomor-nomor biner) tertentu yang merupakan kode operasi mesin. Bahasa mesin dibuat lebih mudah dibaca dan ditulis dengan cara mengganti pola bit-bit menjadi julukan-julukan yang disebut mnemonics.

Berbeda dengan bahasa pemrograman tingkat tinggi, bahasa rakitan biasanya memiliki hubungan 1-1 dengan instruksi bahasa mesin. Misalnya, tiap julukan (mnemonic) yang ditulis di program dengan bahasa rakitan akan diterjemahkan menjadi tepat satu kode operasi yang dapat dimengerti langsung oleh komputer. Pada bahasa tingkat tinggi, satu perintah dapat diterjemahkan menjadi beberapa kode operasi dalam bahasa mesin. Proses pengubahan bahasa rakitan ke bahasa mesin dilakukan oleh assembler, dan proses balikannya dilakukan oleh disassembler.

Setiap arsitektur komputer memiliki bahasa mesin yang berbeda-beda sehingga bahasa rakitannya pun berbeda-beda.

Berikut merupakan contoh bahasa rakitan:

mov al, 0x61

yang berarti pindahkan (mov = move) nilai heksadesimal 61 (= 97 dalam desimal) ke register prosesor bernama "al". Adalah lebih mudah mengingat ini dari bahasa mesin:

10110000 01100001

Bahasa rakitan

Bahasa rakitan atau lebih umum dikenal sebagai Assembly adalah bahasa pemrograman tingkat rendah yang digunakan dalam pemrograman komputer, mikroprosesor, pengendali mikro, dan perangkat lainnya yang dapat diprogram. Bahasa rakitan mengimplementasikan representasi atas kode mesin dalam bentuk simbol-simbol yang secara relatif lebih dapat dipahami oleh manusia. Berbeda halnya dengan bahasa-bahasa tingkat tinggi yang berlaku umum, bahasa rakitan biasanya mendukung secara spesifik untuk suatu ataupun beberapa jenis arsitektur komputer tertentu. Dengan demikian, portabilitas bahasa rakitan tidak dapat menandingi bahasa-bahasa lainnya yang merupakan bahasa pemrograman tingkat tinggi. Namun demikian, bahasa rakitan memungkinkan programmer memanfaatkan secara penuh kemampuan suatu perangkat keras tertentu yang biasanya tidak dapat ataupun terbatas bila dibuat dengan menggunakan bahasa pemrograman tingkat tinggi.
Pada bahasa rakitan, programmer umumnya menggunakan sebuah program utilitas yang disebut sebagai perakit (bahasa Inggris: assembler) yang digunakan untuk menerjemahkan kode dalam bahasa rakitan tersebut ke dalam kode mesin untuk perangkat keras tertentu. Sebuah perintah dalam bahasa rakitan biasanya akan diterjemahkan menjadi sebuah instruksi mnemonic dalam kode mesin, berbeda halnya dengan kompiler pada bahasa pemrograman tingkat tinggi yang menerjemahkan sebuah perintah menjadi sejumlah instruksi dalam kode mesin.
Beberapa perangkat lunak bahasa rakitan terkenal biasanya menyediakan tambahan fitur untuk memgasilitasi proses pengembangan program, mengontrol proses perakitan, dan alat bantu debugging.

Daftar isi

Dasar alasan menggunakan bahasa rakitan

Ada beberapa dasar alasan menggunakan bahasa rakitan dilihat dari sudut pandang penggunaannya:
  • Bahasa rakitan dibandingkan dengan bahasa mesin, bahasa rakitan merupakan representasi atas bahasa mesin yang dirancang agar lebih mudah dipahami oleh manusia. Dengan menggunakan bahasa rakitan, seorang programmer dapat lebih mudah mengingat instruksi-instruksi dengan menggunakan simbol yang lebih dapat dimengerti dibandingkan bila menggunakan simbol mnemonic kode mesin secara langsung. Demikian halnya pula dengan mekanisme lompatan yang umum terdapat dalam bahasa mesin yang biasanya menggunakan alamat memori, programmer dapat lebih mudah menggunakan fasilitas labeling yang terdapat bahasa rakitan dibandingkan menggunakan alamat memori tertentu dalam kode mnemonic.
  • Bahasa rakitan dibandingkan dengan bahasa tingkat tinggi, bahasa rakitan memungkinkan programmer untuk mengontrol serta memanfaatkan secara penuh kapabilitas yang terdapat atas suatu perangkat keras, berbeda halnya dengan bahasa pemrograman tingkat tinggi yang memiliki banyak keterbatasan dalam pemanfaatan secara penuh suatu perangkat keras. Bahasa rakitan menjanjikan tingkat unjuk kerja yang maksimum karena sifatnya yang menerjemahkan secara langsung instruksi rakitan menjadi instruksi mesin, berbeda halnya dengan bahasa pemrograman tingkat tinggi yang biasanya menerjemahkan sebuah instruksi menjadi sejumlah kode mesin.

Representasi kode mesin

Bahasa rakitan menerjemahkan sebuah instruksi rakitan menjadi instruksi mesin, umumnya mekanisme penerjemahan ini bersifat 1-1, karenanya dapat disebutkan pula bahwa setiap instruksi dalam bahasa rakitan merupakan representasi dari instruksi kode mesin.
Sebagai contoh, berikut adalah instruksi yang digunakan pada prosesor x86 untuk memindahkan nilai 97 sebesar 8-bit ke dalam register prosesor AL. Kode biner atas instruksi pemindahan adalah 10110 diikuti dengan 3-bit pengenal atas register yang akan digunakan. Pengenal atas register AL dalam hal ini adalah 000. Kemudian, nilai 97 dalam kode biner adalah 01100001, sehingga kode mesin yang digunakan untuk memindahkannya adalah sebagai berikut:[1]
10110000 01100001
Kode biner ini dapat diubah agar lebih mudah dibaca manusia dengan mengkonversikannya dalam bilangan heksadesimal sebagai berikut:
B0 61
Pada instruksi diatas, B0 berarti: 'Pindahkan nilai berikut ke register AL', dan 61 adalah representasi bilangan heksadesimal untuk nilai 01100001, atau 97 dalam bilangan desimal. Bahasa rakitan untuk prosesor Intel menyediakan simbol mnemonic MOV (yang merupakan singkatan dari move) untuk instruksi serupa sehingga kode mesin sebelumnya dapat ditulis dalam bahasa rakitan sebagai berikut:
MOV AL, 61h       ; Isi register AL dengan nilai 97 (61h)
Bahasa rakitan memungkinkan programmer menambahkan komentar atas setiap instruksi yang ditulis untuk mempermudah pembacaan dan lebih mudah pemahaman.

Lihat pula

Rujukan

  1. ^ Intel Architecture Software Developer’s Manual, Volume 2: Instruction Set Reference. INTEL CORPORATION. 12 Februari 1999. hlm. 442 and 35. Diakses pada 18 November 2010.

 Bacaan lanjutan

  • (Inggris) ASM Community Book "An online book full of helpful ASM info, tutorials and code examples" by the ASM Community
  • (Inggris) Jonathan Bartlett: Programming from the Ground Up. Bartlett Publishing, 2004. ISBN 0-9752838-4-7
    Also available online as PDF
  • (Inggris) Robert Britton: MIPS Assembly Language Programming. Prentice Hall, 2003. ISBN 0-13-142044-5
  • (Inggris) Paul Carter: PC Assembly Language. Free ebook, 2001.
    Website
  • (Inggris) Jeff Duntemann: Assembly Language Step-by-Step. Wiley, 2000. ISBN 0-471-37523-3
  • (Inggris) Randall Hyde: The Art of Assembly Language. No Starch Press, 2003. ISBN 1-886411-97-2
    Draft versions available online as PDF and HTML
  • (Inggris) Peter Norton, John Socha, Peter Norton's Assembly Language Book for the IBM PC, Brady Books, NY: 1986.
  • (Inggris) Michael Singer, PDP-11. Assembler Language Programming and Machine Organization, John Wiley & Sons, NY: 1980.
  • (Inggris) Dominic Sweetman: See MIPS Run. Morgan Kaufmann Publishers, 1999. ISBN 1-55860-410-3
  • (Inggris) John Waldron: Introduction to RISC Assembly Language Programming. Addison Wesley, 1998. ISBN 0-201-39828-