Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more ➡
Download
Standard view
Full view
of .
Add note
Save to My Library
Sync to mobile
Look up keyword
Like this
325Activity
×
0 of .
Results for:
No results containing your search query
P. 1
Tutorial Pemrograman Bahasa C dan Assembly

Tutorial Pemrograman Bahasa C dan Assembly

Ratings:

4.67

(6)
|Views: 29,726|Likes:
Published by api-26804375
Tujuan pembuatan tutorial ini adalah 'Bringing System Level Programming to the Mass'
Tujuan pembuatan tutorial ini adalah 'Bringing System Level Programming to the Mass'

More info:

Published by: api-26804375 on Oct 16, 2008
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, DOC, TXT or read online from Scribd
See More
See less

03/18/2014

pdf

text

original

 
Tutorial Pemrograman Bahasa C danAssembly
oleh Darmawan MS a.k.a Pinczakko
 
Daftar Isi
o
o
o
o
o
o
CreditsArtikel ini pada dasarnya adalah follow up dari artikel Tutorial Membuat Patch dalam Bentuk Driver padaWindows 2000/XP. Sebagian source code yang akan dipelajari pada tulisan ini adalah source code dariartikel tersebut. Tujuan pembuatan tutorial ini adalah 'Bringing System Level Programming to the Mass'.Tutorial ini sendiri akan terbagi menjadi dua bagian besar, yaitu pemrogaman bahasa C danpemrograman bahasa assembly, namun pada bagian akhir akan kita bahas penggunaan bahasa assemblyyang terintegrasi dalam sebuah source code bahasa C, yang lazim disebut inline assembly. Penulismengikutsertakan bagian yang agak "advanced" ini karena pada source code Tutorial Membuat Patchdalam bentuk Driver pada Windows 2000/XP teknik ini dimanfaatkan. Perlu anda ketahui bahwa bahasaassembly yang akan dibahas pada tulisan ini adalah bahasa assembly untuk arsitektur hardware x86(PC)dan tidak dapat diaplikasikan pada arsitektur hardware lainnya.
Petunjuk:
Bagi yang sudah pernah menggunakan bahasa C sebelumnya, penulis menyarankan untuk langsungmembaca bagian Pointer dan Array, kemudian bagianStruct dan Uniondan dilanjutkan sampai bagian akhir Pemrograman C.
 
Pengetahuan Dasar Pemrograman C dan Assembly
Bagian ini diperuntukkan bagi pembaca yang masih belum mengetahui pemrograman sama sekali atauyang sudah tahu tetapi ingin menyegarkan kembali ingatannya. Kita akan memulai dengan sistembilangan yang digunakan pada komputer. Komputer hanya mengenal nilai 0 dan 1, oleh karena itudigunakanlah beberapa sistem bilangan untuk mempermudah. Sistem bilangan tersebut antara lain:
1.
Bilangan Biner (binary), yaitu bilangan basis 2, sehingga nilai yang dikenal hanya 0 dan 1.Contoh : 101
biner
bernilai sama dengan 5
desimal
, sebab 101
biner
= 1 x 2
0
+ 0 x 2
1
+ 1 x 2
2
atau 5
desimal
.Operasi matematis lainnya sama dengan bilangan desimal, hanya di sini bilangan yang digunakanadalah basis 2.
2.
Bilangan Oktal (octal), yaitu bilangan basis 8, sehingga nilai yang dikenal hanya 0 s/d 7. Contoh :072
octal
(prefix 0 digunakan pada bahasa pemrograman C) bernilai sama dengan 58desimal,sebab 072
octal
= 2 x 8
0
+ 7 x 8
1
atau 58
desimal
. Operasi matematis lainnya sama dengan bilangandesimal, hanya di sini bilangan yang digunakan adalah basis 8.
3.
Bilangan Heksadesimal (Hexadecimal), yaitu bilangan basis 16, sehingga nilai yang dikenal hanya0 s/d 9 dan huruf A s/d F melambangkan 10
desimal
s/d 15
desimal
. Contoh : 0x72
hexadecimal
(prefix 0xdigunakan pada bahasa pemrograman C) bernilai sama dengan 114
desimal
, sebab 0x72
hexadecimal
= 2x 16
0
+ 7 x 16
1
atau 114
desimal
. Operasi matematis lainnya sama dengan bilangan desimal, hanyadi sini bilangan yang digunakan adalah basis 16. Ada satu hal yang perlu anda perhatikan, yaitukonversi dari bilangan biner ke hexadecimal adalah suatu operasi yang "agak natural", sebabanda tinggal memecah bilangan hexadecimal tersebut menjadi elemen-elemennya kemudiansetiap elemen direpresentasikan dengan 4 bilangan biner, maka anda telah memperoleh bilanganbiner yang bernilai sama dengan bilangan hexadecimal tersebut. Contoh: 0xA2 = ...
biner
, solusi:pertama pecah menjadi elemennya , kita peroleh A dan 2. A jika direpresentasikan dalam 4angka biner adalah 1010 (10
desimal
) dan 2 jika direpresentasikan dalam 4 angka biner adalah 0010sehingga kita peroleh 0xA2 = 1010 0010
biner
. Kemudahan operasi ini akan membantu anda saatberurusan dengan pemrograman yang mengolah informasi bilangan biner, jadi sangat perluuntuk dipahami.Pemrograman atau programming secara umum dilakukan untuk membuat sekumpulan instruksi yangdapat dieksekusi (dijalankan) pada komputer. Jadi, instruksi-instruksi yang dapat dijalankan (executable)tersebut merupakan hasil akhir yang kita inginkan. Kumpulan instruksi-instruksi itulah yang disebutsoftware. Instruksi yang dihasilkan biasanya hanya dapat dieksekusi pada satu arsitektur komputer.Instruksi yang dimaksud adalah "machine code" atau "bahasa mesin", bahasa mesin ini tidak lebih darikumpulan bit-bit 0 dan 1 yang dapat dipahami oleh sebuah komputer. Perbedaan satu arsitekturkomputer (misalnya x86
1
) dengan arsitektur lain (misalnya Sparc
2
) adalah bagaimana bit-bit tersebutdiorganisasikan, hal inilah yang menyebabkan machine code untuk satu macam arsitektur tidak dapatdieksekusi pada arsitektur yang lain. Prosesnya kira-kira seperti ini:
Pembuatan Machine Code --> Machine Code --> Eksekusi pada Komputer
Catatan:
1
x86 adalah keluarga microprocessor yang digunakan oleh para pemakai PC, yang termasuk ke dalamkeluarga ini antara lain: Intel 80286, 80386, 80486, Pentium (i586), PentiumPro (i686),Pentium 4 (i786);AMD K6, K6-2, K6-3, Athlon (K7), Duron; Via Cyrix III; Transmeta Crusoe, dan lain-lain.
2
Sparc adalah keluarga microprocessor yang digunakan pada Server-server Sun Microsystem, yangtermasuk ke dalamnya antara lain: UltraSparc II, IIIi, III.Teknik pemrograman merupakan teknik yang digunakan untuk menghasilkan kumpulan machine codetadi. Ketika komputer digital pertama kali muncul (komputer ENIAC), untuk membuat program, orangharus langsung memasukkan bit-bit machine code tadi ke dalam komputer melalui pengaturan saklar-saklar dan punch cards (kartu yang dilubangi). Perkembangan selanjutnya adalah orang tidak perlu lagipusing dengan bit-bit program yang sangat mudah salah (sebab anda langsung bekerja dengan angka 0dan 1 dalam jumlah yang sangat besar), muncul lah apa yang disebut assembler, yaitu program yangdapat mengubah token-token (potongan kata-kata tertentu yang dapat dipahami oleh assembler)sederhana menjadi machine code. Karena adanya assembler, orang mulai mengenal apa yang dinamakanbahasa assembly, yaitu bahasa yang menggunakan token-token yang dapat dikenali oleh assembler, jadibahasa assembly satu level lebih maju dibanding bahasa mesin atau machine code. Sejak saat inilahorang mulai mengenal apa yang dikatakan source code , yaitu bentuk program yang belum diolah oleh
 
sebuah bahasa pemrograman menjadi bentuk yang dapat dieksekusi pada komputer. Source codebiasanya berbentuk file yang dapat di edit.Perlu anda ketahui, bahwa saat ini pun anda dapat memprogram dalam machine code jika anda memangbenar-benar menginginkannya. Caranya mudah, anda tinggal mencari program hexeditor, misalnyaHexworkshop kemudian membuat file yang berisi machine code dalam hexadesimal (bilangan basis 16).Penulis beberapa kali melakukan hal ini karena belum mampu menggunakan assembler dengan baik(output file biner yang dihasilkan oleh assembler tidak sesuai dengan yang diharapkan). Sebenarnya jikaanda membaca dan mencoba trik ke-3 pada artikel Trik Modifikasi Bios, anda telah memprogram denganmenggunakan machine code untuk microprocessor keluarga x86. Jadi, cukup mudah bukan :).Dalam tutorial ini kita akan belajar tentang assembler. Assembler pada dasarnya bekerja dengan cara"mencocokkan (matching)". Setiap baris perintah yang anda tulis dalam bahasa assembly akan diasosiasikan dengan satu machine code tertentu, sehingga pada assembler setiap baris perintah yang andaketikkan akan menghasilkan satu machine code. Jadi jika anda menggunakan assembler, prosesnya akankurang lebih seperti ini (tentang linker akan dijelaskan lebih lanjut): 
Pembuatan Source Code Assembly|
 
V
 
Source Code Assembly|
 
V
 
Assembler|
 
Vlibrary,objectfile-->Linker|
 
V
 
Machine Code|
 
V
 
Eksekusi pada komputer
Perkembangan selanjutnya adalah bahasa tingkat menengah, yaitu bahasa pemrograman C. Pada bahasapemrograman ini, machine code dihasilkan melalui tahap yang lebih panjang. Mungkin anda bertanya,kalau orang sudah bisa membuat program dengan assembler, mengapa harus ada bahasa C ? , jawabannya adalah bahasa assembly masih terlalu "machine oriented", sukar dipahami dan bahasanyalebih dekat kepada machine code daripada ke bahasa manusia, alasan lain adalah karena denganmembuat bahasa yang levelnya lebih tinggi (lebih dekat ke bahasa manusia) maka pengembanganperangkat lunak (software) akan lebih cepat, masih ada satu alasan lagi dan mungkin yang terpentingyaitu bahasa assembly hanya dapat dieksekusi oleh satu macam arsitektur komputer saja seperti yangdisebutkan sebelumnya. Jika kita dapat membuat program yang dapat berjalan di berbagai macamarsitektur komputer maka itu akan mempercepat pengembangan software. Namun demikian, itu tidakberarti bahwa setiap program yang ditulis dengan bahasa C akan dapat berjalan pada semua mesin.Misalnya, program driver yang di buat pada Tutorial Membuat Patch ... yang akan kita bahas adalahprogram C yang tidak portable (dapat digunakan pada komputer dengan arsitektur yang berbeda), karenatidak dapat dieksekusi di luar arsitektur komputer x86 yang menggunakan system bus PCI compliant.Software yang dijamin portable biasanya adalah software yang tidak mengutak-atik sistem, atau yangmenggunakan API(Application Programming Interface) standar dan tersedia di berbagai arsitekturkomputer misalnya software yang menggunakan OpenGL atau yang dibuat dengan kriteria ANSI C.Berikut ini adalah langkah-langkah pembuatan program dengan bahasa C (tentang preprocessor, compiler& linker akan dijelaskan lebih lanjut):

You're Reading a Free Preview

Download
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->