<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Teknikkomputer09&#039;s Blog</title>
	<atom:link href="http://teknikkomputer09.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://teknikkomputer09.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Fri, 17 Sep 2010 17:04:45 +0000</lastBuildDate>
	<language>id</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='teknikkomputer09.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/a207f2f75a3c1c339a4d27791528104f?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Teknikkomputer09&#039;s Blog</title>
		<link>http://teknikkomputer09.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://teknikkomputer09.wordpress.com/osd.xml" title="Teknikkomputer09&#039;s Blog" />
	<atom:link rel='hub' href='http://teknikkomputer09.wordpress.com/?pushpress=hub'/>
		<item>
		<title>cheat</title>
		<link>http://teknikkomputer09.wordpress.com/2010/08/16/cheat/</link>
		<comments>http://teknikkomputer09.wordpress.com/2010/08/16/cheat/#comments</comments>
		<pubDate>Mon, 16 Aug 2010 14:44:37 +0000</pubDate>
		<dc:creator>teknikkomputer09</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://teknikkomputer09.wordpress.com/?p=156</guid>
		<description><![CDATA[<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=teknikkomputer09.wordpress.com&amp;blog=10637153&amp;post=156&amp;subd=teknikkomputer09&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=teknikkomputer09.wordpress.com&amp;blog=10637153&amp;post=156&amp;subd=teknikkomputer09&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://teknikkomputer09.wordpress.com/2010/08/16/cheat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d6252cda6951f64eba48d0bd3438ee7?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">teknikkomputer09</media:title>
		</media:content>
	</item>
		<item>
		<title>Distro linux</title>
		<link>http://teknikkomputer09.wordpress.com/2009/11/29/distro-linux/</link>
		<comments>http://teknikkomputer09.wordpress.com/2009/11/29/distro-linux/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 11:43:59 +0000</pubDate>
		<dc:creator>teknikkomputer09</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://teknikkomputer09.wordpress.com/?p=145</guid>
		<description><![CDATA[Siapa saja boleh bersama-sama mengembangkan Linux dan menggunakannya. Oleh karena linux tidak dapat di monopoli oleh seseorang, institusi, lembaga atau apapun namanya. Konsekwensinya adalah banyaknya linux yang dikemas dan dikembangkan oleh vendor/perusahaan menjadi suatu sistem operasi yang lengkap, yang biasanya dikenal dengan istilah Distribusi Linux atau “Distro Linux”. Beberapa distribusi linux diantaranya sebagai berikut : [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=teknikkomputer09.wordpress.com&amp;blog=10637153&amp;post=145&amp;subd=teknikkomputer09&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Siapa saja boleh bersama-sama mengembangkan Linux dan menggunakannya. Oleh karena linux tidak dapat di monopoli oleh seseorang, institusi, lembaga atau apapun namanya. Konsekwensinya adalah banyaknya linux yang dikemas dan dikembangkan oleh vendor/perusahaan menjadi suatu sistem operasi yang lengkap, yang biasanya dikenal dengan istilah Distribusi Linux atau “Distro Linux”. Beberapa distribusi linux diantaranya sebagai berikut :<br />
Adios<br />
Alt Linux<br />
Arch Linux<br />
ASP Linux<br />
Astaro Linux<br />
Aurox Linux<br />
Bayanihan Linux<br />
Beehive Linux<br />
Best Linux<br />
Blue Linux<br />
Conectiva Linux<br />
ClusterKnoppix<br />
Corel Linux<br />
Debian GNU/Linux<br />
Eagle Linux<br />
Easy Linux<br />
Elk Linux</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/teknikkomputer09.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/teknikkomputer09.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/teknikkomputer09.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/teknikkomputer09.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/teknikkomputer09.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/teknikkomputer09.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/teknikkomputer09.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/teknikkomputer09.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/teknikkomputer09.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/teknikkomputer09.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/teknikkomputer09.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/teknikkomputer09.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/teknikkomputer09.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/teknikkomputer09.wordpress.com/145/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=teknikkomputer09.wordpress.com&amp;blog=10637153&amp;post=145&amp;subd=teknikkomputer09&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://teknikkomputer09.wordpress.com/2009/11/29/distro-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d6252cda6951f64eba48d0bd3438ee7?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">teknikkomputer09</media:title>
		</media:content>
	</item>
		<item>
		<title>Belajar C++</title>
		<link>http://teknikkomputer09.wordpress.com/2009/11/27/belajar-c/</link>
		<comments>http://teknikkomputer09.wordpress.com/2009/11/27/belajar-c/#comments</comments>
		<pubDate>Fri, 27 Nov 2009 07:45:11 +0000</pubDate>
		<dc:creator>teknikkomputer09</dc:creator>
				<category><![CDATA[Belajar C++]]></category>

		<guid isPermaLink="false">http://teknikkomputer09.wordpress.com/?p=116</guid>
		<description><![CDATA[OPERASI MASUKAN DAN KELUARAN Memasukkan data dan menampilkan data/informasi merupakan tindakan yang sering dilakukan dalam pemrograman. Penampilan data/informasi biasanya ditujukan ke piranti layar (monitor), sedangkan pemasukan data biasanya dilakukan melalui keyboard. MENAMPILKAN DATA/INFORMASI KE LAYAR Untuk keperluan penampilan data/informasi, Turbo C menyediakan sejumlah fungsi, diantaranya adalah PRINTF(), PUTS() dan PUTCHAR() PRINTF() Merupakan fungsi yang paling [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=teknikkomputer09.wordpress.com&amp;blog=10637153&amp;post=116&amp;subd=teknikkomputer09&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>OPERASI MASUKAN DAN KELUARAN</strong></p>
<p>Memasukkan data dan menampilkan data/informasi merupakan tindakan yang sering dilakukan dalam pemrograman. Penampilan data/informasi biasanya ditujukan ke piranti layar (monitor), sedangkan pemasukan data biasanya dilakukan melalui keyboard.</p>
<p><strong>MENAMPILKAN DATA/INFORMASI KE LAYAR</strong></p>
<p>Untuk keperluan penampilan data/informasi, Turbo C menyediakan sejumlah fungsi, diantaranya adalah PRINTF(), PUTS() dan PUTCHAR()<span id="more-116"></span></p>
<p><strong>PRINTF()</strong></p>
<p>Merupakan fungsi yang paling umum digunakan dalam menampilkan data. Berbagai jenis data dapat ditampilkan ke layar dengan fungsi ini.</p>
<p>Bentuk penulisan :         printf(“string kontrol”, argumen1, argumen2, …);</p>
<ul>
<li>§         String kontrol dapat berupa keterangan yang akan ditampilkan pada layar beserta penentu format seperti %d, %f. Penentu format dipakai untuk memberi tahu kompiler mengenai jenis data yang akan ditampilkan</li>
<li>§         Argumen adalah data yang akan ditampilkan ke layar. Argumen ini dapatr berupa variabel, konstanta atau ungkapan</li>
</ul>
<p>Contoh :</p>
<p>#include &lt;stdio.h&gt;</p>
<p>main()</p>
<p>{</p>
<p>int nilai1=20;</p>
<p>float nilai2=2000.0;</p>
<p>clrscr();</p>
<p>printf(“Abad ke-%d\n”, nilai1);</p>
<p>printf(“Abad ke-%3d\n”, nilai1);</p>
<p>printf(“Abad ke-%7d\n”, nilai1);</p>
<p>printf(“Tahun %f\n”, nilai2);</p>
<p>printf(“Tahun %8.3f\n”, nilai2);</p>
<p>printf(“Tahun %8.0f\n”, nilai2);</p>
<p>printf(“Tahun %-8.0f\n”, nilai2);</p>
<p>getch();</p>
<p>}</p>
<p>Hasil :</p>
<p>Abad ke-20</p>
<p>Abad ke- 20</p>
<p>Abad ke-     20</p>
<p>Tahun 2000.000000</p>
<p>Tahun 2000.000</p>
<p>Tahun     2000</p>
<p>Tahun 2000</p>
<p><strong>PUTS()</strong></p>
<p>Fungsi ini digunakan khusus untuk menampilkan data string ke layar. Sifat fungsi ini, string yang ditampilkan secara otomatis akan diakhiri dengan \n (pindah baris). Dibandingkan dengan printf(), perintah ini mempunyai kode mesin yang lebih pendek.</p>
<p>Contoh :</p>
<p>#include &lt;stdio.h&gt;</p>
<p>main()</p>
<p>{</p>
<p>clrscr();</p>
<p>puts(“kucoba dan kucoba”);</p>
<p>puts(“kini ku mulai memahaminya”);</p>
<p>getch();</p>
<p>}</p>
<p>Hasil :</p>
<p>kucoba dan kucoba</p>
<p>kini ku mulai memahaminya</p>
<p><strong>PUTCHAR()</strong></p>
<p>Digunakan khusus untuk menampilkan sebuah karakter ke layar. Penampilan karakter tidak diakhiri dengan perpindahan baris, misalnya :</p>
<p>putchar(‘A’); sama dengan printf(“%c”, A);</p>
<p>Contoh :</p>
<p>#include &lt;stdio.h&gt;</p>
<p>main()</p>
<p>{</p>
<p>clrscr();</p>
<p>putchar(‘A’);</p>
<p>putchar(‘B’);</p>
<p>putchar(‘C’);</p>
<p>getch();</p>
<p>}</p>
<p>Hasil :</p>
<p>ABC</p>
<p><strong>MEMASUKKAN DATA DARI KEYBOARD</strong></p>
<p>Data dapat dimasukkan lewat keyboard saat eksekusi berlangsung. Fungsi yang digunakan diantaranya adalah : scanf(), getch(), dan getche().</p>
<p><strong>SCANF()</strong></p>
<p>Merupakan fungsi yang dapat digunakan untuk memasukkan berbagai jenis data. Bentuk scanf() sesungguhnya menyerupai fungsi printf() yang melibatkan penentu format. Bentuk penulisan : scanf(“string kontrol”, daftar argumen);</p>
<p>Hal-hal yang perlu diperhatikan dalam pemakaian scanf  yaitu :</p>
<p>1.       scanf memberi pergantian baris secara otomatis, artinya Anda tidak perlu memberi \n untuk berpindah ke baris berikutnya.</p>
<p>2.       scanf memakai penentu format, tetapi tidak memerlukan penentu lebar field. Contoh yang salah : scanf(“10.2f”,&amp;gaji);</p>
<p>3.       Variabel yang dipakai di dalam scanf harus didahului dengan operator alamat (<strong><em>&amp;</em></strong>).</p>
<p>Contoh :</p>
<p>/* Program Hitung Gaji */</p>
<p>#include &lt;stdio.h&gt;</p>
<p>main()</p>
<p>{</p>
<p>float gaji,tunj,GAJI;</p>
<p>clrscr();</p>
<p>printf(“Masukkan Gaji Pokok    = Rp. “);</p>
<p>scanf(“%f”,&amp;gaji);</p>
<p>tunj = 0.1 * gaji;</p>
<p>GAJI = gaji + tunj; /* gaji total*/</p>
<p>printf(“\nTunjangan    = Rp. %6.2f”,tunj);</p>
<p>printf(“\nGaji Total   = Rp. %6.2f”,GAJI);</p>
<p>getch();</p>
<p>}</p>
<p>Hasil :</p>
<p>Masukkan Gaji Pokok     = Rp. 1000000</p>
<p>Tunjangan       = Rp. 100000.00</p>
<p>Gaji Total         = Rp. 1100000.00</p>
<p><strong>MEMASUKKAN BEBERAPA DATA SECARA BERSAMA-SAMA</strong></p>
<p>Data dapat dimasukkan secara bersama-sama dalam satu baris. Setiap data dipisahkan oleh sebuah karakter. Karakter-karakter yang dapat bertindak sebagai pemisah data adalah :</p>
<ul>
<li>§         Koma (‘)</li>
<li>§         Garis hubung (-)</li>
<li>§         Titik dua (:)</li>
<li>§         Spasi</li>
</ul>
<p>Contoh :</p>
<p>#include &lt;stdio.h&gt;</p>
<p>main()</p>
<p>{</p>
<p>int bil1,bil2,bil3;</p>
<p>clrscr();</p>
<p>printf(“Masukkan 3 buah bilangan bulat : “);</p>
<p>scanf(“%d-%d-%d”,&amp;bil1,&amp;bil2,&amp;bil3);</p>
<p>printf(“\nBilangan pertama : %3d”,bil1);</p>
<p>printf(“\nBilangan kedua   : %3d”,bil2);</p>
<p>printf(“\nBilangan ketiga  : %3d”,bil3);</p>
<p>getch();</p>
<p>}</p>
<p>Hasil :</p>
<p>Masukkan 3 buah bilangan bulat : 12-24-48</p>
<p>Bilangan pertama          : 12</p>
<p>Bilangan kedua  : 24</p>
<p>Bilangan ketiga  : 48</p>
<p>Anda harus memasukkan data dengan cara : 12-24-48 (sesuai dengan tanda pemisah data pada scanf)</p>
<p><strong>GETCH() dan GETCHE()</strong></p>
<p>Dipakai untuk membaca sebuah karakter dengan sifat karakter yang dimasukkan tidak perlu diakhiri dengan enter. Fungsi getch() merupakan singkatan dari<em> get character</em> artinya baca karakter tetapi isian data yang dimasukkan tidak akan ditampilkan di layar.</p>
<p>Contoh :</p>
<p>#include &lt;stdio.h&gt;</p>
<p>main()</p>
<p>{</p>
<p>char karakter;</p>
<p>clrscr();</p>
<p>printf(“Ketik sebuah karakter : “);</p>
<p>karakter=getch();</p>
<p>printf(“\nKarakter yang anda ketik adalah : %c”,karakter);</p>
<p>getche();</p>
<p>}</p>
<p>Hasil :</p>
<p>Ketik sebuah karakter :</p>
<p>Karakter yang anda ketik adalah : A</p>
<p>Nama fungsi getche() sebenarnya adalah singkatan dari <em>get character and echo</em>, artinya baca karakter lalu tampilkan di layar. Jadi setelah mengetikkan sebuah huruf, huruf tersebut akan ditampilkan di layar tanpa menekan enter.</p>
<p>Catatan :</p>
<ul>
<li>§         Program yang menggunakan printf(), putchar(), scanf() dan puts() mengandung baris yang berisi #include &lt;stdio.h&gt;</li>
<li>§         Program yang melibatkan getche() atau getch() mengandung baris yang berisi           #include &lt;conio.h&gt;</li>
</ul>
<p><strong><em> </em></strong></p>
<p><strong>FUNGSI-FUNGSI NUMERIK</strong></p>
<p>Turbo C mempunyai kurang lebih 450 fungsi dan makro yang dapat dipanggil dari program yang telah dibuat. Fungsi-fungsi tersebut meliputi berbagai hal, misalnya :</p>
<ul>
<li>§         Proses Input Output tingkat tinggi dan tingkat rendah</li>
<li>§         Manipulasi string dan file</li>
<li>§         Alokasi memori</li>
<li>§         Kontrol Proses</li>
<li>§         Konversi data</li>
<li>§         Perhitungan matematik</li>
</ul>
<p>Fungsi-fungsi tersebut ada di dalam file library-nya (Cx.LIB, Mathx.LIB dan Graphics.LIB). Huruf x diganti dengan model memori yang dipakai.</p>
<p>Fungsi-fungsi tersebut disimpan di dalam file header (*.H). Fungsi tersebut dapat digabungkan ke dalam program dengan menyertakan file header yang mengandung fungsi atau rutin yang dipakai.</p>
<p><strong>FUNGSI SQRT</strong></p>
<p>Fungsi   :  Menghitung akar positif dari sebuah bilangan bulat</p>
<p>Include             :  #include &lt;math.h&gt;</p>
<p>Contoh :</p>
<p>#include &lt;math.h&gt;</p>
<p>main()</p>
<p>{</p>
<p>double x,y;</p>
<p>clrscr();</p>
<p>printf(“\nMasukkan sebuah bilangan :”); scanf(“%lf”,&amp;x);</p>
<p>y = sqrt(x);</p>
<p>printf(“\n\nAkar dari %6.2lf adalah %6.2lf”,x,y);</p>
<p>getch();</p>
<p>}</p>
<p><strong>FUNGSI POW</strong></p>
<p>Fungsi               : Menghitung x<sup>y</sup></p>
<p>Include             : #include &lt;math.h&gt;</p>
<p>Contoh :</p>
<p>#include &lt;math.h&gt;</p>
<p>main()</p>
<p>{</p>
<p>double x,y,z;</p>
<p>clrscr();</p>
<p>printf(“\nMenghitung x pangkat y\n”);</p>
<p>printf(“\nMasukkan nilai x :”); scanf(“%lf”,&amp;x);</p>
<p>printf(“\nMasukkan nilai y :”); scanf(“%lf”,&amp;y);</p>
<p>z = pow(x,y);</p>
<p>printf(“\n\nNilai %6.2lf Pangkat %6.2lf adalah %6.2lf”,x,y,z);</p>
<p>getch();</p>
<p>}</p>
<p><strong>FUNGSI TAN</strong></p>
<p>Fungsi   : Menghitung nilai tangent dari sebuah sudut</p>
<p>Include             : #include &lt;math.h&gt;</p>
<p>Fungsi tan menghitung nilai tangent dari sudut x. Sudut x dalam satuan radian. Jika sudut x yang diberikan dekat dengan phi/2 atau –phi/2, hasilnya adalah 0.</p>
<p><strong>FUNGSI DIV</strong></p>
<p>Fungsi               : Membagi dua bilangan bulat, memberikan hasil bagi dan sisanya</p>
<p>Include             : #include &lt;stdlib.h&gt;</p>
<p>Contoh :</p>
<p>#include &lt;stdlib.h&gt;</p>
<p>main()</p>
<p>{</p>
<p>int x,y;</p>
<p>div_t hasil;</p>
<p>clrscr();</p>
<p>printf(“Contoh fungsi — div —”);</p>
<p>printf(“\n\nMasukkan nilai x :”); scanf(“%d”,&amp;x);</p>
<p>printf(“\n\nMasukkan nilai y :”); scanf(“%d”,&amp;y);</p>
<p>hasil = div(x,y);</p>
<p>printf(“\n\n%-3d DIV %3d = %3d sisa %3d”,x,y,hasil.quot,hasil.rem);</p>
<p>getch();</p>
<p>}</p>
<p><strong>FUNGSI CEIL</strong></p>
<p>Fungsi               : Membulatkan ke atas</p>
<p>Include             : #include &lt;math.h&gt;</p>
<p>Contoh :</p>
<p>#include &lt;math.h&gt;</p>
<p>main()</p>
<p>{</p>
<p>double x,hasil;</p>
<p>clrscr();</p>
<p>printf(“Contoh fungsi — ceil —”);</p>
<p>printf(“\n\nMasukkan sebuah bilangan :”); scanf(“%lf”,&amp;x);</p>
<p>hasil = ceil(x);</p>
<p>printf(“\n\nHasil pembulatan ke atas bilangan %6.2lf adalah %6.2lf”, x,hasil);</p>
<p>getch();</p>
<p>}</p>
<p><strong>FUNGSI FLOOR</strong></p>
<p>Fungsi               : Membulatkan ke bawah</p>
<p>Include             : #include &lt;math.h&gt;</p>
<p>Fungsi floor menghasilkan bilangan bulat terbesar yang tidak lebih dari x</p>
<p><strong>FUNGSI EXP</strong></p>
<p>Fungsi   : Menghitung e<sup>x</sup></p>
<p>Include : #include&lt;math.h&gt;</p>
<p>Contoh :</p>
<p>#include &lt;math.h&gt;</p>
<p>main()</p>
<p>{</p>
<p>double x,hasil;</p>
<p>clrscr();</p>
<p>printf(“Contoh fungsi — exp —”);</p>
<p>printf(“\n\nMasukkan sebuah bilangan :”); scanf(“%lf”,&amp;x);</p>
<p>hasil = exp(x);</p>
<p>printf(“\n\nHasil e pangkat %6.2lf adalah %6.2lf”, x,hasil);</p>
<p>getch();</p>
<p>}</p>
<p><strong>FUNGSI MAX</strong></p>
<p>Fungsi   : Memberikan bilangan yang lebih besar dari 2 bilangan yang diberikan</p>
<p>Include             : #include&lt;stdlib.h&gt;</p>
<p>Contoh :</p>
<p>#include &lt;stdlib.h&gt;</p>
<p>main()</p>
<p>{</p>
<p>float a,b,c;</p>
<p>clrscr();</p>
<p>printf(“Contoh fungsi — max —”);</p>
<p>printf(“\n\nMasukkan nilai pertama :”); scanf(“%f”,&amp;a);</p>
<p>printf(“\n\nMasukkan nilai kedua   :”); scanf(“%f”,&amp;b);</p>
<p>c = max (a,b);</p>
<p>printf(“\n\nNilai terbesar dari bilangan %5.1f dan %5.1f adalah %5.1f”, a,b,c);</p>
<p>getch();</p>
<p>}</p>
<p><strong>FUNGSI MIN</strong></p>
<p>Fungsi   : Memberikan bilangan yang lebih kecil dari 2 bilangan yang diberikan</p>
<p>Include             : #include&lt;stdlib.h&gt;</p>
<p><strong>LATIHAN</strong></p>
<p>1.       Nilai akhir dari pelajaran Bahasa C ditentukan oleh tiga nilai yaitu :</p>
<ul>
<li>Nilai      Praktek                 bobot 20%</li>
<li>Nilai UTS                     bobot 30%</li>
<li>Nilai UAS                     bobot 50%</li>
</ul>
<p>Buatlah program untuk menghitung nilai akhir !</p>
<p>2.       Perusahaan telepon di kota “A” mempunyai tarif Rp. 250,- per pulsa. Setiap langganan dikenakan biaya langganan sebesar Rp. 20.000,- per bulan. Buatlah program untuk menghitung tagihan langganan dengan menggunakan konstanta !</p>
<p>3.       Buatlah program untuk menghitung panjang sisi miring segitiga siku-siku !</p>
<p>4.       Buatlah program untuk menghitung  Keliling, Luas Permukaan dan Isi dari sebuah bola dengan rumus :</p>
<ul>
<li>Keliling      = 2 p r</li>
<li>Luas      Permukaan = 4/3 p r<sup>3</sup></li>
<li>Isi = 4 p r<sup>2</sup></li>
</ul>
<p>5.       Tinggi menara dapat dihitung dengan mengukur  sudut elevasi dan jarak antara pengamat terhadap kaki menara. Tinggi menara dapat dinyatakan dengan rumus</p>
<p>Tinggi = jarak * tangen (sudut elevasi)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/teknikkomputer09.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/teknikkomputer09.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/teknikkomputer09.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/teknikkomputer09.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/teknikkomputer09.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/teknikkomputer09.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/teknikkomputer09.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/teknikkomputer09.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/teknikkomputer09.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/teknikkomputer09.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/teknikkomputer09.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/teknikkomputer09.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/teknikkomputer09.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/teknikkomputer09.wordpress.com/116/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=teknikkomputer09.wordpress.com&amp;blog=10637153&amp;post=116&amp;subd=teknikkomputer09&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://teknikkomputer09.wordpress.com/2009/11/27/belajar-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d6252cda6951f64eba48d0bd3438ee7?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">teknikkomputer09</media:title>
		</media:content>
	</item>
		<item>
		<title>Apa itu LINUX</title>
		<link>http://teknikkomputer09.wordpress.com/2009/11/24/apa-itu-linux-2/</link>
		<comments>http://teknikkomputer09.wordpress.com/2009/11/24/apa-itu-linux-2/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 18:31:13 +0000</pubDate>
		<dc:creator>teknikkomputer09</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://teknikkomputer09.wordpress.com/?p=37</guid>
		<description><![CDATA[Linux adalah Operating System seperti UNIX, yang merupakan implementasi independen dari POSIX, meliputi true-multitasking, virtual memory, shared libraries, demand-loading, proper memory management, dan multiuser. Linux seperti layaknya UNIX, mendukung banyak software mulai dari TEX, X Window, GNU C/C++ sampai ke TCP/IP. Linux adalah sistem operasi yang disebarkan secara luas dengan gratis di bawah lisensi GNU [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=teknikkomputer09.wordpress.com&amp;blog=10637153&amp;post=37&amp;subd=teknikkomputer09&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Linux adalah Operating System seperti UNIX, yang merupakan implementasi independen dari POSIX, meliputi true-multitasking, virtual memory,<br />
shared libraries, demand-loading, proper memory management, dan multiuser.</p>
<p>Linux seperti layaknya UNIX, mendukung banyak software mulai dari TEX, X Window, GNU C/C++ sampai ke TCP/IP.</p>
<p>Linux adalah sistem operasi yang disebarkan secara luas dengan gratis di bawah lisensi GNU General Public License (GPL),<br />
yang berarti juga source code Linux tersedia. Itulah yang membuat Linux sangat spesial.</p>
<p><span id="more-37"></span>Linux masih dikembangkan oleh kelompok-kelompok tanpa dibayar, yang banyak dijumpai di Internet, tukar-menukar kode,<br />
melaporkan bug, dan membenahi segala masalah yang ada. Setiap orang yang tertarik dipersilahkan untuk bergabung dalam pengembangan Linux.</p>
<p>Linux pertama kali dibuat oleh Linus Torvalds di Universitas Helsinki, Finlandia. Kemudian Linux dikembangkan lagi dengan bantuan dari<br />
banyak programmer dan jagoan UNIX di Internet. Sekarang Linux bisa diperoleh dari distribusi-distribusi yang umum digunakan,<br />
misalnya RedHat, Debian, Slackware, Caldera, Stampede Linux, TurboLinux dan lain-lain. Kernel yang digunakan adalah sama-sama Linux,<br />
sedangkan perbedaannya hanyalah paket-paket aplikasi yang disertakan, sistem penyusunan direktori, init style, dll.</p>
<p>Mana yang lebih baik? Semua sama baiknya, tergantung selera. Jika diperdebatkan kelebihan dan kekurangan masing-masing, tidak akan pernah ada habisnya.</p>
<p>Linux dulunya adalah proyek hobi yang dikerjakan oleh Linus Torvalds yang memperoleh inspirasi dari Minix. Minix adalah sistem UNIX kecil yang<br />
dikembangkan oleh Andy Tanenbaum. Linux versi 0.01 dikerjakan sekitar bulan Agustus 1991. Kemudian pada bulan Oktober 1991 tanggal 5,<br />
Linus mengumumkan versi resmi Linux, yaitu 0.02 yang hanya dapat menjalankan bash (GNU Bourne Again Shell) dan gcc (GNU C Compiler).</p>
<p>Sekarang Linux adalah sistem UNIX yang lengkap, bisa digunakan untuk jaringan (networking), pengembangan software, dan bahkan untuk sehari-hari.<br />
Linux sekarang merupakan alternatif OS yang jauh lebih murah jika dibandingkan dengan OS komersial, dengan kemampuan Linux yang setara bahkan lebih.</p>
<p>· Mengapa pakai Linux?</p>
<p>Lisensi<br />
——–<br />
Linux, sering juga disebut GNU/Linux, adalah operating sistem yang kompatible dengan Unix, berisi kernel Linux itu sendiri dan sekumpulan lengkap<br />
alat-alat dan program-program lain, yang kebanyakan di bawah naungan proyek GNU dari Free Software Foundation.<br />
Tampilan grafis atau Graphical User Interface (GUI) disediakan oleh X Window System beserta kumpulan libraries dan alat-alatnya.</p>
<p>Semua software ini bisa didapat gratis berdasarkan lisensi GNU General Public License atau lisensi-lisensi lain yang mirip dengan itu.<br />
Berdasarkan lisensi ini, siapa pun bisa mendapatkan program baik dalam bentuk source code (bisa dibaca manusia) mau pun binary (bisa dibaca mesin),<br />
sehingga program tersebut dapat diubah, diadaptasi, mau pun dikembangkan lebih lanjut oleh siapa saja.</p>
<p>Karena banyak sekali program-program maupun komponen software (biasanya tergabung dalam “paket”;) yang membentuk sebuah sistem Linux yang lengkap,<br />
dan kesemuanya itu diurus oleh banyak orang dan organisasi dalam jadwal yang berbeda-beda, maka beberapa perusahaan dan organisasi mengumpulkan<br />
paket-paket tersebut menjadi satu distribusi (distro). Tapi tidak itu saja, mereka juga melakukan tes-tes terhadap software di dalamnya,<br />
mengembangkan program-program instalasi atau yang memudahkan instalasi, sebagian ada yang memberikan technical support, dan sebagainya.<br />
Ada distribusi komersial seperti Red Hat, Caldera, SuSE, dan ada juga distribusi yang non-komersial seperti Debian GNU/Linux.<br />
Baik distribusi komersial mau pun non-komersial tersedia tanpa dipungut biaya di internet, dan juga di media seperti<br />
CD-ROM (anda bayar ongkos media plus ongkos kirim tentunya). Perbedaan mendasar antara komersial dan non-komersial<br />
adalah bahwa produk komersial didukung oleh perusahaan yang menyediakan technical support, dan mungkin juga menyediakan beberapa<br />
software komersial lain yang tidak bisa didistribusikan secara gratis. Hal ini tentunya penting di lingkungan bisnis tertentu.</p>
<p>Sejarah<br />
——–<br />
Walaupun Linux bukanlah sistem Unix yang resmi, Linux mempunyai dasar warisan, budaya, arsitektur dan pengalaman operating sistem Unix selama 28 tahun lebih.<br />
Sejak munculnya Linux source code (tahun 1991) kernel Linux telah diteliti (review) dan disempurnakan oleh (minimal) puluhan ribu programmer<br />
di seluruh dunia. Sebagian besar program-program GNU dan X Window System telah ada lebih lama dari Linux dan telah diteliti lebih seksama.</p>
<p>Source code dari operating system saingan, seperti Windows 95 dan Windows NT, tidak tersedia untuk umum, sehingga tidak bisa diteliti oleh khalayak ramai.<br />
Desain dari sistem yang demikian tidak menikmati perkembangan sejarah dari sistem-sistem Unix.</p>
<p>Pengguna Linux<br />
——————<br />
Linux diperkirakan mempunyai kurang lebih 7.500.000 pengguna, dan angka itu bertambah terus setiap harinya dengan sangat pesat.</p>
<p>Interaksi dengan OS lain<br />
Linux bisa berinteraksi dengan operating sistem lain melalui tiga cara: kompatibilitas file dan filesystem, kompatibilitas network,<br />
dan emulasi (simulasi) operating sistem.</p>
<p>Linux bisa menggunakan file-file dari operating sistem lain, dalam artian bisa membaca dan menulis format file tersebut. Sehingga (hard)disk<br />
maupun disket-disket dari OS/2, NT, DOS/Windows, Apple Macintosh, Unix, dan sistem-sistem lain, bisa dibaca (dalam banyak hal juga ditulis)<br />
dengan mudah oleh Linux. Hampir semua format file standar industri didukung oleh aplikasi-aplikasi Linux, kecuali beberapa format yang<br />
spesifik vendor atau produk.</p>
<p>Di tingkat networking, Linux bisa bekerja sama dengan baik sekali dengan operating sistem lainnya. Linux mempunyai dukungan TCP/IP yang sangat bagus,<br />
dan juga mempunyai dukungan SMB untuk Microsoft file sharing and printing melalui paket Samba, Apple file and printer sharing lewat netatalk,<br />
dan IPX/SPX (Novell) file sharing lewat paket Mars NWE (dan paket komersial dari Caldera).</p>
<p>Dalam lingkungan campuran Windows/Linux, menggunakan Samba server dan sistem smbclient, komputer Linux akan tampil di Network Neighborhood dari<br />
sistem Windows, hampir tidak bisa dibedakan dengan NT. Komputer Linux juga akan mempunyai akses penuh ke file dan printer yang di-share dari WFWG,<br />
Windows 95, maupun Windows NT.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/teknikkomputer09.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/teknikkomputer09.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/teknikkomputer09.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/teknikkomputer09.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/teknikkomputer09.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/teknikkomputer09.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/teknikkomputer09.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/teknikkomputer09.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/teknikkomputer09.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/teknikkomputer09.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/teknikkomputer09.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/teknikkomputer09.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/teknikkomputer09.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/teknikkomputer09.wordpress.com/37/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=teknikkomputer09.wordpress.com&amp;blog=10637153&amp;post=37&amp;subd=teknikkomputer09&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://teknikkomputer09.wordpress.com/2009/11/24/apa-itu-linux-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d6252cda6951f64eba48d0bd3438ee7?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">teknikkomputer09</media:title>
		</media:content>
	</item>
		<item>
		<title>Belajar Assembly di Linux</title>
		<link>http://teknikkomputer09.wordpress.com/2009/11/23/belajar-assembly-di-linux/</link>
		<comments>http://teknikkomputer09.wordpress.com/2009/11/23/belajar-assembly-di-linux/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 14:36:58 +0000</pubDate>
		<dc:creator>teknikkomputer09</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://teknikkomputer09.wordpress.com/?p=3</guid>
		<description><![CDATA[Bagi seseorang yang bergelut di dunia security bahasa Assembly adalah bahasa yang wajib dikuasai. Karena bahasa ini adalah bahasa tingkat rendah, dekat dengan bahasa mesin (biner), maka mempelajari bahasa ini akan sangat menguntungkan. Dengan mempelajari bahasa assembly, sedikit banyak secara otomatis kita akan memahami cara komputer bekerja lebih dalam lagi. Artikel ini juga sebagai pembuka [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=teknikkomputer09.wordpress.com&amp;blog=10637153&amp;post=3&amp;subd=teknikkomputer09&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Bagi seseorang yang bergelut di dunia security bahasa Assembly adalah bahasa yang wajib dikuasai. Karena bahasa ini adalah bahasa tingkat rendah, dekat dengan bahasa mesin (biner), maka mempelajari bahasa ini akan sangat menguntungkan. Dengan mempelajari bahasa assembly, sedikit banyak secara otomatis kita akan memahami cara komputer bekerja lebih dalam lagi.</p>
<p>Artikel ini juga sebagai pembuka sebelum saya membahas mengenai shellcode, buffer overflow dan teknik exploitasi lain yang membutuhkan pemahaman mengenai assembly dan sistem operasi. Bila anda ingin menjadi hacker yang baik, anda wajib menguasai bahasa ini.<span id="more-3"></span></p>
<p><strong>Bahasa Mesin, Assembly dan C<br />
</strong></p>
<p>Pada dasarnya komputer adalah makhluk digital yang hanya mengerti digit 1 dan digit 0 (binary). Komputer hanya mau menerima data dalam bentuk binary dan juga hanya bisa mengerti perintah dalam bentuk binary. Perintah dalam bentuk binary ini disebut dengan bahasa mesin.</p>
<p>Secara umum program bisa dilihat sebagai urutan langkah/perintah/instruksi untuk menyelesaikan sesuatu. Programmer bisa langsung membuat program dengan menuliskan perintah dalam bentuk 1 dan 0 (bahasa mesin), atau menggunakan bahasa tingkat tinggi yang lebih manusiawi seperti C, Visual Basic atau Java.</p>
<blockquote><p>Hanya dua simbol yang dimengerti komputer, yaitu 1 dan 0</p></blockquote>
<p>Perhatikan contoh sederhana ini: programmer ingin menyimpan nilai  register EAX ke dalam stack. Dalam bahasa mesin programmer harus menuliskan 01010000. Sedangkan dalam bahasa assembly programmer cukup menulis PUSH EAX. Manakah yang lebih manusiawi? Tentu menggunakan assembly lebih manusiawi. Sangat sulit bagi manusia bila harus selalu menggunakan 1 dan 0 setiap memberi perintah.</p>
<p><a href="http://www.ilmuhacking.com/wp-content/uploads/2009/10/codeinbinary.jpg"><img title="codeinbinary" src="http://www.ilmuhacking.com/wp-content/uploads/2009/10/codeinbinary.jpg" alt="codeinbinary" width="277" height="300" /></a></p>
<p>Semakin tinggi bahasanya, maka semakin manusiawi cara memberi perintahnya. Contohnya bila programmer ingin menampilkan suatu teks di layar monitor, dalam bahasa C programmer cukup menuliskan printf(”Hello World”), mudah dan singkat. Namun dalam bahasa yang lebih rendah seperti assembly, dibutuhkan sekitar 5 langkah untuk menyelesaikan tugas yang sama.</p>
<p>Semua program dalam bahasa apapun dibuatnya, pada akhirnya ketika akan dieksekusi akan diterjemahkan dalam bahasa mesin, karena itulah satu-satunya bahasa yang dimengerti prosesor.</p>
<p><strong>Bahasa Assembly dan Processor</strong></p>
<p>Karena bahasa assembly adalah mnemonic (singkatan) untuk instruksi dalam bahasa mesin. Maka perintah-perintah dalam bahasa assembly terkait erat dengan prosesornya. Setiap prosesor memiliki instruction set masing-masing,sehingga bahasa assembly untuk prosesor Intel akan berbeda dengan assembly untuk prosesor lainnya.  Namun karena intel menguasai pangsa pasar prosesor maka hampir semua produsen prosesor membuat instruksi set yang kompatibel dengan intel.</p>
<blockquote><p>Bahasa assembly adalah mnemonic dari instruksi bahasa mesin (berbentuk binary) yang disebut opcode</p></blockquote>
<p>Dokumentasi lengkap mengenai membuat program dalam prosesor intel, termasuk daftar instruction setnya bisa diperoleh di website resmi intel, di <a href="http://www.intel.com/products/processor/manuals/">intel developer manuals</a>. Dalam artikel ini saya hanya menjelaskan beberapa instruksi dasar yang paling banyak dipakai, selebihnya bisa dilihat di manual yang ada di website intel.</p>
<p><strong>Assembly AT&amp;T dan NASM</strong></p>
<p>Ada dua sintaks bahasa assembly, yaitu dalam format AT&amp;T dan NASM. Sintaks AT&amp;T banyak dipakai dalam lingkungan GNU seperti GNU Assembler, dan menjadi format default GNU Debugger (GDB). Sedangkan format NASM dipakai oleh netwide assembler dan banyak dipakai di lingkungan windows.</p>
<blockquote><p>Perlu dicatat bahwa perbedaan NASM dan AT&amp;T ini hanya masalah sintaks saja, keduanya menghasilkan bahasa mesin yang sama persis</p></blockquote>
<p>Beberapa perbedaan antara format AT&amp;T dan NASM adalah:</p>
<ul>
<li>Baris komentar diawali dengan “;” semicolon untuk NASM. AT&amp;T mengawali komentar dengan # (hash)</li>
<li>Dalam format AT&amp;T, setiap register diawali dengan %. NASM tidak menggunakan %.</li>
<li>Dalam format AT&amp;T, setiap nilai literal (konstanta) diawali dengan $. NASM tidak menggunakan $.</li>
<li>Pada perintah yang menggunakan operand sumber dan tujuan, format AT&amp;T menuliskan tujuan sebagai operand kedua (contoh: CMD &lt;source&gt;,&lt;dest&gt;). Sedangkan NASM menuliskan tujuan sebagai operand pertama (contoh: CMD &lt;dest&gt;,&lt;source&gt;).</li>
</ul>
<p><strong>Register</strong></p>
<p>Register adalah variabel internal yang sudah built-in di dalam prosesor yang bisa dipakai oleh programmer untuk bermacam-macam keperluan. Karena register posisinya di prosesor, bukan di memory, maka menggunakan register sebagai variabel jauh lebih cepat dibanding menggunakan variabel yang dismipan di suatu alamat di memori.</p>
<p>Berikut adalah jenis-jenis register yang ada pada prosesor Intel.</p>
<table border="1">
<tbody>
<tr>
<th>Kategori</th>
<th>Nama</th>
<th>Penjelasan</th>
</tr>
<tr>
<td>General Purpose</td>
<td>EAX, EBX, ECX, EDX</td>
<td>Lebar data 32 bit, boleh diapakai untuk keperluan apa saja. E adalah Extended (karena awalnya register general purpose hanya 16 bit).</td>
</tr>
<tr>
<td></td>
<td>AX,BX,CX,DX</td>
<td>16 bit bawah dari register 32 bit di atas. AX adalah bagian 16 bit bawah dari EAX.</td>
</tr>
<tr>
<td></td>
<td>AH,AL,BH,BL,CH,CL,DH,DL</td>
<td>Bagian 8 bit dari register 16 bit di atas . AH adalah 8 bit atas dari AX. AL adalah 8 bit bawah dari AX.</td>
</tr>
<tr>
<td>Segment Register</td>
<td>CS, SS, DS, ES, FS, GS</td>
<td>Digunakan untuk menunjuk 16 bit awal alamat memori. CS = Code, SS = Stack, DS = Data, ES,FS,GS = Extra segment register</td>
</tr>
<tr>
<td>Offset Register</td>
<td></td>
<td>Digunakan untuk menunjuk 16 bit akhir alamat memori. Alamat memori ditunjukkan dengan gabungan segment dan offset.</td>
</tr>
<tr>
<td></td>
<td>EBP</td>
<td>Dipakai sebagai offset frame dalam stack. Biasanya menunjuk pada bottom of stack frame di suatu fungsi. ESP menunjukkan puncak stack, EBP menunjuk dasar stack.</td>
</tr>
<tr>
<td></td>
<td>ESI</td>
<td>Biasanya dipakai untuk offset string sumber dalam operasi yang melibatkan blok memori.</td>
</tr>
<tr>
<td></td>
<td>EDI</td>
<td>Biasanya dipakai untuk offset string tujuan dalam operasi yang melibatkan blok memori.</td>
</tr>
<tr>
<td></td>
<td>ESP</td>
<td>Stack pointer, menunjukkan puncak dari stack.</td>
</tr>
<tr>
<td>Special</td>
<td>EFLAGS</td>
<td>Tidak bisa dipakai programmer, hanya dipakai prosesor untuk hasil operasi logical dan state.</td>
</tr>
<tr>
<td></td>
<td>EIP</td>
<td>Tidak bisa dipakai programmer, hanya dipakai prosesor untuk menunjukkan alamat memori yang berisi instruksi berikutnya yang akan dieksekusi.</td>
</tr>
</tbody>
</table>
<p>Perhatikan gambar di bawah ini untuk melihat register-register yang ada dalam prosesor keluarga IA32 (Intel Architecture 32 bit).</p>
<div id="attachment_1592"><a href="http://www.ilmuhacking.com/wp-content/uploads/2009/10/intel-32bit-register.jpg"><img title="intel-32bit-register" src="http://www.ilmuhacking.com/wp-content/uploads/2009/10/intel-32bit-register.jpg" alt="http://www.faculty.iu-bremen.de/birk/lectures/PC101-2003/01x86/80x86%20Architecture/registers.htm" width="516" height="324" /></a>courtesy of iu-bremen.de</div>
<p>Dalam gambar di ats terlihat bahwa register-register Extended (berawalan E) adalah register 32 bit. Agar kompatibel program-program sebelumnya ketika register hanya ada 16 bit, maka register yang lain adalah bagian bit bawah dari versi extendednya. Contohnya adalah register ESI dan SI. Register SI adalah 16 bit paling bawah dari ESI. Pada register EAX, AX adalah 16 bit paling bawah dari EAX. Register AX pun dipecah lagi menjadi 8 bit atas AH dan 8 bit bawah AL. Programmer bebas menggunakan yang mana saja sesuai kebutuhannya.</p>
<p><strong>The Classic “Hello World”</strong></p>
<p>Cukup sudah berteori, kini kita mulai berbasah-basah. Mari kita buat program pertama dalam assembly yang menampilkan teks “Hello World”. Dalam artikel ini saya menggunakan format syntax Intel, bukan AT&amp;T. Silakan ketik source berikut dan simpan dalam nama hello.asm</p>
<div>
<div>
<pre>; section text khusus buat code
section .text 

global _start

_start:
; systemcall =&amp;gt; write(1,msg,len)
mov edx,len   ; panjang string dimasukkan dalam register EDX
mov ecx,msg  ; alamat memori yang menyimpan string dimasukkan dalam register ECX
mov ebx,1     ; file descriptor (1=stdout=defaultnya console) disimpan dalam register EBX
mov eax,4     ; Nomor syscall 4 adalah fungsi sys_write()
int 0x80        ; panggil system call dengan interrupt 80 hexa.

; systemcall =&amp;gt; exit(0)
xor ebx,ebx     ; membuat EBX menjadi 0 sebagai return code ketika exit
mov eax,1     ; nomor syscall 1 adalah fungsi exit()
int 0x80        ; panggil system call dengan interrupt 80 hexa.

section .data ; section data khusus buat data/variable
msg db "Hello, World!",0xa ; String diikuti dengan 0xA yaitu new line \n.
len equ $ - msg  ; Panjang string didapat dengan mengurangi address di baris ini dengan alamat string.</pre>
</div>
</div>
<p>Setelah itu kita akan mengcompile file ASM itu menjadi object code berformat ELF dengan NASM (netwide assembler). Setelah itu akan terbentuk file hello.o yang harus dilink dengan linker LD agar menjadi format executable.</p>
<div>
<div>
<pre>$ nasm -f elf hello.asm
$ ld -s -o hello hello.o
$ ./hello
Hello, World!</pre>
</div>
</div>
<p>Selamat, anda telah berhasil membuat program Hello World dalam bahasa Assembly. Program di atas sangat sederhana, kita memanggil system call write() untuk menampilkan string (msg), kemudian kita memanggil system call exit() untuk keluar dari program dan program selesai. String msg kita taruh dalam section .data karena section tersebut khusus untuk menyimpan data/variabel. Sedangkan instruksi assembly disimpan dalam section .text karena section text khusus untuk menyimpan code.</p>
<p><strong>Hello World Opcode</strong></p>
<p>Untuk melihat keterkaitan antara assembly dan bahasa mesin kita bisa melihat opcode dari program assembly yagn kita buat dengan program objdump pada gambar berikut ini.</p>
<p><a href="http://www.ilmuhacking.com/wp-content/uploads/2009/10/opcode-assembly1.png"><img title="hubungan assembly dan opcode" src="http://www.ilmuhacking.com/wp-content/uploads/2009/10/opcode-assembly1.png" alt="hubungan assembly dan opcode" width="613" height="489" /></a></p>
<p>Opcode di sebelah kiri adalah versi bahasa mesin dari bahasa assembly di sebelah kanannya. Hal ini menunjukkan eratnya kaitan antara assembly dan bahasa mesin. Contohnya adalah instruksi assembly INT 0×80 diterjemahkan ke bahasa mesin: 0xCD 0×80 (dalam hexa) atau 11001101 (binary dari 0xCD) 10000000 (binary dari 0×80).</p>
<p>Perhatikan bahwa pada source code assembly, “MOV EDX, len” setelah dicompile diterjemahkan menjadi “MOV EDX, 0xE”. Hal ini karena len adalah konstanta berisi panjang string “Hello, World!” yaitu sepanjang 14 karakter. Instruksi assembly pada source code “MOV ECX, msg” setelah dicompile diterjemahkan menjadi “MOV ECX, 0×80490a4″. Mengapa msg diterjemahkan menjadi 0×80490a4? Hal ini karena msg adalah address dari string “Hello, World!” sehingga setelah dicompile diterjemahkan menjadi alamat 0×80490a4. Terlihat juga pada gambar di atas pada lokasi 0×80490a4 terdapat string “Hello, World!”.</p>
<p><strong>System Call</strong></p>
<p>Dalam program hello world di atas kita memanfaatkan system call untuk menampilkan teks di layar monitor. System call adalah gerbang menuju kernel mode bagi program yang membutuhkan servis yang hanya bisa dikerjakan oleh kernel.</p>
<p><a href="http://www.ilmuhacking.com/wp-content/uploads/2009/10/user-kernel-mode.png"><img title="system call adalah gateway menuju kernel mode" src="http://www.ilmuhacking.com/wp-content/uploads/2009/10/user-kernel-mode.png" alt="system call adalah gateway menuju kernel mode" width="441" height="457" /></a></p>
<p>System call di Linux dipanggil dengan menggunakan interrupt 80 hexa. Nomor system call dimasukkan dalam register EAX. Daftar lengkap nomor systemcall di Linux bisa dibaca di file header: /usr/include/asm/unistd.h. Berikut adalah cuplikan isi dari file unistd.h</p>
<div>
<div>
<pre>#ifndef _ASM_I386_UNISTD_H_
#define _ASM_I386_UNISTD_H_

/*
 * This file contains the system call numbers.
 */

#define __NR_restart_syscall      0
#define __NR_exit                 1
#define __NR_fork                 2
#define __NR_read                 3
#define __NR_write                4
#define __NR_open                 5
#define __NR_close                6
#define __NR_waitpid              7
#define __NR_creat                8</pre>
</div>
</div>
<p>Dalam contoh hello world kita memanfaatkan system call nomor 4 (write) dan nomor 1 (exit). Untuk mengetahui cara pemakaian dan argumen untuk system call tersebut, kita bisa gunakan man di Linux.</p>
<div>
<div>
<pre>$ man 2 write
SYNOPSIS
ssize_t write(int fd, const void *buf, size_t count);
$ man 2 exit
void _exit(int status);</pre>
</div>
</div>
<p>Dari manual system call write meminta 3 argument: yaitu file descriptor bertipe integer, alamat memori tempat string berada, dan terakhir adalah panjang string bertipe integer. Ketika argumen tersebut disimpan dalam register mulai dari EBX, ECX dan EDX. Argumen pertama di EBX, argumen kedua di ECX dan ketiga di EDX. Register EAX dipakai untuk menyimpan nomor system call. Dari manual system call exit meminta 1 argument: yaitu kode status bertipe integer yang disimpan dalam register EBX.</p>
<p>Dalam contoh hello world di atas kita menggunakan 3 intruksi assembly yaitu MOV, XOR dan INT. Mari kita bahas intstruksi tersebut.</p>
<p><strong>Instruksi MOV</strong></p>
<p>Kita menggunakan MOV untuk menyalin data dari sumber ke tujuan. Sumber dan tujuan bisa alamat memori, atau register. Perhatikan contoh berikut:</p>
<table border="0">
<tbody>
<tr>
<th>NASM/Intel</th>
<th>AT&amp;T</th>
<th>Deskripsi</th>
</tr>
<tr>
<td>MOV EAX, 0×51</td>
<td>MOVL $0×51, %EAX</td>
<td>Mengisi register EAX dengan nilai 51 hexa</td>
</tr>
<tr>
<td>MOV ESP, EBP</td>
<td>MOVL EBP, ESP</td>
<td>Menyalin isi register EBP ke register ESP</td>
</tr>
</tbody>
</table>
<p>Perbedaan antara sintaks NASM dan AT&amp;T adalah arah pengkopian. Dalam sintaks NASM, tujuan ada pada operand pertama, sedangkan dalam sintaks AT&amp;T tujuan adalah operand ke-2.</p>
<p><strong>Instruksi XOR</strong></p>
<p>Instruksi XOR digunakan untuk melakukan operasi logika Xclusive OR. XOR akan menghasilkan 0 bila kedua operandnya sama, dan menghasilkan 1 bila tidak sama. XOR ini biasanya dipakai untuk membuat register menjadi 0 dengan melakukan XOR untuk operand yang sama seperti pada contoh hello world tersebut.</p>
<table border="0">
<tbody>
<tr>
<th>NASM/Intel</th>
<th>AT&amp;T</th>
<th>Deskripsi</th>
</tr>
<tr>
<td>XOR EBX,EAX</td>
<td>XOR %EAX,%EBX</td>
<td>XOR isi EBX dengan EAX, hasilnya disimpan di EBX</td>
</tr>
</tbody>
</table>
<p><strong>Instruksi INT</strong></p>
<p>Instruksi INT digunakan untuk mengirim sinyal interrupt ke prosesor. Dalam contoh di atas kita memakai interrupt nomor 80 hexa untuk meminta layanan dari kernel.</p>
<table border="0">
<tbody>
<tr>
<th>NASM/Intel</th>
<th>AT&amp;T</th>
<th>Deskripsi</th>
</tr>
<tr>
<td>INT 0×80</td>
<td>INT $0×80</td>
<td>Memanggil interrupt nomor 80 hexa</td>
</tr>
</tbody>
</table>
<p><strong>Contoh Lain: Hello World X Times</strong></p>
<p>Kali ini kita akan memodifikasi program hello world di atas agar bisa menampilkan pesan yang sama berkali-kali tergantung dari argumen yang dimasukkan user.</p>
<div>
<div>
<pre>section .text

global _start

_start:
pop eax ; pop number of argc (diabaikan)
pop eax ; pop argv[0] (diabaikan karena berisi nama program)
pop eax ; pop argv[1] (ini dipakai untuk stringtoint)
call stringtoint ; ECX berisi argumen bertipe integer sebagai counter

_print:
push ecx              ; selamatkan counter di stack karena ECX dipakai juga di _print_hello
call _print_hello     ; print hello world
pop ecx               ; ambil lagi counter dari stack karena akan dipakai untuk looping
loop _print           ; kurangi ECX dengan 1, bila belum 0 kembali ke _print

; ini system call exit(0)
mov ebx,0
mov eax,1
int 0x80

_print_hello:   ; systemcall write(1,msg,len)
mov edx,len
mov ecx,msg
mov ebx,1
mov eax,4
int 0x80
ret

stringtoint: ; mengubah string di lokasi yang ditunjuk EAX menjadi integer di ECX
; EAX address of string
xor ecx,ecx   ; clear ECX
xor ebx,ebx   ; clear EBX
mov bl,[eax]  ; BL berisi kode ASCII string di lokasi yang ditunjuk EAX
sub bl, 0x30   ; Kode ascii angka adalah 30h-39h, dikurangkan dengan 30h
add ecx,ebx   ; ECX ditambah EBX, ECX berisi nilai integer
ret

section .data
msg db "Hello, World!",0xa
len equ $ - msg</pre>
</div>
</div>
<p>Simpan source code di atas dengan nama helloxtimes.asm, lalu compile dan link seperti di bawah ini.</p>
<div>
<div>
<pre>$ nasm -f elf helloxtimes.asm
$ ld -s -o helloxtimes helloxtimes.o
$ ./helloxtimes 1
Hello, World!
$ ./helloxtimes 2
Hello, World!
Hello, World!
$ ./helloxtimes 3
Hello, World!
Hello, World!
Hello, World!
$ ./helloxtimes 4
Hello, World!
Hello, World!
Hello, World!
Hello, World!</pre>
</div>
</div>
<p>Kita belajar beberapa instruksi baru dalam contoh ke-2 ini, yaitu looping, penggunaan argumen dan prosedur, sedangkan system call yang dipakai tetap sama, yaitu write() dan exit().</p>
<p>Program kali ini menerima argumen berupa integer 1-9 yang dipakai sebagai counter berapa kali pesan akan muncul di monitor. Argumen ini diambil dari stack dengan instruksi POP. Pada puncak stack ada argc, yaitu jumlah argumen ketika program dijalankan. Di bawahnya berisi address dari argv[0] yaitu nama program. Kemudian di bawahnya lagi baru berisi address dari argv[1] yaitu parameter/argumen pertama. Perhatikan pada baris ke-6 s/d baris ke-8 ada instruksi POP EAX sebanyak tiga kali. Ini dilakukan karena yang diperlukan ada pada posisi ke-3 sehingga kita harus membuang 2 elemen di puncak sebelum bisa mengambil address argv[1]. Address argumen ke-1 diambil dari POP lalu disimpan dalam register EAX. Karena bentuknya masih string, maka harus diubah dulu menjadi integer dengan memanggil prosedur stringtoint pada baris ke-9.</p>
<div id="attachment_1625"><a href="http://www.ilmuhacking.com/wp-content/uploads/2009/10/pophello.png"><img title="pophello" src="http://www.ilmuhacking.com/wp-content/uploads/2009/10/pophello-300x92.png" alt="Instruksi POP untuk Mengambil Argumen" width="300" height="92" /></a>Instruksi POP untuk Mengambil Argumen</div>
<p>Ketika program dijalankan dengan satu argumen seperti “./helloxtimes 7″. Maka jumlah argumen (argc) akan berisi 2, yaitu nama program itu sendiri, dan satu argumennya. ARGC akan disimpan pada puncak stack, dan elemen di bawahnya berisi alamat memori dari nama program, dan dibawahnya lagi berisi alamat memori dari argumen pertama. Perhatikan gambar di atas yang menunjukkan proses pengambilan alamat memori berisi string argumen pertama dari stack. Dalam contoh tersebut argumen adalah string “7″, yaitu karakter berkode ASCII 37 hexa diikuti dengan ASCII 0 (karakter NULL). Alamat memori berisi string argumen pertama itu diambil dari stack dan disimpan di register EAX.</p>
<p>Pada prosedur stringtoint, register EAX berisi address string yang akan diubah menjadi integer. Kita hanya mengambil karakter pertama saja, pada baris ke-35 dengan instruksi MOV, isi memori pada address yang ditunjuk oleh EAX dicopy ke register BL.</p>
<blockquote><p>“MOV EBX, [EAX]” berbeda dengan “MOV EBX,EAX”. MOV EBX,[EAX] berarti menyalin isi memori pada alamat yang disimpan di EAX ke dalam register EBX. Sedangkan MOV EBX,EAX berarti menyalin isi register EAX ke register EBX</p></blockquote>
<p>Saya menggunakan register BL karena kode ASCII lebarnya hanya 8 bit. Bila benar berisi angka, maka register BL akan berisi nilai 30h-39h (kode ascii untuk “0″-”9″). Setelah itu register BL dikurangi dengan 30h untuk mendapatkan nilai dari 0-9. Setelah itu hasilnya ditambahkan ke register ECX sehingga kembali dari prosedur ini dengan nilai integer hasil konversi di register ECX.</p>
<p>Setelah mendapatkan nilai argumen bertipe integer di register ECX, selanjutnya ECX ini perlu diselamatkan dulu dalam stack (baris 12) sebab ECX akan dipakai dalam prosedur _print_hello (baris 13). ECX dipakai sebagai alamat string msg ketika memanggil system call write(). Setelah kembali dari prosedur _print_hello, nilai ECX perlu dikembalikan seperti semula dengan POP ECX (baris 14) sebab akan dipakai sebagai counter dalam LOOP (baris 15). Ketika menjalankan instruksi LOOP, register ECX akan dikurangi 1, kemudian bila ECX &gt; 0 maka program akan lompat ke _print. Bila ECX bernilai 0, maka loop berhenti dan menjalankan system call exit(0).</p>
<p>Setelah memahami cara kerja program contoh ke-2 itu. Sekarang mari kita bahas instruksi baru yang ada di sana: CALL, RET, PUSH, POP, LOOP.</p>
<p><strong>Instruksi PUSH dan POP</strong></p>
<p>Instruksi PUSH digunakan untuk menyimpan nilai ke dalam stack. Kebalikannya adalah instruksi POP untuk mengambil nilai dari stack. Stack dalam Linux membesar ke alamat memori yang lebih rendah. Puncak stack ada di alamat rendah, sedangkan dasar stack ada di alamat yang lebih tinggi.</p>
<table border="0">
<tbody>
<tr>
<th>NASM/Intel</th>
<th>AT&amp;T</th>
<th>Deskripsi</th>
</tr>
<tr>
<td>PUSH value</td>
<td>PUSHL value</td>
<td>Menyimpan nilai ke dalam stack</td>
</tr>
<tr>
<td>POP dest</td>
<td>POPL dest</td>
<td>Mengambil nilai dari stack ke dest</td>
</tr>
</tbody>
</table>
<p><strong><br />
Struktur Data Stack</strong></p>
<p>Stack adalah struktur data yang mirip seperti tumpukan piring. Data yang diambil dari stack adalah data yang dimasukkan terakhir, atau istilahnya adalah LIFO (last in first out). Jadi kalau kita ingin mengambil data di tengah-tengah tumpukan, caranya adalah dengan mengambil dulu data dari puncak sampai habis, sehingga data yang kita inginkan berada di puncak stack.</p>
<div id="attachment_1643"><a href="http://www.ilmuhacking.com/wp-content/uploads/2009/10/pushandpop1.png"><img title="pushandpop" src="http://www.ilmuhacking.com/wp-content/uploads/2009/10/pushandpop1.png" alt="PUSH dan POP dalam Stack" width="489" height="363" /></a>PUSH dan POP dalam Stack</div>
<p>Reguster ESP menunjukkan alamat memori dari puncak stack. Setiap ada instruksi PUSH, maka register ESP berkurang (ingat stack bertumbuh ke alamat yang makin mengecil) karena puncak stack berubah. Begitu pula bila sebaliknya bila ada instruksi POP, maka register ESP akan bertambah.</p>
<div>
<div>
<pre>PUSH EAX</pre>
</div>
</div>
<p>PUSH EAX di atas sama dengan dua instruksi di bawah ini:</p>
<div>
<div>
<pre>SUB ESP, 4
MOV DWORD PTR SS:[esp], EAX</pre>
</div>
</div>
<p>PUSH EAX (4 byte) bisa dilakukan dengan mengurangkan ESP dengan 4, kemudian menyalin isi EAX ke memori di lokasi SS:[ESP], yaitu di segment stack pada offset yang ditunjuk oleh ESP. DWORD PTR menunjukkan bahwa lebar data yang akan disalin ke memori dalam instruksi MOV itu selebar 4 byte.</p>
<div>
<div>
<pre>POP EAX</pre>
</div>
</div>
<p>POP EAX di atas sama dengan dua instruksi di bawah ini:</p>
<div>
<div>
<pre>MOV EAX, DWORD PTR SS:[esp]
ADD ESP, 4</pre>
</div>
</div>
<p>POP EAX (4 byte) bisa dilakukan dengan menyalin isi memori di lokasi SS:[ESP], yaitu di segment stack pada offset yang ditunjuk oleh ESP ke register EAX, lalu menambahkan ESP dengan 4. DWORD PTR menunjukkan bahwa lebar data yang akan disalin ke memori dalam instruksi MOV itu selebar 4 byte.</p>
<p><strong>Instruksi CALL dan RET</strong></p>
<p>Instruksi CALL digunakan untuk memanggil sebuah prosedur. Sedangkan RET dipakai untuk kembali dari prosedur kembali ke lokasi setelah instruksi pemanggilan. Ketika instruksi CALL dijalankan, prosesor menyimpan alamat instruksi sesudah instruksi CALL ke dalam stack (return address), kemudian prosesor lompat ke alamat subroutine yang dituju. Ketika instruksi RET dijalankan, maka prosesor mengambil (POP) return address (alamat yang di-push ketika CALL), kemudian loncat ke alamat tersebut.</p>
<table border="0">
<tbody>
<tr>
<th>NASM/Intel</th>
<th>AT&amp;T</th>
<th>Deskripsi</th>
</tr>
<tr>
<td>CALL subroutine1</td>
<td>CALL subroutine1</td>
<td>Memanggil prosedur subroutine1</td>
</tr>
<tr>
<td>RET</td>
<td>RET</td>
<td>Kembali dari prosedur</td>
</tr>
</tbody>
</table>
<p><a href="http://www.ilmuhacking.com/wp-content/uploads/2009/10/CALL-ret.png"><img title="CALL dan RET" src="http://www.ilmuhacking.com/wp-content/uploads/2009/10/CALL-ret.png" alt="CALL dan RET" width="555" height="327" /></a></p>
<p><strong>Instruksi LOOP</strong></p>
<p>LOOP digunakan untuk melakukan looping sejumlah nilai yang ada pada register ECX. Ketika ada instruksi LOOP, prosesor akan mengurangi nilai ECX dengan 1, kemudian membandingkan hasilnya. Bila nilai ECX sekarang masih &gt; 0, maka prosesor akan loncat ke alamat yang ditunjuk dalam LOOP. Bila nilai ECX sekarang menjadi 0, prosesor tidak akan loncat, tapi melanjutkan mengerjakan instruksi selanjutnya setelah LOOP.</p>
<table border="0">
<tbody>
<tr>
<th>NASM/Intel</th>
<th>AT&amp;T</th>
<th>Deskripsi</th>
</tr>
<tr>
<td>LOOP address</td>
<td>LOOP address</td>
<td>Looping ke alamat yang ditunjukkan oleh address bila ECX &gt; 0.</td>
</tr>
</tbody>
</table>
<p>Instruksi tunggal “LOOP address” ekivalen dengan 2 instruksi assembly berikut:</p>
<div>
<div>
<pre>DEC ECX   ; DECREMENT: ECX = ECX - 1, register ECX dikurangi 1
JNZ address ; JUMP IF NOT ZERO: Bila ECX masih belum 0, JUMP ke address</pre>
</div>
</div>
<p><a href="http://www.ilmuhacking.com/wp-content/uploads/2009/10/LOOP-address.png"><img title="Ilustrasi LOOP" src="http://www.ilmuhacking.com/wp-content/uploads/2009/10/LOOP-address.png" alt="Ilustrasi LOOP" width="380" height="464" /></a></p>
<p>Pada gambar di atas ada dua kondisi yang mungkin yaitu ECX &gt; 0 atau ECX = 0. Mungkin ada yang bertanya, lho bagaimana dengan kondisi ECX &lt; 0 ? Ingat komputer hanya mengenal 2 simbol, yaitu 0 dan 1, jadi pada dasarnya tidak ada “-1″ atau “-0″ dalam representasi binary. Bilangan negatif direpresntasikan dengan pengkodean two-complement, silakan baca di <a href="http://en.wikipedia.org/wiki/Signed_number_representations">signed number representation</a> karena itu diluar topik yang kita bahas sekarang.</p>
<p>Bila ECX bernilai 0 sebelum mengerjakan instruksi LOOP, maka yang terjadi adalah program akan looping sebanyak 0xFFFFFFFF atau 4.294.967.295 kali. Hal ini terjadi karena 0 – 1 = -1 yang dalam binary adalah 0xFFFFFFFF dengan sistem two-complement.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/teknikkomputer09.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/teknikkomputer09.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/teknikkomputer09.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/teknikkomputer09.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/teknikkomputer09.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/teknikkomputer09.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/teknikkomputer09.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/teknikkomputer09.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/teknikkomputer09.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/teknikkomputer09.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/teknikkomputer09.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/teknikkomputer09.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/teknikkomputer09.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/teknikkomputer09.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=teknikkomputer09.wordpress.com&amp;blog=10637153&amp;post=3&amp;subd=teknikkomputer09&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://teknikkomputer09.wordpress.com/2009/11/23/belajar-assembly-di-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7d6252cda6951f64eba48d0bd3438ee7?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">teknikkomputer09</media:title>
		</media:content>

		<media:content url="http://www.ilmuhacking.com/wp-content/uploads/2009/10/codeinbinary.jpg" medium="image">
			<media:title type="html">codeinbinary</media:title>
		</media:content>

		<media:content url="http://www.ilmuhacking.com/wp-content/uploads/2009/10/intel-32bit-register.jpg" medium="image">
			<media:title type="html">intel-32bit-register</media:title>
		</media:content>

		<media:content url="http://www.ilmuhacking.com/wp-content/uploads/2009/10/opcode-assembly1.png" medium="image">
			<media:title type="html">hubungan assembly dan opcode</media:title>
		</media:content>

		<media:content url="http://www.ilmuhacking.com/wp-content/uploads/2009/10/user-kernel-mode.png" medium="image">
			<media:title type="html">system call adalah gateway menuju kernel mode</media:title>
		</media:content>

		<media:content url="http://www.ilmuhacking.com/wp-content/uploads/2009/10/pophello-300x92.png" medium="image">
			<media:title type="html">pophello</media:title>
		</media:content>

		<media:content url="http://www.ilmuhacking.com/wp-content/uploads/2009/10/pushandpop1.png" medium="image">
			<media:title type="html">pushandpop</media:title>
		</media:content>

		<media:content url="http://www.ilmuhacking.com/wp-content/uploads/2009/10/CALL-ret.png" medium="image">
			<media:title type="html">CALL dan RET</media:title>
		</media:content>

		<media:content url="http://www.ilmuhacking.com/wp-content/uploads/2009/10/LOOP-address.png" medium="image">
			<media:title type="html">Ilustrasi LOOP</media:title>
		</media:content>
	</item>
	</channel>
</rss>
