<?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/"
	>

<channel>
	<title>ndoWare &#187; Mikrokontroler</title>
	<atom:link href="http://ndoware.com/kategori/mikrokontroler/feed" rel="self" type="application/rss+xml" />
	<link>http://ndoware.com</link>
	<description>Referensi Teknologi dan Elektronika Indonesia</description>
	<lastBuildDate>Fri, 18 Mar 2011 02:38:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Pemrograman Bahasa Assembly 8051</title>
		<link>http://ndoware.com/pemrograman-bahasa-assembly-8051.html</link>
		<comments>http://ndoware.com/pemrograman-bahasa-assembly-8051.html#comments</comments>
		<pubDate>Mon, 10 Aug 2009 03:44:49 +0000</pubDate>
		<dc:creator>Didit</dc:creator>
				<category><![CDATA[Mikrokontroler]]></category>
		<category><![CDATA[8051]]></category>
		<category><![CDATA[assembler]]></category>
		<category><![CDATA[assembly]]></category>

		<guid isPermaLink="false">http://ndoware.com/?p=1518</guid>
		<description><![CDATA[Pemrograman bahasa assembly dari 8051 membutuhkan pengertian akan template pemrograman, pengarahan assembler dan tipe data, dsb. Diskusi singkat tentang assembler peralatan pemrograman, penghubung, dsb. juga penting saat kita hendak memulai. Pembaca dapat memeriksa peralatan pemrograman dan sistem pengembangan yang tersedia dan mencoba untuk mengerjakan program-program sederhana pada platform. Sebagian besar fitur yang didukung oleh sistem [...]<div class="entry clearfloat" style="border:none;padding:0;">
<blockquote>
<h3>Artikel Terkait</h3>
<ul>
		<li><a href="http://ndoware.com/mikrokontroler8051.html" rel="bookmark">Mikrokontroler 8051</a><!-- (5.6)--></li>
		<li><a href="http://ndoware.com/deskripsipin8051.html" rel="bookmark">Deskripsi Pin 8051</a><!-- (5.4)--></li>
		<li><a href="http://ndoware.com/mode-pengalamatan-8051.html" rel="bookmark">Mode pengalamatan 8051</a><!-- (5.4)--></li>
	</ul>
</blockquote>
</div>


]]></description>
			<content:encoded><![CDATA[<p>Pemrograman bahasa assembly dari 8051 membutuhkan pengertian akan template pemrograman, pengarahan assembler dan tipe data, dsb. Diskusi singkat tentang assembler peralatan pemrograman, penghubung, dsb. juga penting saat kita hendak memulai. Pembaca dapat memeriksa peralatan pemrograman dan sistem pengembangan yang tersedia dan mencoba untuk mengerjakan program-program sederhana pada platform. Sebagian besar fitur yang didukung oleh sistem pengembangan 8051 apa pun adalah serupa. Diskusi singkat pada baris ini dibahas di bagian ini.</p>
<p>Assembler-nya, secara umum, mendukung smua alfabet bahasa Inggris, baik upper case dan lower case, dan angka dari 0 hingga 9. Sebagai tambahan @ , $ ; _, juga didukung.</p>
<p style="text-align: center;"><img class="aligncenter size-large wp-image-1519" style="border: 2px solid black;" title="contoh 5.1" src="http://ndoware.com/wp-content/uploads/2009/08/contoh-5.1-1024x515.jpg" alt="contoh 5.1" width="614" height="309" /></p>
<p><strong>Pengarah ORG (Origin) dan END (END)</strong></p>
<p>Perlu dicatat bahwa perintah pseudo ORG dan END; keduanya adalah pengarah untuk assembler 8051. Pengarah ORG digunakan untuk menunjukkan alamat permulaan dari program sumber. ORG 0100H memberitahu assembler bahwa program sumber dimulai pada alamat 0100H dalam memori program. Alamatnya dapat juga berupa decimal. Sebagai contoh, ORG 0250 akan memberitahu assembler bahwa brogram yang akan di-assemble dimulai pada 250D. Secara serupa, pengarah END menunjukkan akhir dari fail program sumber. Ini adalah baris terakhir dalam program sumber dan assembler akan membiarkan kode sumber apapun setelah pengarah END. Beberapa assembler menggunakan sebuah titik “.ORG” dan “.END” daripada ORG dan END. (Perhatikan apa yang didukung oleh assembler anda)</p>
<p><strong>Pengarah DB (Define Byte) dan EQU (Equate)</strong></p>
<p>Define byte adalah pengarah yang digunakan untuk menjelaskan byte data selebar 8-bit. Lihatlah bagaimana pengarah ini muncul dalam program sumber. Angka yang diberikan pada satu variable dapat berupa desimal, biner, hex atau angka ASCII. Huruf yang mengikuti angka menunjukkan hal tersebuturuf yang mengikutiH. Sebagai contoh, ‘D’ berarti desimal; jadi 35D adalah desimal 35. Secara default, jika tidak ada yang muncul setelah angka, maka itu adalah angka desimal. Yaitu 35 dan 35D adalah desimal 35 yang sama. Untuk angka hex, alfabet “H” harus disertakan setelah angka. Maka 25H adalah angka hex. Secara serupa, angka biner diakhiri oleh alphabet “B”. Bahasa assembly tidak case-sensitive. Untuk mewakilkan angka seperti karakter ASCII, kita menggunakan tanda kutip. Tanda kutip tunggal atau ganda, keduanya dapat digunakan; keduanya didukung. Maka jika sebuah string hendak dijelaskan dalam satu program, ini dapat dilakukan seperti dalam gambar di bawah. Assembler-nya secara otomatis menempatkan kode ASCII berhubungan dengan angka-angka atau karakter ini.</p>
<p style="text-align: center;"><img class="aligncenter size-large wp-image-1520" style="border: 2px solid black;" title="DB &amp; EQU" src="http://ndoware.com/wp-content/uploads/2009/08/DB-EQU-1024x200.jpg" alt="DB &amp; EQU" width="614" height="120" /></p>
<p style="text-align: left;">
<p style="text-align: left;">Pengarah equate digunakan untuk menjabarkan sebuah konstanta. Label datanya terhubung dengan nilai konstan; jadi dimanapun label tersebut muncul, konstantanya digantikan untuk label tersebut. Sebagai contoh, nilai 39D dapat dihubungkan ke sebuah label TEMP, seperti di gambar di bawah, dan kemudian dapat dikopikan ke register B dimanapun di dalam program.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1521" style="border: 2px solid black;" title="label temp" src="http://ndoware.com/wp-content/uploads/2009/08/label-temp.jpg" alt="label temp" width="183" height="100" /></p>
<p style="text-align: left;">
<p>Keuntungan dari pengarah EQU adalah jika sebuah konstanta muncul di banyak tempat dalam program maka pemrogram dapat mengubah nilainya, hanya dengan mengubah definisi dari konstanta ini; ini dapat menghemat waktu. Harus diingat bahwa sementara menulis program bahasa assembly, kita tidak semestinya menggunakan kata-kata yang sudah tersimpan atau mnemonic sebagai label. Sebagai contoh, ADD adalah mnemonic untuk perintah 8051; jadi ADD tidak dapat digunakan sebagai label. Secara serupa, ORG atau END tidak dapat digunakan sebagai label. Lebih jauh lagi, nama label haruslah unik.</p>
<p><strong>Template Pemrograman 8051</strong></p>
<p>Template pemrograman 8051 akan memiliki beberapa porsi awalan, lalu program utama dan subrutin akan dituliskan secara berkelanjutan dalam memori program. Perhatikan Contoh Pemrograman #5.2 berikut:</p>
<p style="text-align: center;"><img class="aligncenter size-large wp-image-1522" style="border: 2px solid black;" title="contoh 5.2" src="http://ndoware.com/wp-content/uploads/2009/08/contoh-5.2-1024x457.jpg" alt="contoh 5.2" width="614" height="274" /></p>
<p style="text-align: center;"><img class="aligncenter size-large wp-image-1523" style="border: 2px solid black;" title="contoh 5.2-2" src="http://ndoware.com/wp-content/uploads/2009/08/contoh-5.2-2-1024x470.jpg" alt="contoh 5.2-2" width="614" height="282" /></p>
<p>Sebagaimana yang akan terlihat secara detil saat mendiskusikan interrupt, lokasi-lokasi vector yang berhubungan dengan interrupt ini muncul di alamat-alamat yang lebih rendah dalam memori program. Perintah lompat kemudian digunakan untuk menunjuk titik awal alamat subrutin layanan interrupt. Perlu dicatat bahwa subrutin dan layanan interrupt dapa muncul dalam berbagai bentuk urutan. Perhatikan bahwa subrutin layanan interrupt menggunakan perintah RETI, dimana subrutin umum juga menggunakan perintah RETI.</p>
<p style="text-align: center;">
<img src="http://ndoware.com/?ak_action=api_record_view&id=1518&type=feed" alt="" /><div class="entry clearfloat" style="border:none;padding:0;">
<blockquote>
<h3>Artikel Terkait</h3>
<ul>
		<li><a href="http://ndoware.com/mikrokontroler8051.html" rel="bookmark">Mikrokontroler 8051</a><!-- (5.6)--></li>
		<li><a href="http://ndoware.com/deskripsipin8051.html" rel="bookmark">Deskripsi Pin 8051</a><!-- (5.4)--></li>
		<li><a href="http://ndoware.com/mode-pengalamatan-8051.html" rel="bookmark">Mode pengalamatan 8051</a><!-- (5.4)--></li>
	</ul>
</blockquote>
</div>


]]></content:encoded>
			<wfw:commentRss>http://ndoware.com/pemrograman-bahasa-assembly-8051.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Menggunakan Penunjuk Stack</title>
		<link>http://ndoware.com/menggunakan-penunjuk-stack.html</link>
		<comments>http://ndoware.com/menggunakan-penunjuk-stack.html#comments</comments>
		<pubDate>Tue, 04 Aug 2009 03:04:17 +0000</pubDate>
		<dc:creator>Didit</dc:creator>
				<category><![CDATA[Mikrokontroler]]></category>
		<category><![CDATA[stack pointer]]></category>

		<guid isPermaLink="false">http://ndoware.com/?p=1482</guid>
		<description><![CDATA[Menggunakan Penunjuk Stack
Penunjuk stack 8051 memiliki lebar 8-bit. Jika tidak dijalankan secara spesifik, ia di-load dengan nilai default 07H, setelah reset. Stack adalah suatu set memori lokasi yang dicadangkan untuk penyimpanan sementara dari hasil intermediate atau register. Memori stack terpakai saat perintah-perintah seperti PUSH, POP, ACALL, LCALL, RET, RETI dieksekusi.
Mari kita lihat bagaimana operasi stack [...]<div class="entry clearfloat" style="border:none;padding:0;">
<blockquote>
<h3>Artikel Terkait</h3>
<ul>
		<li><a href="http://ndoware.com/perintah-pencabangan-program-acall-sjmp.html" rel="bookmark">Perintah Pencabangan Program (ACALL &#8211; SJMP)</a><!-- (7.2)--></li>
		<li><a href="http://ndoware.com/perintah-pencabangan-program-ljmp-jb.html" rel="bookmark">Perintah Pencabangan Program (LJMP &#8211; JB)</a><!-- (7)--></li>
		<li><a href="http://ndoware.com/perintah-pertukaran-dan-swap.html" rel="bookmark">Perintah Pertukaran dan SWAP</a><!-- (5.5)--></li>
	</ul>
</blockquote>
</div>


]]></description>
			<content:encoded><![CDATA[<p><strong>Menggunakan Penunjuk Stack</strong></p>
<p>Penunjuk stack 8051 memiliki lebar 8-bit. Jika tidak dijalankan secara spesifik, ia di-load dengan nilai default 07H, setelah reset. Stack adalah suatu set memori lokasi yang dicadangkan untuk penyimpanan sementara dari hasil intermediate atau register. Memori stack terpakai saat perintah-perintah seperti PUSH, POP, ACALL, LCALL, RET, RETI dieksekusi.</p>
<p>Mari kita lihat bagaimana operasi stack dilakukan dalalam 8051. Stack 8051 berkembang dari alamat rendah ke alamat yang lebih tinggi. Selama perintah PUSH, penunjuk stack ditambahkan terlebih dahulu dan kemudian data tersebut disimpan di alamat yang ditunjuk oleh penunjuk stack. Namun, selama perintah POP, data diambil dari lokasi dimana alamatnya yang sekarang ditunjuk oleh penunjuk stack dan kemudian penunjuk stack tersebut dikurangi. Ini berarti, penunjuck stack-nya sebelumnya dikurangi untuk POP dan sesudahnya ditambahkan untuk PUSH. Perhatikan contoh di bawah:</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1483" style="border: 2px solid black;" title="POP DPH" src="http://ndoware.com/wp-content/uploads/2009/08/POP-DPH.jpg" alt="POP DPH" width="278" height="135" /></p>
<p style="text-align: center;">
<p>Penunjuk stack dijalankan pada 55H oleh perintah MOV SP, #55H. Sekarang lokasi 55H dalam RAM on-chip mengandung alamat segera 23H. Lalu, secara berkelanjutan menggunakan perintah POP DPH dalam RAM on-chip akan me-load konten dari lokasi 55H dalam penunjuk data DPH byte tinggi, dan kemudian penunjuk stack-nya dikurangi sebanyak 1. Terakhir, DPH konten DPH akan menjadi 23H, dan SP akan memiliki 54H. Ini ditunjukkan di diagram di bawah:</p>
<p style="text-align: center;"><img class="aligncenter size-large wp-image-1484" style="border: 2px solid black;" title="Operasi POP" src="http://ndoware.com/wp-content/uploads/2009/08/Operasi-POP-1024x366.jpg" alt="Operasi POP" width="819" height="293" /></p>
<p>Secara serupa, untuk operasi PUSH, perhatikan segmen program di bawah:</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1485" style="border: 2px solid black;" title="PUSH DPL" src="http://ndoware.com/wp-content/uploads/2009/08/PUSH-DPL.jpg" alt="PUSH DPL" width="283" height="130" /></p>
<p style="text-align: center;">
<p>Perintah pertama akan me-load penunjuk data byte rendah dengan data segera 44H. SP sekarang dijalankan dengan 54H. Perintah PUSH akan menambahkan SP sebanyak 1, menjadikan konten SP sama dengan 55H. Sekarang, lokasi 55H dalam memori stack on-chip akan di-load dengan konten dari DPL, misalnya 44H. Ini ditunjukkan oleh gambar di bawah:</p>
<p style="text-align: center;"><img class="aligncenter size-large wp-image-1486" style="border: 2px solid black;" title="Operasi PUSH" src="http://ndoware.com/wp-content/uploads/2009/08/Operasi-PUSH-1024x460.jpg" alt="Operasi PUSH" width="819" height="368" /></p>
<p style="text-align: center;">
<img src="http://ndoware.com/?ak_action=api_record_view&id=1482&type=feed" alt="" /><div class="entry clearfloat" style="border:none;padding:0;">
<blockquote>
<h3>Artikel Terkait</h3>
<ul>
		<li><a href="http://ndoware.com/perintah-pencabangan-program-acall-sjmp.html" rel="bookmark">Perintah Pencabangan Program (ACALL &#8211; SJMP)</a><!-- (7.2)--></li>
		<li><a href="http://ndoware.com/perintah-pencabangan-program-ljmp-jb.html" rel="bookmark">Perintah Pencabangan Program (LJMP &#8211; JB)</a><!-- (7)--></li>
		<li><a href="http://ndoware.com/perintah-pertukaran-dan-swap.html" rel="bookmark">Perintah Pertukaran dan SWAP</a><!-- (5.5)--></li>
	</ul>
</blockquote>
</div>


]]></content:encoded>
			<wfw:commentRss>http://ndoware.com/menggunakan-penunjuk-stack.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perintah Pertukaran dan SWAP</title>
		<link>http://ndoware.com/perintah-pertukaran-dan-swap.html</link>
		<comments>http://ndoware.com/perintah-pertukaran-dan-swap.html#comments</comments>
		<pubDate>Mon, 03 Aug 2009 07:18:27 +0000</pubDate>
		<dc:creator>Didit</dc:creator>
				<category><![CDATA[Mikrokontroler]]></category>
		<category><![CDATA[perintah pertukaran]]></category>
		<category><![CDATA[SWAP]]></category>
		<category><![CDATA[XCHD]]></category>

		<guid isPermaLink="false">http://ndoware.com/?p=1411</guid>
		<description><![CDATA[SWAP A
Perintah SWAP A menukarkan nibbles dari akumulator. Tidak ada flag yang terpengaruh. Operasi perintah SWAP A ditunjukkan oleh gambar:

Jika akumulatornya mengandung OFH, maka setelah perintah SWAP A, akumularot akan mengandung FOH. Tidak ada flag yang dipengaruhi.
XCH A,&#60;,byte&#62;
Perintah ini menukarkan konten dari akumulator dengan variable bit. Mari kita lihat perintah tersebut:

Setelah pengeksekusian perintah-perintah ini, akumulator [...]<div class="entry clearfloat" style="border:none;padding:0;">
<blockquote>
<h3>Artikel Terkait</h3>
<ul>
		<li><a href="http://ndoware.com/perintah-rotasi.html" rel="bookmark">Perintah Rotasi</a><!-- (12.2)--></li>
		<li><a href="http://ndoware.com/perintah-pencabangan-program-jbc-cjne.html" rel="bookmark">Perintah Pencabangan Program (JBC &#8211; CJNE)</a><!-- (10.5)--></li>
		<li><a href="http://ndoware.com/perintah-pada-mcs-51.html" rel="bookmark">Perintah Logika, Variabel Boolean dan Pencabangan pada MCS-51</a><!-- (9.5)--></li>
	</ul>
</blockquote>
</div>


]]></description>
			<content:encoded><![CDATA[<p><strong>SWAP A</strong></p>
<p>Perintah SWAP A menukarkan nibbles dari akumulator. Tidak ada flag yang terpengaruh. Operasi perintah SWAP A ditunjukkan oleh gambar:</p>
<p><img class="aligncenter size-medium wp-image-1412" title="SWAP A" src="http://ndoware.com/wp-content/uploads/2009/07/SWAP-A-300x233.jpg" alt="SWAP A" width="300" height="233" /></p>
<p>Jika akumulatornya mengandung OFH, maka setelah perintah SWAP A, akumularot akan mengandung FOH. Tidak ada flag yang dipengaruhi.</p>
<p><strong>XCH A,&lt;,byte&gt;</strong></p>
<p>Perintah ini menukarkan konten dari akumulator dengan variable bit. Mari kita lihat perintah tersebut:</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1413" style="border: 2px solid black;" title="XCH A" src="http://ndoware.com/wp-content/uploads/2009/07/XCH-A.jpg" alt="XCH A" width="242" height="147" /></p>
<p>Setelah pengeksekusian perintah-perintah ini, akumulator akan mengandung 02H dan lokasin 50H akan mengandung 04H. Perlu dicatat bahwa konten dari lokasi RAM on-chip yang ditunjukkan oleh R2 diktukarkan dengan akumulator dalam program ini.</p>
<p>Byte yang dialamatkan dalam perintah XCH dapat ditentukan menggunakan pengalamatan langsung, pengalamatan register atau mode pengalamatan tidak langsung. Sebagai contoh, kita dapat saja menulis XCH A, R1 untuk menukarkan konten R1 dengan A. Secara serupa, XCH, A, 50H akan menukarkan konten dari lokasi 50H yang dialamatkan secara langsung dalam RAM on-chip dengan akumulator.</p>
<p><strong>XCHD A, @R<sub>i</sub> (Digit-digit Pertukaran)</strong></p>
<p>Perintah ini menukar nibble rendah dari akumulator, contohnya: bit-bit 3-0 dengan yang berasal dari lokasi RAM internal yang ditunjuk oleh R<sub>i</sub>. Operasi ini ditunjukkan oleh gambar berikut:</p>
<p><img class="aligncenter size-medium wp-image-1414" title="XCHDA,@Ri" src="http://ndoware.com/wp-content/uploads/2009/07/XCHDA@Ri-300x154.jpg" alt="XCHDA,@Ri" width="397" height="202" /></p>
<p>Perhatikan contoh di bawah ini untuk perintah XCHD:</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1415" style="border: 2px solid black;" title="XCHDA,@Ri-2" src="http://ndoware.com/wp-content/uploads/2009/07/XCHDA@Ri-2.jpg" alt="XCHDA,@Ri-2" width="274" height="162" /></p>
<p>Program ini me-load akumulator dengan 56H dan mengawali penunjuk R1 dengan 50H. Di 50H data segera 45H di-load. Setelah perintah XCHD A, R1, akumulator akan mengandung 55H dan lokasi 50H dalam RAM on-chip akan mengandung 46H. Tidak ada flag yang terpengaruh.</p>
<img src="http://ndoware.com/?ak_action=api_record_view&id=1411&type=feed" alt="" /><div class="entry clearfloat" style="border:none;padding:0;">
<blockquote>
<h3>Artikel Terkait</h3>
<ul>
		<li><a href="http://ndoware.com/perintah-rotasi.html" rel="bookmark">Perintah Rotasi</a><!-- (12.2)--></li>
		<li><a href="http://ndoware.com/perintah-pencabangan-program-jbc-cjne.html" rel="bookmark">Perintah Pencabangan Program (JBC &#8211; CJNE)</a><!-- (10.5)--></li>
		<li><a href="http://ndoware.com/perintah-pada-mcs-51.html" rel="bookmark">Perintah Logika, Variabel Boolean dan Pencabangan pada MCS-51</a><!-- (9.5)--></li>
	</ul>
</blockquote>
</div>


]]></content:encoded>
			<wfw:commentRss>http://ndoware.com/perintah-pertukaran-dan-swap.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perintah Rotasi</title>
		<link>http://ndoware.com/perintah-rotasi.html</link>
		<comments>http://ndoware.com/perintah-rotasi.html#comments</comments>
		<pubDate>Fri, 31 Jul 2009 01:43:00 +0000</pubDate>
		<dc:creator>Didit</dc:creator>
				<category><![CDATA[Mikrokontroler]]></category>
		<category><![CDATA[RL A]]></category>
		<category><![CDATA[RLC A]]></category>
		<category><![CDATA[Rotasi]]></category>
		<category><![CDATA[RR A]]></category>
		<category><![CDATA[RRC A]]></category>

		<guid isPermaLink="false">http://ndoware.com/?p=1403</guid>
		<description><![CDATA[Perintah Rotasi
Perintah rotasi memungkinkan rotasi dari konten akumulator. Ada empat perintah rotasi: RR, RL, RLC, RRC.
RR A (Rotasi Akumulator ke Kanan)
Konten dari akumulator dirotasikan sebanyak 1 bit ke kanan. Bit 0 berpindah ke posisi bit 7 sebagaimana ditunjukkan gambar dibawah :

Sebagai contoh, jika akumulator mengandung 1000 0000B, maka setelah perintah RL A, hasil dalam akumulator [...]<div class="entry clearfloat" style="border:none;padding:0;">
<blockquote>
<h3>Artikel Terkait</h3>
<ul>
		<li><a href="http://ndoware.com/perintah-pertukaran-dan-swap.html" rel="bookmark">Perintah Pertukaran dan SWAP</a><!-- (14.6)--></li>
		<li><a href="http://ndoware.com/perintah-pencabangan-program-jbc-cjne.html" rel="bookmark">Perintah Pencabangan Program (JBC &#8211; CJNE)</a><!-- (11.1)--></li>
		<li><a href="http://ndoware.com/perintah-pada-mcs-51.html" rel="bookmark">Perintah Logika, Variabel Boolean dan Pencabangan pada MCS-51</a><!-- (10.3)--></li>
	</ul>
</blockquote>
</div>


]]></description>
			<content:encoded><![CDATA[<p><strong>Perintah Rotasi</strong></p>
<p>Perintah rotasi memungkinkan rotasi dari konten akumulator. Ada empat perintah rotasi: RR, RL, RLC, RRC.</p>
<p><strong>RR A (Rotasi Akumulator ke Kanan)</strong></p>
<p>Konten dari akumulator dirotasikan sebanyak 1 bit ke kanan. Bit 0 berpindah ke posisi bit 7 sebagaimana ditunjukkan gambar dibawah :</p>
<p><img class="aligncenter size-medium wp-image-1406" title="RR A" src="http://ndoware.com/wp-content/uploads/2009/07/RR-A-300x200.jpg" alt="RR A" width="300" height="200" /></p>
<p>Sebagai contoh, jika akumulator mengandung 1000 0000B, maka setelah perintah RL A, hasil dalam akumulator akan menjadi 0000 0001B. Tidak ada flag yang akan terpengaruh.</p>
<p><strong>RL A (Rotasi Akumulator ke Kiri)</strong></p>
<p>Konten dari akumulator dirotasikan ke kiri sehingga bit 7 berpindah ke posisi bit 0. Sebagaimana ditunjukkan gambar di bawah:</p>
<p><img class="aligncenter size-medium wp-image-1407" title="RL A" src="http://ndoware.com/wp-content/uploads/2009/07/RL-A-300x200.jpg" alt="RL A" width="300" height="200" /></p>
<p>Sebagai contoh, jika akumulator mengandung 1000 0000B, maka setelah perintah RL A, hasilnya akan menjadi 0000 0001B. Tidak ada flag yang terpengaruh.</p>
<p><strong>RRC A (Rotasi Akumulator ke Kanan melalui Carry)</strong></p>
<p>Perintah ini merotasikan akumulator ke kanan sebanyak 1 bit sedemikian rupa sehingga bit 0 berpindah ke flag Carry dan flag Carry berpindah ke posisi bit 7. Sebagaimana ditunjukkan gambar dibawah:</p>
<p><img class="aligncenter size-medium wp-image-1404" title="RRC A right" src="http://ndoware.com/wp-content/uploads/2009/07/RRC-A-right-300x191.jpg" alt="RRC A right" width="300" height="191" /></p>
<p>Sebagai contoh, jika flag Carry diatur dan akumulatornya mengandung 0000 1110 B, maka setelah perintah RRC A, akumulator akan mengandung 1000 0111B dan flag Carry akan menjadi ‘0’.</p>
<p><strong>RLC A (Rotasi akumulator ke Kiri melalui Carry) </strong></p>
<p>Perintah ini merotasi akumulator ke kiri sebanyak 1 bit sedemikian rupa sehingga bit 7 berpindah ke flag Carry dan flag Carry berpindah ke posisi bit 0. Lihat gambar di bawah:</p>
<p><img class="aligncenter size-medium wp-image-1405" title="RRC A left" src="http://ndoware.com/wp-content/uploads/2009/07/RRC-A-left-300x173.jpg" alt="RRC A left" width="300" height="173" /></p>
<p>Sebagai contoh, jika flag Carry adalah ‘0’ dan akumulatornya mengandung 1000 1111 B, maka setelah RRC A akumulatornya akan mengandung 0001 1110B dan flag Carry akan berubah menjadi ‘1’. Hanya flag Carry yang terpengaruh.</p>
<p>Kita dapat merotasi melalui Carry dalam sebuah loop beberapa kali; sebagai contoh, perhatikan program berikut untuk merotasi akumulator ke kanan melalui Carry sebanyak 5 kali. Akumulatornya akan mengandung 1000 0000B sebelum perintah RRC, dengan C flag ‘1’. Penghitungan dari 05 akan di-load dalam register R1.</p>
<p style="text-align: left;"><img class="aligncenter size-medium wp-image-1408" style="border: 2px solid black;" title="RLC A progr" src="http://ndoware.com/wp-content/uploads/2009/07/RLC-A-progr-300x60.jpg" alt="RLC A progr" width="531" height="118" /></p>
<p>Setelah pengeksekusian program, akumulator akan mengandung 0000 1100B dan flag Carry akan menjadi ‘0’</p>
<img src="http://ndoware.com/?ak_action=api_record_view&id=1403&type=feed" alt="" /><div class="entry clearfloat" style="border:none;padding:0;">
<blockquote>
<h3>Artikel Terkait</h3>
<ul>
		<li><a href="http://ndoware.com/perintah-pertukaran-dan-swap.html" rel="bookmark">Perintah Pertukaran dan SWAP</a><!-- (14.6)--></li>
		<li><a href="http://ndoware.com/perintah-pencabangan-program-jbc-cjne.html" rel="bookmark">Perintah Pencabangan Program (JBC &#8211; CJNE)</a><!-- (11.1)--></li>
		<li><a href="http://ndoware.com/perintah-pada-mcs-51.html" rel="bookmark">Perintah Logika, Variabel Boolean dan Pencabangan pada MCS-51</a><!-- (10.3)--></li>
	</ul>
</blockquote>
</div>


]]></content:encoded>
			<wfw:commentRss>http://ndoware.com/perintah-rotasi.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perintah Pencabangan Program (JBC &#8211; CJNE)</title>
		<link>http://ndoware.com/perintah-pencabangan-program-jbc-cjne.html</link>
		<comments>http://ndoware.com/perintah-pencabangan-program-jbc-cjne.html#comments</comments>
		<pubDate>Mon, 27 Jul 2009 03:58:55 +0000</pubDate>
		<dc:creator>Didit</dc:creator>
				<category><![CDATA[Mikrokontroler]]></category>
		<category><![CDATA[pencabangan jbc cjne]]></category>

		<guid isPermaLink="false">http://ndoware.com/?p=1345</guid>
		<description><![CDATA[JBC (Jump if Bit Set and Clear Bit)
Bit JBC, perintah rel menguji yang terspesifikasikan secara bit. Jika bit di-set, maka Jump dilakukan ke alamat relatif dan yang terspesifikasi secara bit di dalam perintah dibersihkan. Segmen program berikut menguji bit yang kurang signifikan (LSB: Least Significant Byte), dan jika diketemukan bahwa ia telah di-set, program melompat [...]<div class="entry clearfloat" style="border:none;padding:0;">
<blockquote>
<h3>Artikel Terkait</h3>
<ul>
		<li><a href="http://ndoware.com/perintah-pencabangan-program-ljmp-jb.html" rel="bookmark">Perintah Pencabangan Program (LJMP &#8211; JB)</a><!-- (18.3)--></li>
		<li><a href="http://ndoware.com/perintah-pencabangan-program-acall-sjmp.html" rel="bookmark">Perintah Pencabangan Program (ACALL &#8211; SJMP)</a><!-- (15.7)--></li>
		<li><a href="http://ndoware.com/perintah-pada-mcs-51.html" rel="bookmark">Perintah Logika, Variabel Boolean dan Pencabangan pada MCS-51</a><!-- (14.5)--></li>
	</ul>
</blockquote>
</div>


]]></description>
			<content:encoded><![CDATA[<p><strong>JBC (Jump if Bit Set and Clear Bit)</strong></p>
<p>Bit JBC, perintah rel menguji yang terspesifikasikan secara bit. Jika bit di-set, maka Jump dilakukan ke alamat relatif dan yang terspesifikasi secara bit di dalam perintah dibersihkan. Segmen program berikut menguji bit yang kurang signifikan (LSB: Least Significant Byte), dan jika diketemukan bahwa ia telah di-set, program melompat ke READ lokasi. Perintah tersebut juga membersihkan LSB dari akumulator</p>
<p style="text-align: center;"><img class="aligncenter size-medium wp-image-1347" style="border: 2px solid black;" title="JBC" src="http://ndoware.com/wp-content/uploads/2009/07/JBC-300x48.jpg" alt="JBC" width="300" height="48" /></p>
<p><strong>JC (Jump if Carry is Set)</strong></p>
<p>Perintah JC menguji bit Carry. Jika Carry di-set, maka Jump dilakukan ke lokasi yang teralamatkan. Sebagai contoh, perhatikan program di bawah:</p>
<p style="text-align: center;"><img class="aligncenter size-medium wp-image-1348" style="border: 2px solid black;" title="JC" src="http://ndoware.com/wp-content/uploads/2009/07/JC-300x261.jpg" alt="JC" width="300" height="261" /></p>
<p>Akumulator di-load dengan FEH dan kemudian 02 ditambahkan ke dalamnya. Disaat tambahan mmenghasilkan Carry dan flag dari Carry di-set, program melompat ke lokasi yang dilabeli NEXT.</p>
<p><strong>JNC (Jump if Carry Not Set)</strong></p>
<p>Perintah JNC menguji bit Carry, dan jika tidak di-set, maka sebuah lompatan akan dilakukan ke alamat relatif yang telah ditentukan. Sebagai contoh, perintah berikut akan menyebabkan loop tanpa henti, karena Carry dibersihkan oleh perintah CLR C dan JNC akan selalu menyebabkan lompatan ke lokasi yang sama yang berlabel &#8216;LOOP&#8217;</p>
<p style="text-align: center;"><img class="aligncenter size-medium wp-image-1349" style="border: 2px solid black;" title="JNC" src="http://ndoware.com/wp-content/uploads/2009/07/JNC-300x80.jpg" alt="JNC" width="300" height="80" /></p>
<p><strong>JZ (Jump if Accumulator is Zero)</strong></p>
<p>Perintah ini menguji konten-konten akumulator. Jika bukan nol, maka lompatan dilakukan ke alamat relatif yang ditentukan dalam perintah.</p>
<p>Sebagai contoh, perintah berikut akan menyebabkan lompatan ke lokasi yang diberi label &#8216;AHEAD&#8217;, ketika akumulator dibersihkan.</p>
<p style="text-align: center;"><img class="aligncenter size-medium wp-image-1351" style="border: 2px solid black;" title="JZ" src="http://ndoware.com/wp-content/uploads/2009/07/JZ-300x255.jpg" alt="JZ" width="300" height="255" /></p>
<p style="text-align: left;">
<p style="text-align: left;"><strong>CJNE (Comppare and Jump if not Equal)</strong></p>
<p style="text-align: left;">Perintah membandingkan dan melompat jika tidak sama (CJNE) membandingkan magnitudo dari dua operandi di awal, jika keduanya tidak sama, maka lompatan dilakukan ke alamat relatif yang ditentukan dalam perintah. Sintaksnya adalah CJNE &lt;dest-byte&gt;, &lt;SRC-byte&gt;, rel.  Untuk melihat penggunaannya perhatikan perintah berikut:</p>
<p style="text-align: center;"><img class="aligncenter size-medium wp-image-1354" style="border: 2px solid black;" title="CJNE" src="http://ndoware.com/wp-content/uploads/2009/07/CJNE-300x101.jpg" alt="CJNE" width="300" height="101" /></p>
<p style="text-align: left;">Perintah pertama me-load R1 dengan 04H. Perintah DEC lalu mengurangkan R1 sebanyak 1. Konten R1 lalu dibandingkan oleh CJNE dengan data segera 02H. Disaat konten R1 tidak sama dengn 02H, lompatan dilakukan ke NO, dimana perintah DEC dituliskan., yang mengurangkan R1 sebanyak 1. Sekarang R1 mengandung 02, yang sama dengan data segera yang  telah ditentukan oleh perintah. Maka dari itu, lompatan tidak dilakukan dan program keluar dari loop.</p>
<p style="text-align: left;">Kegunaan lain dari perintah CJNE mungkin dalam mengaambil keputusan berdasarkan magnitudo dari bit sumber dan tujuan. Sebagai contoh, perhatikan segmen program berikut. Tergantung dari konten R2, sebauh lompatan dilakukan. Perintah pertama membandingkan R dengan 04H, jika keduanya tidak sama, maka lompatan ke NEXT1 dilakukan. Namun, jika keduanya sama, maka perintah SJMP berikut dieksekusi dan kendali program beralih ke CJNE. Operasi serupa terjadi saat pengujian 02H.</p>
<p style="text-align: center;"><img class="aligncenter size-medium wp-image-1356" style="border: 2px solid black;" title="CJNE2" src="http://ndoware.com/wp-content/uploads/2009/07/CJNE2-300x223.jpg" alt="CJNE2" width="300" height="223" /></p>
<img src="http://ndoware.com/?ak_action=api_record_view&id=1345&type=feed" alt="" /><div class="entry clearfloat" style="border:none;padding:0;">
<blockquote>
<h3>Artikel Terkait</h3>
<ul>
		<li><a href="http://ndoware.com/perintah-pencabangan-program-ljmp-jb.html" rel="bookmark">Perintah Pencabangan Program (LJMP &#8211; JB)</a><!-- (18.3)--></li>
		<li><a href="http://ndoware.com/perintah-pencabangan-program-acall-sjmp.html" rel="bookmark">Perintah Pencabangan Program (ACALL &#8211; SJMP)</a><!-- (15.7)--></li>
		<li><a href="http://ndoware.com/perintah-pada-mcs-51.html" rel="bookmark">Perintah Logika, Variabel Boolean dan Pencabangan pada MCS-51</a><!-- (14.5)--></li>
	</ul>
</blockquote>
</div>


]]></content:encoded>
			<wfw:commentRss>http://ndoware.com/perintah-pencabangan-program-jbc-cjne.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perintah Pencabangan Program (LJMP &#8211; JB)</title>
		<link>http://ndoware.com/perintah-pencabangan-program-ljmp-jb.html</link>
		<comments>http://ndoware.com/perintah-pencabangan-program-ljmp-jb.html#comments</comments>
		<pubDate>Tue, 21 Jul 2009 05:31:38 +0000</pubDate>
		<dc:creator>Didit</dc:creator>
				<category><![CDATA[Mikrokontroler]]></category>
		<category><![CDATA[JB]]></category>
		<category><![CDATA[JMP]]></category>
		<category><![CDATA[JNB]]></category>
		<category><![CDATA[JNZ]]></category>
		<category><![CDATA[LCALL]]></category>

		<guid isPermaLink="false">http://ndoware.com/?p=1298</guid>
		<description><![CDATA[LJMP (Long Jump)
Long Jump memungkinkan lompatan tak bersyarat kemana saja dalam lingkup ruang memori program 64K. LCALL adalah perintah 3-byte. Alamat tujuan 16-bit ditentukan secara langsung dalam perintah tersebut. Alamat tujuan ini di-load ke dalam konter program oleh perintah LJMP. Sebagai contoh, untuk melompat ke lokasi 0200H, kita dapat menulis “LJMP 0200H”
LCALL (Long Call)
LCALL memungkinkan [...]<div class="entry clearfloat" style="border:none;padding:0;">
<blockquote>
<h3>Artikel Terkait</h3>
<ul>
		<li><a href="http://ndoware.com/perintah-pencabangan-program-acall-sjmp.html" rel="bookmark">Perintah Pencabangan Program (ACALL &#8211; SJMP)</a><!-- (18.5)--></li>
		<li><a href="http://ndoware.com/perintah-pencabangan-program-jbc-cjne.html" rel="bookmark">Perintah Pencabangan Program (JBC &#8211; CJNE)</a><!-- (17.4)--></li>
		<li><a href="http://ndoware.com/perintah-pada-mcs-51.html" rel="bookmark">Perintah Logika, Variabel Boolean dan Pencabangan pada MCS-51</a><!-- (15.6)--></li>
	</ul>
</blockquote>
</div>


]]></description>
			<content:encoded><![CDATA[<p><strong>LJMP (Long Jump)</strong></p>
<p>Long Jump memungkinkan lompatan tak bersyarat kemana saja dalam lingkup ruang memori program 64K. LCALL adalah perintah 3-byte. Alamat tujuan 16-bit ditentukan secara langsung dalam perintah tersebut. Alamat tujuan ini di-<em>load</em> ke dalam konter program oleh perintah LJMP. Sebagai contoh, untuk melompat ke lokasi 0200H, kita dapat menulis “LJMP 0200H”</p>
<p><strong>LCALL (Long Call)</strong></p>
<p>LCALL memungkinkan panggilan ke subrutin yang berlokasi dimanapun dalam memori program 64K. Operasi LCALL berjalan seperti berikut:</p>
<p>(i)      Menambahkan ke dalam konter program sebanyak 3, karena perintahnya adalah perintah 3-byte.</p>
<p>(ii)    Menambahkan penunjuk <em>stack</em> sebanyak 1.</p>
<p>(iii)   Menyimpan byte yang lebih rendah dari konter program ke dalam <em>stack</em>.</p>
<p>(iv)  Menambahkan penunjuk <em>stack</em>.</p>
<p>(v)    Menyimpan byte yang lebih tinggi dari program ke dalam <em>stack</em>.</p>
<p>(vi)  Me-<em>load</em> konter program dengan alamat tujuan 16-bit.</p>
<p>Sebagai contoh, jika penunjuk <em>stack</em> dimulai pada 54H, maka perintah LCALL 0400H di lokasi 0100H dalam memori program akan menghasilkan nilai SP, PC dan <em>stack</em>, seperti yang ditunjukkan dalam gambar berikut:</p>
<p><strong>Perintah JMP Tidak Langsung Tak Bersyarat JMP @A+DPTR</strong></p>
<p>JMP adalah perintah Jump tidak langsung yang menggunakan akumulator dan DPTR. JMP @A+DPTR, perintah menambahkan konten 80bit tak bertanda dari akumulator dengan penunjuk data 16 bit ‘DPTR’ untuk memperoleh alamat tujuan 16-bit.. Alamat ini lalu di-<em>load</em> ke dalam PC. Perintah ini menggunakan mode pengalamatan register tidak langsung. Operasi ini digambarkan dalam gambar berikut:</p>
<p style="text-align: left;"><img class="aligncenter size-full wp-image-1300" title="fig4-11" src="http://ndoware.com/wp-content/uploads/2009/07/fig4-11.jpg" alt="fig4-11" width="592" height="324" /></p>
<p>Sebagai contoh, lihatlah perintah dibawah:</p>
<p style="text-align: center;"><img class="aligncenter size-medium wp-image-1301" title="fig4-11b" src="http://ndoware.com/wp-content/uploads/2009/07/fig4-11b-300x146.jpg" alt="fig4-11b" width="240" height="117" /></p>
<p>Kendali program akan bercabang ke (0200H + 04H = 0204H). KOnten dari A dan DPTR tidak akan terpengaruh, dan dalam hal ini, A akan memiliki 04H dan DPTR akan memiliki 0200H di dalamnya.</p>
<p><strong>Perintah Jump Bersyarat</strong></p>
<p>Terpisah dari perintah tak bersyarat yang didiskusikan  diatas, ada beberapa perintah pencabangan bersyarat, yaitu JNB, JNC, JNZ, JZ, JB, JBC, JC, DJNZ and CJNE. Perintah-perintah ini menguji satu dari syarat yang ditentukan dalam perintah tersebut. Jika syaratnya berlaku, maka Jump ke lokasi tersebut dilakukan. Semua perintah ini menggunakan alamat relative selebar 8-bit dan Jump dapat dilakukan 128 bytes sebelum dan 127 bytes sesudah perintah Jump. Pelajari perintah-perintah ini satu demi satu.</p>
<p><strong>JNB (Jump if bit not set)</strong></p>
<p>Perintah JNB menguji yang terspesifikasi bit dalam perintah, dan jika hasil yang ditemukan adalah ‘0’, maka jump dilakukan ke alamat relative yang telah ditentukan dalam perintah. Sintaksnya adalah bit JNB, dimana rel adalah alamat 8-bit relative. Alamat relative ‘rel’ adalah pemindahan bertanda. Kita dapat menguji port bit dan pencabangan program dimungkinkan untuk mengambil tindakan tertentu. Sebagai contoh, jika P1.0 dihapus dan dengan mekanisme eksternal tertentu, maka lampu dimatikan. LMP_OF adalah alamat dari lokasi memori dimana sebuah perintah yang mengganti status lampu dituliskan. LMP_OF harus berada dalam jangkauan yang dapat dialamatkan yaitu 128 sebelum dan 127 sesudah perintah JNB. Ini mungkin perintah sederhana yang membersihkan pin port, contohnya, jika lampu dikendalikan oleh pin P2.0, lalu CLR P2.0 akan melaksanakannya.</p>
<p><strong>JNZ (Jump if Not Zero)</strong></p>
<p>Perintah ini menguji konten akumulator dan jika ia bukan nol, maka Jump dilakukan ke alamat relative. Sebagai contoh penggunaan perintah JNZ, mari kita asumsikan bahwa akumulatornya sudah dibersihkan, maka perintah berikut tidak akan menyebabkan Jump.</p>
<p><img class="aligncenter size-medium wp-image-1303" title="fig4-11d" src="http://ndoware.com/wp-content/uploads/2009/07/fig4-11d-300x48.jpg" alt="fig4-11d" width="300" height="48" /><span style="font-size:11.0pt;line-height:115%; font-family:"> </span></p>
<p><span style="font-size:11.0pt;line-height:115%; font-family:">Namun, sekarang jika akumulator adalah non-zero, maka Jump akan dilakukan ke alamat relatif.</span></p>
<p><img class="aligncenter size-medium wp-image-1306" title="fig4-11e1" src="http://ndoware.com/wp-content/uploads/2009/07/fig4-11e1-300x40.jpg" alt="fig4-11e1" width="300" height="40" /></p>
<p><span style="font-size:11.0pt;line-height:115%; font-family:"> </span></p>
<p><strong>JB (Jump if Bit Set)</strong></p>
<p>Jump jika bit di-set sebagai perintah ‘JB bit, rel’ menguji sebuah bit untuk ‘1’, jika bit yang ditentukan di-set, maka Jump dilakukan ke alamat relative. Sebagai contoh, program berikut menguji pin Port1 dan pin P1.0 dan Jump ke STRT_M jika bit P1.0 di-set.</p>
<p><img class="aligncenter size-full wp-image-1307" title="fig4-11e" src="http://ndoware.com/wp-content/uploads/2009/07/fig4-11e.jpg" alt="fig4-11e" width="274" height="53" /></p>
<img src="http://ndoware.com/?ak_action=api_record_view&id=1298&type=feed" alt="" /><div class="entry clearfloat" style="border:none;padding:0;">
<blockquote>
<h3>Artikel Terkait</h3>
<ul>
		<li><a href="http://ndoware.com/perintah-pencabangan-program-acall-sjmp.html" rel="bookmark">Perintah Pencabangan Program (ACALL &#8211; SJMP)</a><!-- (18.5)--></li>
		<li><a href="http://ndoware.com/perintah-pencabangan-program-jbc-cjne.html" rel="bookmark">Perintah Pencabangan Program (JBC &#8211; CJNE)</a><!-- (17.4)--></li>
		<li><a href="http://ndoware.com/perintah-pada-mcs-51.html" rel="bookmark">Perintah Logika, Variabel Boolean dan Pencabangan pada MCS-51</a><!-- (15.6)--></li>
	</ul>
</blockquote>
</div>


]]></content:encoded>
			<wfw:commentRss>http://ndoware.com/perintah-pencabangan-program-ljmp-jb.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perintah Pencabangan Program (ACALL &#8211; SJMP)</title>
		<link>http://ndoware.com/perintah-pencabangan-program-acall-sjmp.html</link>
		<comments>http://ndoware.com/perintah-pencabangan-program-acall-sjmp.html#comments</comments>
		<pubDate>Thu, 16 Jul 2009 19:18:32 +0000</pubDate>
		<dc:creator>Didit</dc:creator>
				<category><![CDATA[Mikrokontroler]]></category>
		<category><![CDATA[ACALL]]></category>
		<category><![CDATA[MCS-51]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[SJMP]]></category>

		<guid isPermaLink="false">http://ndoware.com/?p=1278</guid>
		<description><![CDATA[Perintah Pencabangan Program
ACALL
Panggilan mutlak digunakan untuk memanggil subrutin yang berada dalam jangkauan 2K dari memori program, dimulai dari byte berikutnya mengikuti perintah ACALL. Ini adalah perintah 2-byte. Ini tidak mempengaruhi flag PSW manapun. Byte kode perintahnya memiliki alamat 11-bit, dibutuhkan untuk mengalamatkan ruang memory 2K, sebagaimana yang ditunjukkan gbr.1:

Gambar 1

Alamat-alamat 11 bit berikut ini terhubung [...]<div class="entry clearfloat" style="border:none;padding:0;">
<blockquote>
<h3>Artikel Terkait</h3>
<ul>
		<li><a href="http://ndoware.com/perintah-pencabangan-program-ljmp-jb.html" rel="bookmark">Perintah Pencabangan Program (LJMP &#8211; JB)</a><!-- (22.9)--></li>
		<li><a href="http://ndoware.com/perintah-pada-mcs-51.html" rel="bookmark">Perintah Logika, Variabel Boolean dan Pencabangan pada MCS-51</a><!-- (20.2)--></li>
		<li><a href="http://ndoware.com/perintah-pencabangan-program-jbc-cjne.html" rel="bookmark">Perintah Pencabangan Program (JBC &#8211; CJNE)</a><!-- (18.8)--></li>
	</ul>
</blockquote>
</div>


]]></description>
			<content:encoded><![CDATA[<p><strong>Perintah Pencabangan Program</strong></p>
<p><strong>ACALL</strong></p>
<p>Panggilan mutlak digunakan untuk memanggil subrutin yang berada dalam jangkauan 2K dari memori program, dimulai dari byte berikutnya mengikuti perintah ACALL. Ini adalah perintah 2-byte. Ini tidak mempengaruhi flag PSW manapun. Byte kode perintahnya memiliki alamat 11-bit, dibutuhkan untuk mengalamatkan ruang memory 2K, sebagaimana yang ditunjukkan gbr.1:</p>
<p align="center">
<div id="attachment_1276" class="wp-caption alignnone" style="width: 852px"><img class="size-large wp-image-1276" title="fig4-7" src="http://ndoware.com/wp-content/uploads/2009/07/fig4-7-1024x185.jpg" alt="Gambar 1" width="842" height="152" /><p class="wp-caption-text">Gambar 1</p></div>
<p align="center">
<p>Alamat-alamat 11 bit berikut ini terhubung dengan isi konter program yang ditambahkan untuk memperoleh alamat tujuan, dimana subrutin yang akan dipanggil berada. Ini ditunjukkan oleh gambar selanjutnya. Perintah ACALL pertama-tama menambahkan konter program sebanyak dua, karena perintahnya memiliki panjang 2-byte, contohnya: (PC) = (PC) + 2. Lalu penunjuk stack-nya ditambahkan sebanyak 1; (SP) = (SP) +1. Di lokasi ini dalam stack, tersimpan byte lebih rendah dari konter program. Penunjuk stack ditambahkan (SP) = (SP) + 1 dan byte yang lebih tinggi dari konter program yang mengikutinya disimpan.</p>
<p><strong>AJMP (Absolute Jump)</strong></p>
<p>AJMP adalah perintah jump mutlak. Jump dalam 2 KB dimulai dari alamat yang mengikuti perintah AJMP. Ini mentransfer kendali program ke lokasi dimana alamat dikalkulasi dengan cara yang sama dengan perintah ACALL, sebagaimana ditunjukkan dalam gbr.2. Konter program ditambahkan dua kali dimana perintah AJMP adalah perintah 2-byte. Konter program di-<em>load </em>dengan a<sub>10</sub> – a<sub>0</sub> 11 bits, sebagaimana ditunjukkan di gbr.2:</p>
<p align="center"><img class="aligncenter size-large wp-image-1279" title="fig4-8 copy" src="http://ndoware.com/wp-content/uploads/2009/07/fig4-8-copy-1024x659.jpg" alt="fig4-8 copy" width="1024" height="659" /></p>
<p>untuk membentuk alamat tujuan 16-bit. Pengkodean perintah AJMP ditunjukkan oleh gbr.3. Perhatikanlah perbedaannya dalam pengkodean perintah AJMP dan ACALL yang ditunjukkan oleh gbr.1 dan gbr.3.</p>
<p align="center"><img class="aligncenter size-large wp-image-1280" title="fig4-9" src="http://ndoware.com/wp-content/uploads/2009/07/fig4-9-1024x185.jpg" alt="fig4-9" width="1024" height="185" /></p>
<p>Lebih jauh lagi, kita perlu melihat perbedaan antara perintah <em>jump </em>and<em> call</em>. Berkaitan dengan perintah AJMP, saat kendali program ditransfer ke alamat tujuan, program lanjut berjalan dari tempat tersebut, dimana perintah ACALL mentransfer kendali ke alamat tujuan dan kendali dikembalikan ke alamat mengikuti perintah ACALL berkaitan dengan perintah RET. Alamat return disimpan dalam stack sebelum mentransfer kendali ke alamat tujuan. Maka, dalam semua kasus perintah Jump, baik stack maupun penunjuk stack dituliskan.</p>
<p>­­­­</p>
<p><strong>SJMP (Short Jump)</strong></p>
<p>Sebuah Short Jump mentransfer kendali ke alamat tujuan dalam 127 bytes yang mengikuti dan 128 yang mengawali perintah SJMP. Alamat tujuannya ditentukan sebagai sebuat alamat relative 8-bit. Ini adalah Jump tidak bersyarat. Perintah SJMP menambahkan konter program sebanyak 2 dan menambahkan alamat relatif ke dalamnya untuk mendapatkan alamat tujuan. Alamat relatif tersebut ditentukan dalam perintah sebagai ‘SJMP <em>rel</em>’. Sebagai contoh, lihatlah perintah berikut dengan alamat tujuannya, yang membentuk loop tidak terbatas.</p>
<p align="center"><img class="aligncenter size-full wp-image-1281" title="fig4-9b" src="http://ndoware.com/wp-content/uploads/2009/07/fig4-9b.jpg" alt="fig4-9b" width="201" height="72" /></p>
<p>Perintah SJMP diatas berlokasi di alamat yang terkait dengan label ‘HERE’, yaitu 0100h. Mari kita mengkalkulasi alamat tujuan:</p>
<p>(i)      Tambahkan ‘2’ ke konter program, contoh: 0100H + 02H = 0102H. Sekarang PC akan mempunyai 0102H</p>
<p>(ii)    Sekarang tambahkan alamat relative ke PC. Untuk alamat tujuan 0100H, kita perlu mengurangi sebanyak 2. Atau alamat relatifnya sebanyak -2. Alamatnya harus berada dalam bentuk pengganti ‘2’. 2 pengganti -2 adalah FEH. Maka, perintah ‘SJMP FEH’ akan membentuk loop yang tidak terbatas.­­­</p>
<img src="http://ndoware.com/?ak_action=api_record_view&id=1278&type=feed" alt="" /><div class="entry clearfloat" style="border:none;padding:0;">
<blockquote>
<h3>Artikel Terkait</h3>
<ul>
		<li><a href="http://ndoware.com/perintah-pencabangan-program-ljmp-jb.html" rel="bookmark">Perintah Pencabangan Program (LJMP &#8211; JB)</a><!-- (22.9)--></li>
		<li><a href="http://ndoware.com/perintah-pada-mcs-51.html" rel="bookmark">Perintah Logika, Variabel Boolean dan Pencabangan pada MCS-51</a><!-- (20.2)--></li>
		<li><a href="http://ndoware.com/perintah-pencabangan-program-jbc-cjne.html" rel="bookmark">Perintah Pencabangan Program (JBC &#8211; CJNE)</a><!-- (18.8)--></li>
	</ul>
</blockquote>
</div>


]]></content:encoded>
			<wfw:commentRss>http://ndoware.com/perintah-pencabangan-program-acall-sjmp.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perintah Logika, Variabel Boolean dan Pencabangan pada MCS-51</title>
		<link>http://ndoware.com/perintah-pada-mcs-51.html</link>
		<comments>http://ndoware.com/perintah-pada-mcs-51.html#comments</comments>
		<pubDate>Tue, 14 Jul 2009 05:53:19 +0000</pubDate>
		<dc:creator>Didit</dc:creator>
				<category><![CDATA[Mikrokontroler]]></category>
		<category><![CDATA[assembler]]></category>
		<category><![CDATA[boolean]]></category>
		<category><![CDATA[gerbang logika]]></category>
		<category><![CDATA[Percabangan]]></category>
		<category><![CDATA[variabel]]></category>

		<guid isPermaLink="false">http://ndoware.com/?p=1194</guid>
		<description><![CDATA[Perintah Logika
Operasi gerbang logika AND, OR, Exclusive-OR dapat dijalankan dalam MCS-51. Perintah-perintah ini menerima dua operand 8-bit, dan hasilnya disimpan di tujuan, tidak ada flag yang dipengaruhi oleh perintah-perintah ANL, OR dan XOR. Ada beberapa perintah operand-tunggal seperti CLR, SETB dan CPL; perintah rotasi RR, RRC, RL, RL; dan perintah SWAP. Penting untuk dicatat bahwa [...]<div class="entry clearfloat" style="border:none;padding:0;">
<blockquote>
<h3>Artikel Terkait</h3>
<ul>
		<li><a href="http://ndoware.com/perintah-pencabangan-program-jbc-cjne.html" rel="bookmark">Perintah Pencabangan Program (JBC &#8211; CJNE)</a><!-- (15.5)--></li>
		<li><a href="http://ndoware.com/perintah-pencabangan-program-ljmp-jb.html" rel="bookmark">Perintah Pencabangan Program (LJMP &#8211; JB)</a><!-- (15.2)--></li>
		<li><a href="http://ndoware.com/perintah-pencabangan-program-acall-sjmp.html" rel="bookmark">Perintah Pencabangan Program (ACALL &#8211; SJMP)</a><!-- (14.3)--></li>
	</ul>
</blockquote>
</div>


]]></description>
			<content:encoded><![CDATA[<p><strong>Perintah Logika</strong></p>
<p>Operasi gerbang logika AND, OR, Exclusive-OR dapat dijalankan dalam MCS-51. Perintah-perintah ini menerima dua operand 8-bit, dan hasilnya disimpan di tujuan, tidak ada <em>flag</em> yang dipengaruhi oleh perintah-perintah ANL, OR dan XOR. Ada beberapa perintah operand-tunggal seperti CLR, SETB dan CPL; perintah rotasi RR, RRC, RL, RL; dan perintah SWAP. Penting untuk dicatat bahwa perintah CPL adalah komplementer dari akumulator tanpa mempengaruhi <em>flag</em> manapun. Namun, perintah RLC dan RRC memodifikasi <em>flag</em> CY. Perintah RLC menggerakkan bit-7 dari akumulator ke posisi CY. Secara serupa, perintah RRC menggerakkan bit-0 dari akumulator ke <em>flag</em> CY. Perintah SWAP A secara sederhana menukar logika rendah dan tinggi dari akumulator dan tidak ada <em>flag</em> yang dipengaruhi. Perintah-perintah logika ditunjukkan dalam tabel berikut:</p>
<p><img class="aligncenter size-full wp-image-1195" title="tabel4-3" src="http://ndoware.com/wp-content/uploads/2009/07/tabel4-3.jpg" alt="tabel4-3" width="594" height="538" /></p>
<p><strong>Perintah Manipulasi Variabel Boolean</strong></p>
<p>Operand untuk manipulasi variable Boolean dijelaskan dalam perintah-perintah ini. Berkaitan dengan perintah-perintah dua-operand, terdapat bit tujuan dan bit sumber. Sebagai contoh, perintah MOV memiliki dua operand bit-tunggal. Operasi OR, AND dengan dua operand bit-tunggal adalah mungkin. Perintah-perintah operandi-tunggal CLR, SETB, CPL memodifikasi lokasi bit yang ditentukan dalam instruksi. Tabel berikut menunjukkan perintah-perintah manipulasi Boolean:</p>
<p><img class="aligncenter size-full wp-image-1196" title="tabel4-4" src="http://ndoware.com/wp-content/uploads/2009/07/tabel4-4.jpg" alt="tabel4-4" width="651" height="361" /></p>
<p><strong>Perintah Pencabangan Program</strong></p>
<p>MCS-51 dapat melakukan operasi cabang bersyarat dan tidak bersyarat. Terdapat perintah Jump, Call, dan Return. Perintah Jump memiliki tiga jenis: Jump pandek (SJMP), Jump panjang (LJMP) dan Jump mutlak (AJMP). Jump pendek mentransfer kendali dalam jangkauan range 256-byte, yaitu dari -128 hingga +127 bytes relative ke byte pertama dari byte perintah yang mengikuti. Jump mutlak memungkinkan penentuan alamat 11-bit dalam perintah. Tujuannya harus berada dalam blok 2K dari memori program dari perintah selanjutnya diikuti oleh perintah AJMP. Berkaitan dengan perintah LJMP, sebuah alamat 16-bit ditentukan dalam perintah dan sebuah Jump ke mana saja mungkin untuk dilakukan dalam jangkauan blok meori program 64K . Serupa dengan Jump mutalk dan panjang, terdapat perintah Call mutlak (ACALL) dan Call panjang (LCALL). Call absolute memungkinkan penentuan alamat 11-bit dalam perintah, dan memanggil subrutin dalam blok memori program 2K, dimulai dari alamat perintah selanjutnya adalah mungkin untuk dilakukan. LCALL menggunakan alamat 16-bit dalam perintah dan subrutin dimana saja dalam jangkauan blok memori program 64K yang dapat dipanggil. Terdapat perintah Jump bersyarat JZ, CJNE, DJNZ, JZ rel yang menguji akumulator untuk nol dan kemudian mentransfer kendali ke alamat dalam memori program yang telah diberikan oleh alamat relative. Perintah CJNE membandingkan operandi pertama dengan operandi kedua dan kemudian melakukan operasi cabang jika kedua operandi tidak sama dengan. Perintah DJNZ mengurangi operandi sumber dan hasilnya disimpan dalam operandi sumber. Jump dicocokkan ke alamat relative jika hasilnya bukan nol. DJNZ dapat digunakan untuk mengimplementasikan jeda rutin perangkat halus. Terpisah dari hal-hal sebelumnya, terdapat perintah RET dan RETI. RETI dan RET mentransfer kendali ke alamt pengembalian yang disimpan dalam stack; satu-satunya perbedaan adalah bahwa sebagai tambahan fungsi pengembalian, perintah RETI memungkinkan interupsi level prioritas terkini. Semua perintah pencabangan program dapat dilihat di tabel berikut:</p>
<p><img class="aligncenter size-full wp-image-1197" title="tabel4-5" src="http://ndoware.com/wp-content/uploads/2009/07/tabel4-5.jpg" alt="tabel4-5" width="791" height="432" /></p>
<img src="http://ndoware.com/?ak_action=api_record_view&id=1194&type=feed" alt="" /><div class="entry clearfloat" style="border:none;padding:0;">
<blockquote>
<h3>Artikel Terkait</h3>
<ul>
		<li><a href="http://ndoware.com/perintah-pencabangan-program-jbc-cjne.html" rel="bookmark">Perintah Pencabangan Program (JBC &#8211; CJNE)</a><!-- (15.5)--></li>
		<li><a href="http://ndoware.com/perintah-pencabangan-program-ljmp-jb.html" rel="bookmark">Perintah Pencabangan Program (LJMP &#8211; JB)</a><!-- (15.2)--></li>
		<li><a href="http://ndoware.com/perintah-pencabangan-program-acall-sjmp.html" rel="bookmark">Perintah Pencabangan Program (ACALL &#8211; SJMP)</a><!-- (14.3)--></li>
	</ul>
</blockquote>
</div>


]]></content:encoded>
			<wfw:commentRss>http://ndoware.com/perintah-pada-mcs-51.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Set Perintah MCS-51</title>
		<link>http://ndoware.com/set-perintah-mcs-51.html</link>
		<comments>http://ndoware.com/set-perintah-mcs-51.html#comments</comments>
		<pubDate>Fri, 10 Jul 2009 10:09:36 +0000</pubDate>
		<dc:creator>Didit</dc:creator>
				<category><![CDATA[Mikrokontroler]]></category>
		<category><![CDATA[MCS-51]]></category>
		<category><![CDATA[Perintah MCS-51]]></category>

		<guid isPermaLink="false">http://ndoware.com/?p=1180</guid>
		<description><![CDATA[Set instruksi dari MCS-51 terdiri dari perintah transfer data, perintah aritmatika, perintah logika, perintah manipulasi variable Boolean dan instruksi transfer. MCS-51 mendukung 111 perintah yang dapat diklasifikasikan sebagai perintah satu-byte, dua-byte, dan tiga-byte. Ada 45 perintah satu byte, 45 perintah dua-byte, dan 17 perintah tiga-byte. Format perintah terdiri dari sebuah mnemonic diikuti oleh tujuan dan [...]<div class="entry clearfloat" style="border:none;padding:0;">
<blockquote>
<h3>Artikel Terkait</h3>
<ul>
		<li><a href="http://ndoware.com/perintah-pencabangan-program-ljmp-jb.html" rel="bookmark">Perintah Pencabangan Program (LJMP &#8211; JB)</a><!-- (8.2)--></li>
		<li><a href="http://ndoware.com/perintah-pencabangan-program-acall-sjmp.html" rel="bookmark">Perintah Pencabangan Program (ACALL &#8211; SJMP)</a><!-- (8.1)--></li>
		<li><a href="http://ndoware.com/perintah-pada-mcs-51.html" rel="bookmark">Perintah Logika, Variabel Boolean dan Pencabangan pada MCS-51</a><!-- (7.5)--></li>
	</ul>
</blockquote>
</div>


]]></description>
			<content:encoded><![CDATA[<p>Set instruksi dari MCS-51 terdiri dari perintah transfer data, perintah aritmatika, perintah logika, perintah manipulasi variable Boolean dan instruksi transfer. MCS-51 mendukung 111 perintah yang dapat diklasifikasikan sebagai perintah satu-byte, dua-byte, dan tiga-byte. Ada 45 perintah satu byte, 45 perintah dua-byte, dan 17 perintah tiga-byte. Format perintah terdiri dari sebuah mnemonic diikuti oleh tujuan dan source fields, sebagaimana ditunjukkan di gambar berikut:</p>
<p><img class="aligncenter size-large wp-image-1182" title="fig4-6" src="http://ndoware.com/wp-content/uploads/2009/07/fig4-6-1024x160.jpg" alt="fig4-6" width="1024" height="160" /></p>
<p><strong>Perintah Transfer Data</strong></p>
<p>Perintah transfer data dari 8051 dapat dilihat dalam tabel di bawah. Terdapat perintah MOV, MOVX, MOVC, PUSH, POP, dan pertukaran XCHG, perintah-perintah XCH. Perintah transfer data tidak mempengaruhi flag PSW manapun. Namun, jika terdapat MOV atau POP langsung ke PSW, ini dapat dipengaruhi oleh PSW.</p>
<p><img class="aligncenter size-full wp-image-1183" title="tabel-4-2" src="http://ndoware.com/wp-content/uploads/2009/07/tabel-4-2.jpg" alt="tabel-4-2" width="710" height="527" /></p>
<p><strong>Perintah Aritmatika</strong></p>
<p>MCS-51 mendukung operasi aritmatika 8-bit tak-bertanda. Namun, ini memungkinkan untuk menjalankan penambahan dan pengurangan bertanda dan tak-bertanda dengan menggunakan flag OV. Aritmatika BCD juga memungkinkan dalam BCD yang terkemas. Ada operasi pembagian dan perkalian tak-bertanda yang didukung langsung oleh perintah-perintah. Berikut adalah daftar perintah aritmatika:</p>
<p><img class="aligncenter size-full wp-image-1184" title="fig-4-3" src="http://ndoware.com/wp-content/uploads/2009/07/fig-4-3.jpg" alt="fig-4-3" width="716" height="535" /></p>
<img src="http://ndoware.com/?ak_action=api_record_view&id=1180&type=feed" alt="" /><div class="entry clearfloat" style="border:none;padding:0;">
<blockquote>
<h3>Artikel Terkait</h3>
<ul>
		<li><a href="http://ndoware.com/perintah-pencabangan-program-ljmp-jb.html" rel="bookmark">Perintah Pencabangan Program (LJMP &#8211; JB)</a><!-- (8.2)--></li>
		<li><a href="http://ndoware.com/perintah-pencabangan-program-acall-sjmp.html" rel="bookmark">Perintah Pencabangan Program (ACALL &#8211; SJMP)</a><!-- (8.1)--></li>
		<li><a href="http://ndoware.com/perintah-pada-mcs-51.html" rel="bookmark">Perintah Logika, Variabel Boolean dan Pencabangan pada MCS-51</a><!-- (7.5)--></li>
	</ul>
</blockquote>
</div>


]]></content:encoded>
			<wfw:commentRss>http://ndoware.com/set-perintah-mcs-51.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mode pengalamatan 8051</title>
		<link>http://ndoware.com/mode-pengalamatan-8051.html</link>
		<comments>http://ndoware.com/mode-pengalamatan-8051.html#comments</comments>
		<pubDate>Mon, 06 Jul 2009 16:26:24 +0000</pubDate>
		<dc:creator>Didit</dc:creator>
				<category><![CDATA[Mikrokontroler]]></category>
		<category><![CDATA[8051]]></category>
		<category><![CDATA[Pengalamatan]]></category>
		<category><![CDATA[register]]></category>

		<guid isPermaLink="false">http://ndoware.com/?p=1137</guid>
		<description><![CDATA[Mode pengalamatan menjabarkan cara bagaimana operandi diakses dengan instruksi. Ada 5 mode pengalamatan yang didukung oleh MCS-51:
Pengalamatan register 
Dalam pengalamatan register, register R0 sampai R7 dari register bank yang telah dipilih, akumulator, B-register, bit pembawa dan DPTR digunakan. Sebuah instruksi MCS-51 menggunakan mode pengalamatan ini menunjukkan register-register R0 sampai R7 opcode-nya sendiri. Bit-bit yang kurang [...]<div class="entry clearfloat" style="border:none;padding:0;">
<blockquote>
<h3>Artikel Terkait</h3>
<ul>
		<li><a href="http://ndoware.com/mikrokontroler8051.html" rel="bookmark">Mikrokontroler 8051</a><!-- (10.1)--></li>
		<li><a href="http://ndoware.com/organisasi-memori-mcs-51.html" rel="bookmark">Organisasi Memori MCS-51</a><!-- (8.3)--></li>
		<li><a href="http://ndoware.com/perintah-pertukaran-dan-swap.html" rel="bookmark">Perintah Pertukaran dan SWAP</a><!-- (7.8)--></li>
	</ul>
</blockquote>
</div>


]]></description>
			<content:encoded><![CDATA[<p>Mode pengalamatan menjabarkan cara bagaimana operandi diakses dengan instruksi. Ada 5 mode pengalamatan yang didukung oleh MCS-51:</p>
<p><strong>Pengalamatan register </strong></p>
<p>Dalam pengalamatan register, register R0 sampai R7 dari register bank yang telah dipilih, akumulator, B-register, bit pembawa dan DPTR digunakan. Sebuah instruksi MCS-51 menggunakan mode pengalamatan ini menunjukkan register-register R0 sampai R7 opcode-nya sendiri. Bit-bit yang kurang signifikan dari opcode mengindikasikan register mana yang akan digunakan. hal ini ditunjukkan oleh gambar berikut</p>
<p><img class="aligncenter size-large wp-image-1157" title="fig4-1" src="http://ndoware.com/wp-content/uploads/2009/07/fig4-1-1024x300.jpg" alt="fig4-1" width="1024" height="300" /></p>
<p><strong>Pengalamatan langsung </strong></p>
<p>Dalam mode pengalamatan langsung, alamat langsung dari operand ditentukan oleh instruksi itu sendiri sebagaimana ditunjukkan di bawah. Mode pengalamatan langsung menggunakan 128 bytes RAM internal yang lebih rendah dan register fungsi khusus (SFR). Sebagai contoh, instruksi MOV A, Direct, menggunakan alamat langsung dari operand sumber. Maka, MOV A, 54H akan mentransfer konten dari lokasi memori on-chip, yang mana alamatnya adalah 54H di akumulator. Dengan cara serupa, untuk membaca konten dari SFR SBUF ke dalam akumulator, kita dapat menggunakan instruksi MOV A, SBUF. Perlu dicatat bahwa SFR SBUF memiliki alamat langsung 99H, yang terletak di 128 bytes RAM on-chip yang lebih lebih tinggi. Gbr.4.3 menunjukkan ruang memori yang dialamatkan oleh mode pengalamatan ini. Ini adalah satu-satunya metode untuk mengakses SFRs.</p>
<p><img class="aligncenter size-large wp-image-1156" title="fig4-2" src="http://ndoware.com/wp-content/uploads/2009/07/fig4-2-1024x178.jpg" alt="fig4-2" width="1024" height="178" /></p>
<p><strong>Pengalamatan register tidak langsung </strong></p>
<p>Pengalamatan register tidak langsung menggunakan salah satu dari register-register R0 atau R1, dari register bank yang telah dipilih, sebagai penunjuk ke lokasi di blok memori data sebesar 256 bytes. Hal tersebut dapat merujuk ke 128 bytes RAM internal yang lebih rendah, (dan 128 bytes RAM internal yang lebih tinggi berkaitan dengan 8032/52), atau 256 bytes memori data eksternal yang lebih rendah. Gbr.4.4 menunjukkan alamat memori yang dialamatkan oleh mode pengalamatan tidak langsung. Perlu dicatat bahwa SFRs tidak dialamatkan oleh mode ini. Secara serupa, memori eksternal melampaui 256 bytes yang lebih rendah tidak dialamatkan.</p>
<p><img class="aligncenter size-medium wp-image-1149" title="fig4-3" src="http://ndoware.com/wp-content/uploads/2009/07/fig4-3-300x288.jpg" alt="fig4-3" width="300" height="288" /><img class="aligncenter size-medium wp-image-1150" title="fig4-4" src="http://ndoware.com/wp-content/uploads/2009/07/fig4-4-300x177.jpg" alt="fig4-4" width="300" height="177" /></p>
<p><strong>Pengalamatan segera </strong></p>
<p>Pengalamatan segera memungkinkan penggunaan data segera (konstan) sebagai bagian dari instruksi. Sebagai contoh, instruksi MOV A, #45H, akan menyimpan data 45H konstan atau segera di dalam akumulator. Perlu dicatat bahwa symbol # di depan konstan mengindikasikan tipe data segera.</p>
<p><strong>Register dasar ditambah </strong></p>
<p>Pengalamatan register indeks Mode ini memungkinkan byte diakses dari memori program, dimana alamat dihitung sebagai jumlah dari register dasar (DPTR atau PC) dan register indeks, akumulator. Ini ditunjukkan di gbr.4.5. Sebagai contoh, instruksi <strong>MOVC A, @A+DPTR</strong> akan mengambil byte dari memori program, dimana alamatnya dihitung dengan menambahkan konten 8-bit tak bertanda yang asli dari akumulator dan konten 16-bit dari DPTR. Jika DPTR-nya memiliki 0FFF0H dan akumulatornya memiliki 05H, maka byte yang tersimpan di 0FFF5H akan dikopi kedalam akumulator. Metode ini membantu akses tabel pencarian.</p>
<p><img class="aligncenter size-medium wp-image-1151" title="fig4-5" src="http://ndoware.com/wp-content/uploads/2009/07/fig4-5-300x150.jpg" alt="fig4-5" width="300" height="150" /></p>
<img src="http://ndoware.com/?ak_action=api_record_view&id=1137&type=feed" alt="" /><div class="entry clearfloat" style="border:none;padding:0;">
<blockquote>
<h3>Artikel Terkait</h3>
<ul>
		<li><a href="http://ndoware.com/mikrokontroler8051.html" rel="bookmark">Mikrokontroler 8051</a><!-- (10.1)--></li>
		<li><a href="http://ndoware.com/organisasi-memori-mcs-51.html" rel="bookmark">Organisasi Memori MCS-51</a><!-- (8.3)--></li>
		<li><a href="http://ndoware.com/perintah-pertukaran-dan-swap.html" rel="bookmark">Perintah Pertukaran dan SWAP</a><!-- (7.8)--></li>
	</ul>
</blockquote>
</div>


]]></content:encoded>
			<wfw:commentRss>http://ndoware.com/mode-pengalamatan-8051.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

