Friday 11 November 2016

Unknown

PENGENALAN BAHASA MESIN & BAHASA ASSEMBLY

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. Masing-masing instruksi memiliki kode numerik yang unik yang disebut sebagai “operation code” atau “opcode”. Setiap perintah diawali dengan suatu opcode dan dapat diikuti oleh data.
Bahasa Assembly
Karena Bahasa Mesin sangat rumit untuk diprogram secara langsung (karena berupa bilangan numeric), sehingga dibuat suatu symbol pelambang (mnemonic) untuk mewakili 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 bahwa bahasa Assembly menggunakan mnemonic sebagai penganti bagi instruksi bahasa Mesin, sehingga program yang ditulis dalam bahasa Assembly tidak dapat secara langsung dieksekusi oleh CPU. Dalam hal ini Assembler berperan untuk menterjemahkan mnemonic tersebut menjadi bahasa Mesin yang dapat dieksekusi oleh CPU. Untuk melakukan assembler dapat menggunakan program DEBUG.EXE maupu berbagai aplikasi compiler seperti TASM, MASM, NASM, FASM maupun emulator8086.
Apa itu disassembler
Jika proses Assembler menterjemahkan program yang ditulis dengan bahasa Assembly menjadi bahasa mesin, maka proses disassembler adalah mengembalikan suatu binary program menjadi (mnemonic) bahasa Assembly. Tujuan dari disassembler adalah untuk keperluaan reversed engineering, dimana kita mempelajari maupun memperbaiki suatu software tanpa memiliki source code, misalnya untuk mempelajari teknik penyerangan suatu program malware untuk dibuat anti malwarenya, ataupun memeriksa kemungkinan suatu program terdapat payload.
Mengapa belajar Assembly
Dewasa ini adalah tidak relevan lagi membuat buat suatu program yang secara keseluruhan ditulis dengan bahasa assembly. Assembly biasanya digunakan untuk rutinrutin penting tertentu. Mengapa? Karena adalah lebih mudah memprogram dengan menggunakan bahasa tingkat tinggi dari pada menggunakan assembly. Pemakaian assembly akan mengakibatkan program sulit untuk dialihkan ke platform yang berbeda (ingat bahwa masing-masing CPU memiliki bahasa Mesin yang berbeda), dan berikut ini adalah alasan mengapa anda mempelajari bahasa Assembly :
1. Program yang ditulis dengan assembly akan lebih cepat dan lebih kecil
dibandingkan dengan kode yang dihasilkan dengan menggunakan compiler.
2. Assembly memungkinkan akses langsung ke fasilitas system hardware yang
mungkin tidak dapat dilakukan dengan menggunakan bahasa tingkat tinggi
(membaca/menulis data langsung ke sector, memformat harddisk).
2 Muhammad Taqiyyuddin Alawiy, ST., MT
3. Mempelajari assembly akan membantu pengertian yang lebih mendalam
bagaimana computer bekerja.
4. Mempelajari pemrograman assembly akan membantu pengertian yang lebih baik
tentang bagaimana compiler dan bahasa tingkat tinggi seperti C bekerja.
5. Dengan mengerti bahasa Assembly anda dapat melakukan proses disassembly
untuk menganalisa program tertentu.
Latihan :
Topik: Memahami bahasa mesin dan bahasa assembly, serta
register dengan program Debug.Exe
Debug merupakan program yang tersedia sejak DOS untuk IBM PC, utility ini cukup bermanfaat dan merupakan suatu keharusan bagi programmer assembler. Debug bekerja pada level bahasa mesin, dan memiliki kemampuan disassembler serta melakukan assembler instruksi (mnemonic) secara langsung ke bahasa mesin.
Mengaktifkan program Debug
1. Aktifkan MS-DOS Prompt (Start, All Programs, Command Prompt
2. Ubah keaktifkan ke folder anda
C:\> E:
E:\> CD \920403024\ASM
E:\920403024\ASM>
3. Ketikan perintah Debug.exe untuk mengaktifkan program Debug
E:\920403024\ASM>Debug.exe
Tanda keaktifan program Debug
Tanda keaktifan anda dalam program Debug ditandai dengan sebuah prompt (-), pada tanda prompt inilah anda mengetikan perintah debug.
Menampilkan tanggal BIOS Revision
Pada computer IBM PC Compatible menyimpan BIOS Revision Date pada alamatn FFFF:0005, sehingga anda dapat menggunakan perintah D (Display untuk menampilkan isi pada alamat tersebut diatas.
Pada tanda prompt (-) ketikan D FFFF:0005
Pada gambar diatas dapat dijelaskan bahwa pada sisi kiri ditampilkan alamat dari memori yang ditampilkan dalam format Segment (FFFF) dan Offset (0000), pada bagian tengah adalah representasi isi memori pada masing-masing alamat dalam format hexadesimal,
3 Muhammad Taqiyyuddin Alawiy, ST., MT
kemudian pada bagian kanan adalah representasi isi memori dalam format ASCII (sesuatu hal yang perlu diperhatikan adalah tidak semua karakter ASCII dapat diprint dilayar, untuk karakter ASCII yang tidak dapat di print dilayar ditampilkan sebagai titik (.).
Menampilkan isi register
Dalam pemrograman ASM, kita akan banyak berinteraksi dengan Register untuk
berbagai proses pengolahan oleh CPU, misalnya penjumlahan, pengurangi, perkalian, pembagian, sampai kepada operasi logika dan bit.
Untuk menampilkan isi Register dapat menggunakan perintah R (Register)
-R
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0B40 ES=0B40 SS=0B40 CS=0B40 IP=0100 NV UP EI PL NZ NA PO NC
0B40:0100 730B JNB 010D
Pada gambar diatas dapat dijelaskan bahwa nilai register AX adalah 0000, nilai register
BX adalah 0000, dan seterusnya. Kemudian register CS:IP menunjuk kelokasi
0B40:0010, dan isi memori lokasi yang ditunjuk adalah 730B (opcode bahasa mesin)
yang direpresentasikan oleh JNB 010D (mnemonic bahasa assembly).
Kemudian juga ditampilkan status dari register Flag sebagai berikut:
FLAG NAME------------SET----------------CLEAR
Overflow------------------ov-------------------nv
Direction------------------dn-------------------up (increment)
Interrupt-------------------ei (enabled)-----di (disabled)
Sign------------------------ng (neg)-----------pl (positive)
Zero------------------------zr--------------------nz
Auxiliary carry-----------ac--------------------na
Parity-----------------------pe (even)---------po (odd)
Carry-----------------------cy-------------------nc
Trap flag (TF) 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 CX untuk menunjukan berapa byte data yang akan di tulis ke disk.
Perubahan
-R
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0B40 ES=0B40 SS=0B40 CS=0B40 IP=0100 NV UP EI PL NZ NA PO NC
0B40:0100 730B JNB 010D
-RAX
AX 0000
:1234
-R
AX=1234 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0B40 ES=0B40 SS=0B40 CS=0B40 IP=0100 NV UP EI PL NZ NA PO NC
0B40:0100 730B JNB 010D
Catatan:
Untuk menganti isi dari register flag dapat dilakukan dengan mengetikan perintah RF
(Register Flag), kemudian ketikan state dari flag yang mau diganti misalnya DN EI CY.
4 Muhammad Taqiyyuddin Alawiy, ST., MT
Program bahasa mesin anda yang pertama
Agar anda dapat lebih memahami perbedaan antara bahasa mesin dengan bahasa
assembly, maka berikut ini kita akan membuat sebuah program yang menampilkan pesan
“hello world!”.
Bahasa mesin dalam bentuk representasi hexadesimal
EB 10
68 65 6C 6C 6F 20 77 6F 72 6C 64 20 21 0D 0A 24
B4 09
BA 02 01
CD 21
B4 4C
CD 21
Cara mengetikan bahasa mesin diatas :
a. aktifkan program Debug
b. ketik E 100 <enter> (E=Enter)
c. ketik bilangan hexadecimal diatas diikuti dengan spasi, misalnya EB <spasi> 10
<spasi> 68 <spasi> dan seterusnya sampai selesai dan diakhiri dengan <enter>
d. ketik RCX <enter>, kemudian ketik 1D.
e. ketik N hello.com <enter> (N = Name)
f. akhiri dengan perintah W (Write)
g. ketikan U 100 (U=Unassembler)
h. ketikan D 100 (D=Display)
i. keluar dari program Debug dengan perintah Q (Quit).


itu saja penjelasan saya tentang bahasa program assembly. mudah-mudahan anda bisa paham atas penjelasan saya tadi. terimakasih atas kunjungan nya....

Unknown

About Unknown -

Author Description here.. Nulla sagittis convallis. Curabitur consequat. Quisque metus enim, venenatis fermentum, mollis in, porta et, nibh. Duis vulputate elit in elit. Mauris dictum libero id justo.

Subscribe to this Blog via Email :