Bahasa rakitan: Perbedaan antara revisi

Konten dihapus Konten ditambahkan
TXiKiBoT (bicara | kontrib)
Jazle (bicara | kontrib)
Tulis ulang artikel
Baris 1:
'''Bahasa rakitan''' ([[bahasa{{asal kata|Inggris]]: ''|assembly language''}}) adalah [[bahasa pemrograman tingkat rendah yang digunakan dalam pemrograman [[komputer]], [[komputermikroprosesor]], tingkat[[pengendali rendahmikro]], dan perangkat lainnya yang dapat diprogram. Bahasa rakitanperakit merupakanmengimplementasikan notasirepresentasi untukatas bahasakode mesin dalam bentuk simbol-simbol yang secara relatif lebih dapat dibacadipahami oleh manusia. danBerbeda berbedahalnya dengan bahasa-bedabahasa tingkat tinggi yang berlaku umum, bahasa perakit biasanya mendukung secara spesifik untuk suatu ataupun tergantungbeberapa darijenis arsitektur komputer yang digunakantertentu. BahasaDengan mesindemikian, adalahportabilitas polabahasa bit-bitrakitan (serangkaiantidak nomordapat menandingi bahasa-nomorbahasa [[biner]]) tertentulainnya yang merupakan kodebahasa operasipemrograman mesintingkat tinggi. BahasaNamun mesindemikian, dibuatbahasa lebihrakitan mudahmemungkinkan dibacaprogrammer danmemanfaatkan ditulissecara denganpenuh carakemampuan menggantisuatu polaperangkat bit-bitkeras menjadi julukan-julukantertentu yang disebuttidak dapat dilakukan oleh bahasa pemrograman tingkat ''mnemonics''tinggi.
 
Berbeda denganPada bahasa pemrograman tingkat tinggirakitan, bahasaprogrammer rakitanumumnya biasanyamenggunakan memilikisebuah hubungan[[Perangkat 1-1lunak denganutilitas|program instruksiutilitas]] bahasayang mesin.disebut Misalnya,sebagai tiapperakit julukan({{asal (''mnemonic''kata|Inggris|assembler}}) yang ditulisdigunakan diuntuk programmenerjemahkan dengankode dalam bahasa rakitan akantersebut diterjemahkanke menjadi tepat satudalam kode operasimesin yanguntuk dapatperangkat dimengertikeras langsungtertentu. olehSebuah komputer.perintah Padadalam bahasa tingkatrakitan tinggi,biasanya satu perintah dapatakan diterjemahkan menjadi beberapasebuah kodeinstruksi operasi''mnemonic'' dalam bahasakode mesin., Prosesberbeda pengubahanhalnya bahasadengan rakitan[[kompiler]] kepada bahasa mesinpemrograman dilakukantingkat olehtinggi ''assembler'',yang danmenerjemahkan prosessebuah balikannyaperintah dilakukanmenjadi olehsejumlah ''disassembler''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''.
Setiap arsitektur komputer memiliki bahasa mesin yang berbeda-beda sehingga bahasa rakitannya pun berbeda-beda.
 
Berikut==Dasar merupakanalasan contohmenggunakan bahasa rakitan:==
Ada beberapa dasar alasan menggunakan bahasa rakitan dilihat dari sudut pandang penggunaannya:
<source lang=asm>
;* '''Bahasa rakitan dibandingkan dengan bahasa mesin''', bahasa rakitan merupakan representasi atas bahasa mesin yang dirancang agar lebih dapat 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''.
mov al, 0x61
;* '''Bahasa rakitan dibandingkan dengan bahasa tingkat tinggi''', bahasa rakitan memungkinkan programmer untuk dapat 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.
</source>
 
yang berarti pindahkan (mov = ''move'') nilai heksadesimal 61 (= 97 dalam [[desimal]]) ke register prosesor bernama "al". Adalah lebih mudah mengingat ini dari bahasa mesin:
==Representasi kode mesin==
<pre> 10110000 01100001 </pre>
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:<ref name="intel-1999-MOV">{{cite book|title=Intel Architecture Software Developer’s Manual, Volume 2: Instruction Set Reference|year=1999|publisher=INTEL CORPORATION |pages=442 and 35|url=http://download.intel.com/design/PentiumII/manuals/24319102.PDF|accessdate=18 November 2010}}</ref>
<pre> 10110000 01100001 </pre>
Kode biner ini dapat diubah agar lebih mudah dibaca manusia dengan mengkonversikannya dalam bilangan heksadesimal sebagai berikut:
B0 61
Pada instruksi diatas, <code>B0</code> berarti: 'Pindahkan nilai berikut ke register ''AL''', dan <code>61</code> 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==
* [[Kompiler]]
 
==Rujukan==
{{reflist}}
 
==Bacaan lanjutan==
* {{en}} [http://www.asmcommunity.net/book/ ''ASM Community Book''] "An online book full of helpful ASM info, tutorials and code examples" by the ASM Community
* {{en}} Jonathan Bartlett: ''[http://programminggroundup.blogspot.com/ Programming from the Ground Up]''. Bartlett Publishing, 2004. ISBN 0-9752838-4-7<br />Also available online [http://download.savannah.gnu.org/releases-noredirect/pgubook/ProgrammingGroundUp-1-0-booksize.pdf as PDF]
* {{en}} Robert Britton: ''MIPS Assembly Language Programming''. Prentice Hall, 2003. ISBN 0-13-142044-5
* {{en}} Paul Carter: ''PC Assembly Language''. Free ebook, 2001.<br />[http://drpaulcarter.com/pcasm/ Website]
* {{en}} Jeff Duntemann: ''Assembly Language Step-by-Step''. Wiley, 2000. ISBN 0-471-37523-3
* {{en}} Randall Hyde: ''The Art of Assembly Language''. No Starch Press, 2003. ISBN 1-886411-97-2<br />Draft versions [http://webster.cs.ucr.edu/AoA/index.html available online] as PDF and HTML
* {{en}} Peter Norton, John Socha, ''Peter Norton's Assembly Language Book for the IBM PC'', Brady Books, NY: 1986.
* {{en}} Michael Singer, ''PDP-11. Assembler Language Programming and Machine Organization'', John Wiley & Sons, NY: 1980.
* {{en}} Dominic Sweetman: ''See MIPS Run''. Morgan Kaufmann Publishers, 1999. ISBN 1-55860-410-3
* {{en}} John Waldron: ''Introduction to RISC Assembly Language Programming''. Addison Wesley, 1998. ISBN 0-201-39828-1
 
{{computer-stub}}