Anda di halaman 1dari 4

BAB I PENGENALAN BAHASA MESIN & BAHASA ASSEMBLY

Bahasa Mesin
Setiap jenis CPU memiliki bahasa mesin-nya masing-masing. Instruksi bahasa mesin dinyatakan dalam bilangan numeric (Binari) yang tersimpan sebagai byte dimemori. asingmasing instruksi memiliki kode numerik yang unik yang disebut sebagai !operation code" atau !opcode". Setiap perintah dia#ali dengan suatu opcode dan dapat diikuti oleh data.

Bahasa Assembly
$arena Bahasa esin sangat rumit untuk diprogram secara langsung (karena berupa bilangan numeric)% sehingga dibuat suatu symbol pelambang (mnemonic) untuk me#akili masing-masing instruksi tersebut yang lebih mudah diingat dan dibaca oleh manusia (bayangkan apakah anda lebih mudah mengingat nama teman anda atau nomor telepon rumahnya&).

Apa itu Assembler


Sebagaimana dijelaskan sebelumnya bah#a bahasa 'ssembly menggunakan mnemonic sebagai penganti bagi instruksi bahasa esin% sehingga program yang ditulis dalam bahasa 'ssembly tidak dapat secara langsung dieksekusi oleh CPU. (alam hal ini 'ssembler berperan untuk menterjemahkan mnemonic tersebut menjadi bahasa esin yang dapat dieksekusi oleh CPU. Untuk melakukan assembler dapat menggunakan program ()BU*.)+) maupu berbagai aplikasi compiler seperti ,'S % 'S % -'S % .'S maupun emulator/0/1.

Apa itu disassembler


2ika proses 'ssembler menterjemahkan program yang ditulis dengan bahasa 'ssembly menjadi bahasa mesin% maka proses disassembler adalah mengembalikan suatu binary program menjadi (mnemonic) bahasa 'ssembly. ,ujuan dari disassembler adalah untuk keperluaan re3ersed engineering% dimana kita mempelajari maupun memperbaiki suatu so4t#are tanpa memiliki source code% misalnya untuk mempelajari teknik penyerangan suatu program mal#are untuk dibuat anti mal#arenya% ataupun memeriksa kemungkinan suatu program terdapat payload.

Mengapa belajar Assembly


(e#asa ini adalah tidak rele3an lagi membuat buat suatu program yang secara keseluruhan ditulis dengan bahasa assembly. 'ssembly biasanya digunakan untuk rutinrutin penting tertentu. engapa& $arena adalah lebih mudah memprogram dengan menggunakan bahasa tingkat tinggi dari pada menggunakan assembly. Pemakaian assembly akan mengakibatkan program sulit untuk dialihkan ke plat4orm yang berbeda (ingat bah#a masing-masing CPU memiliki bahasa esin yang berbeda)% dan berikut ini adalah alasan mengapa anda mempelajari bahasa 'ssembly 5 6. Program yang ditulis dengan assembly akan lebih cepat dan lebih kecil dibandingkan dengan kode yang dihasilkan dengan menggunakan compiler. 7. 'ssembly memungkinkan akses langsung ke 4asilitas system hard#are yang mungkin tidak dapat dilakukan dengan menggunakan bahasa tingkat tinggi (membaca8menulis data langsung ke sector% mem4ormat harddisk).

9.

empelajari assembly akan membantu pengertian yang lebih mendalam bagaimana computer bekerja. :. empelajari pemrograman assembly akan membantu pengertian yang lebih baik tentang bagaimana compiler dan bahasa tingkat tinggi seperti C bekerja. ;. (engan mengerti bahasa 'ssembly anda dapat melakukan proses disassembly untuk menganalisa program tertentu.

Latihan
!"pi# Memahami bahasa mesin dan bahasa assembly$ serta register dengan pr"gram %ebug&E'e
(ebug merupakan program yang tersedia sejak (<S untuk IB PC% utility ini cukup berman4aat dan merupakan suatu keharusan bagi programmer assembler. (ebug bekerja pada le3el bahasa mesin% dan memiliki kemampuan disassembler serta melakukan assembler instruksi (mnemonic) secara langsung ke bahasa mesin.

Menga#ti(#an pr"gram %ebug


6. 'kti4kan S-(<S Prompt (Start% 'll Programs% Command Prompt 7. Ubah keakti4kan ke 4older anda C5=> )5 )5=> C( =?70:0907:='S )5=?70:0907:='S > 9. $etikan perintah (ebug.e@e untuk mengakti4kan program (ebug )5=?70:0907:='S >(ebug.e@e

!anda #ea#ti(an pr"gram %ebug


,anda keakti4an anda dalam program (ebug ditandai dengan sebuah prompt (-)% pada tanda prompt inilah anda mengetikan perintah debug.

Menampil#an tanggal BI)S *e+isi"n


Pada computer IB PC Compatible menyimpan BI<S Ae3ision (ate pada alamatn ....5000;% sehingga anda dapat menggunakan perintah ( ((isplay untuk menampilkan isi pada alamat tersebut diatas. Pada tanda prompt (-) ketikan ( ....5000;

Pada gambar diatas dapat dijelaskan bah#a pada sisi kiri ditampilkan alamat dari memori yang ditampilkan dalam 4ormat Segment (....) dan <44set (0000)% pada bagian tengah adalah representasi isi memori pada masing-masing alamat dalam 4ormat he@adesimal%

kemudian pada bagian kanan adalah representasi isi memori dalam 4ormat 'SCII (sesuatu hal yang perlu diperhatikan adalah tidak semua karakter 'SCII dapat diprint dilayar% untuk karakter 'SCII yang tidak dapat di print dilayar ditampilkan sebagai titik (.).

Menampil#an isi register


(alam pemrograman 'S % kita akan banyak berinteraksi dengan Aegister untuk berbagai proses pengolahan oleh CPU% misalnya penjumlahan% pengurangi% perkalian% pembagian% sampai kepada operasi logika dan bit. Untuk menampilkan isi Aegister dapat menggunakan perintah A (Aegister) -A '+B0000 B+B0000 C+B0000 (+B0000 SPB..)) BPB0000 SIB0000 (IB0000 (SB0B:0 )SB0B:0 SSB0B:0 CSB0B:0 IPB0600 -C UP )I PD -E -' P< -C 0B:050600 F90B 2-B 060( Pada gambar diatas dapat dijelaskan bah#a nilai register '+ adalah 0000% nilai register B+ adalah 0000% dan seterusnya. $emudian register CS5IP menunjuk kelokasi 0B:050060% dan isi memori lokasi yang ditunjuk adalah F90B (opcode bahasa mesin) yang direpresentasikan oleh 2-B 060( (mnemonic bahasa assembly). $emudian juga ditampilkan status dari register .lag sebagai berikut5
FLAG NAME------------SET----------------CLEAR Overflow------------------ov-------------------nv Direction------------------dn-------------------up (increment) Interrupt-------------------ei (enabled)-----di (disabled) Sign------------------------ng (neg)-----------pl (positive) Zero------------------------zr--------------------nz Auxiliar carr -----------ac--------------------na !arit -----------------------pe (even)---------po (odd) "arr -----------------------c -------------------nc

,rap 4lag (,.) tidak ditampilkan.

Mengubah nilai register


Pada beberapa perintah debug membutuhkan perubahan nilai register didalam operasinya% contohnya kita ingin menyimpan hasil pengetikan ke disk% maka perlu melakukan perubahan terhadap nilai register C+ untuk menunjukan berapa byte data yang akan di tulis ke disk. Perubahan
-R AX=0000 BX=0000 CX=0000 DS=0B40 ES=0B40 SS=0B40 0B40:0100 730B JNB 010D -RAX AX 0000 :1234 -R AX=1234 BX=0000 CX=0000 DS=0B40 ES=0B40 SS=0B40 0B40:0100 730B JNB 010D DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 CS=0B40 IP=0100 NV UP EI PL NZ NA PO NC

DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 CS=0B40 IP=0100 NV UP EI PL NZ NA PO NC

Catatan5 Untuk menganti isi dari register 4lag dapat dilakukan dengan mengetikan perintah A. (Aegister .lag)% kemudian ketikan state dari 4lag yang mau diganti misalnya (- )I CG.

Pr"gram bahasa mesin anda yang pertama


'gar anda dapat lebih memahami perbedaan antara bahasa mesin dengan bahasa assembly% maka berikut ini kita akan membuat sebuah program yang menampilkan pesan !hello #orldH". Baha a !e in "ala! #en$u% &ep&e en$a i he'a"e i!al )B 60 1/ 1; 1C 1C 1. 70 FF 1. F7 1C 1: 70 76 0( 0' 7: B: 0? B' 07 06 C( 76 B: :C C( 76 Cara mengetikan bahasa mesin diatas 5 a. akti4kan program (ebug b. ketik ) 600 Ienter> ()B)nter) c. ketik bilangan he@adecimal diatas diikuti dengan spasi% misalnya )B Ispasi> 60 Ispasi> 1/ Ispasi> dan seterusnya sampai selesai dan diakhiri dengan Ienter> d. ketik AC+ Ienter>% kemudian ketik 6(. e. ketik - hello.com Ienter> (- B -ame) 4. akhiri dengan perintah J (Jrite) g. ketikan U 600 (UBUnassembler) h. ketikan ( 600 ((B(isplay) i. keluar dari program (ebug dengan perintah K (Kuit).

Anda mungkin juga menyukai