teori dasar barcode

  • Published on
    15-Jan-2016

  • View
    52

  • Download
    0

Embed Size (px)

DESCRIPTION

atmega

Transcript

<ul><li><p>BAB II TINJAUAN PUSTAKA </p><p>2.1 Bahasa Assembly Menurut Jogiyanto Hartono, MBA, Ph.D. Pengenalan Komputer </p><p>(2000:600), Sebuah mikrokontroler tidak akan bekerja tanpa adanya program </p><p>yang diberikan kepadanya. Program tersebut memberitahukan mikrokontroler apa </p><p>yang harus dikerjakannya. Bahasa assembly adalah bahasa komputer yang </p><p>kedudukannya ada diantara bahasa mesin dan bahasa tingkat tinggi misalnya </p><p>bahasa C atau bahasa pascal. Dikatakan sebagai bahasa level tinggi karena </p><p>masukannya berupa kata-kata dan pernyataan yang mudah dimengerti oleh </p><p>manusia, meskipun masih jauh berbeda dengan bahasa manusia sesungguhnya </p><p>Bahasa mesin adalah kumpulan kode biner yang merupakan instruksi yang </p><p>bisa dijalankan oleh komputer. Sedangkan bahasa assembly merupakan program </p><p>yang menterjemahkan program aplikasi menjadi bahasa mesin. Bahasa assembly </p><p>memakai kode mnemonic untuk menggantikan kode biner, agar lebih mudah </p><p>diingat sehingga lebih memudahkan penulisan program pada mikrokontroler. </p><p>Menurut Jasson Perstiliano dalam bukunya Strategi Bahasa Assembler (2005:3), </p><p>Bahasa Assembler terdiri dari struktur bahasa assembler, perangkat instruksi, </p><p>simbol khusus dan pengalamatan data. </p><p>2.1.1 Struktur Bahasa Assembly Struktur dasar program assembly menganut satu baris untuk satu perintah. </p><p>[label:] Mnemonic [Operand][,Operand][;Komentar] </p><p>Label </p><p> Digunakan untuk mewakili nomor memori program dari instruksi pada </p><p>baris yang bersangkutan. Apabila ada perintah JUMP (loncat) ke suatu label maka </p><p>assembler akan mengingat nomor memori program yang dimaksud dan </p><p>menjalankan instruksi-instruksi yang terdapat dalam label tersebut. </p><p>Mnemonic </p><p> Merupakan singkatan perintah yang mudah diingat. Bagian ini adalah </p><p>bagian yang menginstruksikan suatu program untuk bekerja sesuai perintah yang </p><p>diterimanya. </p><p>4 </p></li><li><p>5 </p><p> Ada dua macam mnemonic, yaitu mnemonic yang dipakai sebagai instruksi </p><p>pengendali proses, misalnya MOV, ADD, JMP dan lain sebagainya. Dan </p><p>mnemonic yang dipakai untuk mengatur kerja program assembly atau dikenal </p><p>sebagai Directive assembler, contoh dari Directive assembler antara lain, ORG, </p><p>DB, DW, EQU. </p><p>Operand </p><p> Adalah bagian yang merupakan objek dari sebuah instruksi atau bagian </p><p>yang harus dieksekusi oleh program assembly sesuai perintah dari bagian </p><p>mnemonic. </p><p>Komentar </p><p> Bagian ini tidak berpengaruh pada jalannya proses dan kerja program. </p><p>Bagian ini hanya dimaksudkan untuk mempermudah seseorang mengerti maksud </p><p>dari program tersebut. </p><p>2.1.2 Register Untuk mempelajari bahasa assembler, harus menghafalkan semua register </p><p>dan mengerti apa kegunaannya, karena akan selalu berhubungan dengan register </p><p>register tersebut. Register adalah sebagian kecil memory komputer yang dipakai </p><p>untuk tempat penampungan data dengan ketentuan bahwa data yang terdapat </p><p>dalam register dapat diproses dalam berbagai operasi dengan melihat berapa besar </p><p>kemampuan menampung register tersebut. Secara umum register dibagi dalam </p><p>lima golongan : </p><p>1. General Purpose Register </p><p> Register AX, Register AX merupakan register aritmatika karena register ini selalu dipakai dalam operasi pertambahan,pengurangan,perkalian dan </p><p>pembagian </p><p> Register BX, Register BX merupakan salah satu dari dua register base addressing mode, yang dapat mengambil atau menulis langsung dari/ke </p><p>memori. </p><p> Register CX, Register CX merupakan suatu counter untuk meletakan jumlah lompatan pada loop-loop yang anda lakukan. </p></li><li><p>6 </p><p> Register DX Register ini digunakan untuk menampung sisa hasil pembagian 16 bit. </p><p>2. Segment Register </p><p>Terdiri dari 20 jalur alamat external tetapi memiliki 16 bit alamat internal. </p><p>Register yang berukuran 16 bit ini berfungsi untuk mencatat alamat sebagai </p><p>penunjuk lokasi data di memori. </p><p> Register CS : Code Segment Register Menunjukan tempat atau segment yang sedang aktif. </p><p> Register DS : Data Segment Register Menunjukan alamat atau segment di mana data-data program di simpan. </p><p> Register SS : Stack Segment Register Menunjukan letak dari segment yang digunakan oleh stack. </p><p> Register ES : Extra Segment Register Register tambahan yang berguna untuk menunjukan suatu alamat di </p><p>memori, misalnya alamat memori video. </p><p>3. Pointer Register </p><p>Register ini secara umum digunakan sebagai penunjuk (pointer) terhadap suatu </p><p>lokasi di memori dan berukuran 16 bit. </p><p> IP : Instruction Pointer Register SP : Stack Pointer Register BP: Base Pointer Register </p><p>4. Index Register </p><p> SI : Source Index Register DI : Destination Index Register </p><p>5. Flag Register </p><p>Register yang berukuran 1 bit ini menunjukkan kondisi dari suatu keadaan </p><p>(ya/tidak atau 1/0). Kondisi-kondisi yang dicatat oleh flag register pada </p><p>mikroprosessor adalah sebagai berikut : </p></li><li><p>7 </p><p> Auxiliary, untuk menyesuaikan nilai AL pada penjumlahan atau pengurangan suatu Binary Code Decimal apakah terjadi Carry atau </p><p>Borrow. </p><p> Carry, benilai 1 bila terjadi Carry pada operasi penjumlahan atau terjadi Borrow pada operasi pengurangan. </p><p> Interrupt, bila bit ini bernilai 0 maka CPU akan mengabaikan Interrupt yang terjadi. </p><p> Overflow, bernilai 1 apabila terjadi overflow pada operasi aritmatika. </p><p>2.1.3 Perintah Debug 1. Q (Quit) </p><p> Bila anda mengetikan huruf Q dan menekan enter, maka akan segera </p><p>kembali ke dos prompt. </p><p>2. R (Register) </p><p> Perintah R digunakan untuk mengetahui isi masing-masing register pada </p><p>saat mengetik R dan menekan enter. </p><p>3. A (Assembler) </p><p> Perintah Assembler berguna untuk tempat menulis program Assembler. </p><p> Contoh : -A100 0FD8:100 4. N (Name) </p><p> Perintah ini digunakan untuk memberi nama suatu program assembler. </p><p>5. RCX (Register CX) </p><p> Perintah ini digunakan untuk mengetahui dan memperbaruhi isi register </p><p>CX yang merupakan tempat penampungan panjang program yang sedang </p><p>aktif. </p><p>6. RIP (Register IP) </p><p> Perintah ini digunakan untuk memberitahu komputer untuk memulai </p><p>memproses program dari titik tertentu. </p><p>7. W (Write) </p><p> Perintah ini digunakan untuk menulis/ menyimpan program. </p><p>8. G (Go) </p><p> Perintah ini digunakan untuk menjalankan suatu program. </p></li><li><p>8 </p><p>9. Komentar </p><p> Bagian komentar tidak mutlak ada dalam sebuah program, namun bagian </p><p>ini sering kali dibutuhkan untuk menjelaskan proses-proses kerja ataupun </p><p>catatan-catatan tertentu pada bagian-bagian program. Bahkan pembuat </p><p>program sekalipun seringkali membutuhkannya untuk mengingat kembali </p><p>jalannya program rancangannya. Penggunaan komentar biasanya diawali </p><p>dengan tanda ; dan dapat diletakkan pada bagian manapun dari suatu </p><p>program. Sebuah komentar tidak hanya digunakan untuk menjelaskan satu </p><p>baris perintah saja, namun dapat juga digunakan untuk menjelaskan </p><p>kinerja dari beberapa baris perintah atau memberikan catatan-catatan </p><p>tertentu. </p><p>2.1.4 Perintah-Perintah Dasar Assembly 1. MOV, perintah MOV adalah perintah untuk mengisi, memindahkan, </p><p>memperbarui isi suatu register, variable ataupun lokasi memori. </p><p>Adapun tata penulisan perintah MOV adalah : MOV [operand A], [Operand B] </p><p>2. INT (Interrupt), Interrupt adalah suatu permintaan khusus untuk </p><p>melakukan sesuatu dan harus segera dipenuhi oleh Mikroprosessor </p><p>(Prestiliano, 2005:14). Bila terjadi interupsi, maka komputer akan </p><p>menghentikan dahulu apa yang sedang dikerjakannya dan melakukan apa </p><p>yang diminta oleh yang menginterupsi. </p><p>3. ORG 100h, pada program COM perintah ini akan selalu digunakan. </p><p>Perintah ini digunakan untuk memberitahukan assembler supaya program </p><p>pada saat dijalankan (di-Load ke memori) ditaruh mulai pada offset ke </p><p>100h(256) byte. Dapat dikatakan juga bahwa kita menyediakan 100h byte </p><p>kosong pada saat program dijalankan. 100h byte kosong ini nantinya akan </p><p>ditempati oleh PSP (Program Segment Prefix) dari program tersebut. PSP </p><p>ini digunakan oleh DOS untuk mengontrol jalannya program pada DOS. </p><p>4. PUSH, perintah untuk memasukkan isi register kedalam stack. </p><p>5. POP, perintah untuk mengeluarkan isi register dari stack. </p><p>6. DISPCLR (Display Clear), instruksi ini akan menghapus semua display </p><p>dan mengembalikan kursor ke posisi awal ( alamat 0 ). </p></li><li><p>9 </p><p>7. FUNCSET ( Function Set ), mengatur panjang data yang ingin </p><p>ditampilkan pada LCD, dan biasanya tidak lebih dari 16 karakter. </p><p>8. ENTRMOD ( Entry Mode Set ), instruksi ini mengatur arah pergerakan </p><p>kursor, apakah display akan digeser </p><p>9. Delay, berfungsi sebagai penunda waktu. </p><p>10. AL, berfungsi untuk menuliskan karakter yang ingin di cetak. </p><p>11. CX, berfungsi menentukan banyaknya karakter tersebut akan dicetak. </p><p>12. Control Word ( CW ), berisi tentang informasi mode dan bit/reset yang </p><p>kemudian dikirim oleh CPU ke mikrokontroller. Dan harus di tulis di </p><p>setiap program assembly walaupun program tersebut digabung menjadi </p><p>satu. </p><p>13. JMP, Perintah JMP (JUMP) ini digunakan untuk melompat menuju </p><p>tempat yang ditunjukan oleh perintah JUMP. </p><p>Adapun syntax-nya adalah : JUMP Tujuan Dimana tujuannya dapat berupa label, perintah JUMP yang digunakan </p><p>pada contoh di atas dimaksudkan agar melewati tempat data program </p><p>karena jika tidak ada perintah JUMP ini . Maka data program yang akan </p><p>dieksekusi kemungkinan besar akan menyebabkan program menjadi hang </p><p>atau tidak jalan. </p><p>14. LOOP, perintah untuk melakukan perulangan. Yang mempunyai tata </p><p>penulisan sebagai berikut : LOOP [lokasi memory] </p><p>Dalam memberikan sebuah nilai pada operand dapat dilakukan dengan </p><p>langsung memberikan nilai yang diinginkan seperti pada perintah MOV 00,# 05H </p><p>yang memberikan nilai 5 pada alamat 00. Cara lain dengan menggunakan </p><p>lambang yang telah ditentukan oleh assembler. Dengan ekspresi assembler, </p><p>sebuah operand dapat diekspresikan dalam bermacam-macam bentuk sesuai </p><p>dengan keinginan pembuat program. </p><p>Hal ini membuat pembuatan program dapat dilakukan lebih mudah, </p><p>adapun ekspresi assembler terdiri dari : </p></li><li><p>10 </p><p>1. Basis Bilangan Mikroprosesor intel menggunakan akhiran B untuk ekspresi biner, Q </p><p>untuk ekspresi oktal, D untuk ekspresi decimal dan H untuk ekspresi </p><p>heksa. Oleh karena itu, sebuah bilangan 10 desimal dapat dieksperikan sebagai </p><p>berikut : 00001010B untuk biner 12Q untuk Oktal 10D atau 10 (tanpa akhiran) untuk decimal 0AH untuk heksa </p><p>2. String Karakter Ekspresi string dilakukan dengan memberikan tanda diantara nilai yang </p><p>diinginkan. Ekspresi ini sangat berguna jika pembuat program ingin </p><p>menuliskan perintah yang membutuhkan nilai ASCII dari suatu operand. </p><p>Selain itu, Susanto (1995:23) juga menyimpulkan bahwa, Assembler </p><p>mengizinkan penggunaan beberapa bentuk angka yaitu : untuk menuliskan angka </p><p>dalam bentuk desimal, dapat digunakan tanda D pada akhir angka tersebut atau </p><p>dapat juga tidak diberi tanda sama sekali, contoh : 298D atau 289 saja. </p><p>1. Biner Untuk menuliskan angka dalam bentuk biner (0..1), harus ditambahkan tanda </p><p>B pada akhir angka tersebut, contoh : 01100111B. </p><p>2. Hexadesimal Untuk menuliskan angka dalam bentuk hexadesimal (0..9,A..F), harus </p><p>ditambahkan tanda H pada akhir angka tersebut. Perlu diperhatikan bahwa </p><p>bila angka pertama dari hexa berupa karakter (A..F) maka angka nol harus </p><p>ditambahkan didepannya. Bila hal ini tidak dilakukan, assembler akan </p><p>menganggapnya sebagai suatu label, bukannya sebagai nilai hexa. Contoh </p><p>penulisan yang benar : 0A12H, 2A02H. </p><p>3. Label Label dapat didefinisikan dengan ketentuan akhir dari nama label tersebut </p><p>harus berupa tanda titik dua (:). Pemberian nama label dapat digunakan : </p><p> Huruf : A..Z (Huruf besar dan kecil tidak dibedakan) Angka : 0..9 Karakter khusus : @ . _ $ </p></li><li><p>11 </p><p> Nama pada label tidak boleh terdapat spasi dan didahului oleh angka. Contoh </p><p>dari penulisan label yang benar : mulai : MOV CX,7. Nama label terpanjang yang dapat dikenali oleh assembler adalah nama label yang terdiri dari 31 </p><p>karakter. </p><p>2.1.5 Pengarah Assembly Di dalam pengarah menggunakan bahasa assembly ini dapat terdapat </p><p>beberapa definisi lambang yang diantaranya sebagai berikut : </p><p>1. EQU (Equate) </p><p> EQU digunakan untuk mendefinisikan sebuah simbol atau lambang assembler </p><p>secara bebas. </p><p> Pada perintah akumulator diisi dengan konstanta bilangan. Konstanta ini </p><p>telah didefinisikan sebelumnya dengan nilai 50H dengan menggunakan </p><p>assembler directive EQU. </p><p>2. SET </p><p> Sama dengan pengarah EQU, pengarah SET digunakan untuk mendefinisikan </p><p>lambang assembler secara bebas. Perbedaan dengan pengarah EQU adalah </p><p>pengarah ini dapat didefinisikan ulang. </p><p>3. BIT </p><p> Pengarah BIT digunkan untuk mendefinisikan suatu lambang yang menunjuk </p><p>ke suatu lokasi BIT pada memori yang dapat dialamati secara pegalamatan </p><p>BIT. </p><p>4. CODE </p><p> Pengarah CODE digunakan untuk menyatakan alamat yang dialokasikan </p><p>dalam area memori program dengan sebuah lambang. Nilai dari alamat </p><p>tersebut tidak boleh melebihi 65535 atau FFFFH. </p><p>5. DATA </p><p> Pengarah DATA digunakan untuk menyatakan secara langsung alamat pada </p><p>memori internal dengan sebuah lambang. Alamat yang dimulai dari 00 hingga </p><p>7FH menunjukkan RAM internal dan alamat 80H hingga FFH menunjukkan </p><p>alamat dari Register Fungsi Khusus. </p></li><li><p>12 </p><p>6. IDATA </p><p> Pengarah IDATA digunakan untuk menyatakan alamat RAM internal dalam </p><p>sebuah lambang dengan pengalamatan tidak langsung. Alamat tersebut dapat </p><p>dimulai dari 00 hingga FFH. </p><p>7. XDATA </p><p> XDATA digunakan untuk menyatakan alamat yang ada pada memori </p><p>eksternal dalam sebuah lambang. Nilai dari alamat ini tidak boleh melebihi </p><p>65535 atau FFFFH. </p><p>2.2 Flowchart Menurut Jogianto dalam bukunya Pengenalan komputer </p><p>(Jogianto,1999:662) Bagan alir (Flowchart) adalah suatu bagian yang </p><p>menggambarkan arus logika dari data yang akan diproses dari awal sampai akhir. </p><p>Tujuan utama dari penggunaan Flowchart adalah untuk menggambarkan suatu </p><p>tahapan penyelesaian masalah secara sederhana, terurai, rapi, dan jelas dengan </p><p>menggunakan symbol-simbol standar. Dalam penulisan Flowchart dikenal dua </p><p>metode, yaitu sistem flowchart dan program flowchart. </p><p>1. Sistem Flowchart </p><p> Sistem flowchart merupakan diagram alir yang menggambarkan suatu sistem </p><p>peralatan komputer yang digunakan dalam proses pengolahan data serta </p><p>hubungan antar peralatan tersebut. Sistem flowchart ini tidak digunakan untuk </p><p>menggambarkan urutan langkah untuk memecahakan masalah, tetapi hanya </p><p>untuk menggambarkan prosedur dalam sistem yang dibentuk. </p><p>2. Program Flowchart </p><p> Program Flowchart merupakan diagram alir yang menggambarkan urutan </p><p>logika dari suatu prosedur pemecahan masalah. Dalam menggambarkan </p><p>program flowchart, telah tersedia simbol-simbol standar. </p><p>Berikut ini adalah gambar dari simbol-simbol yang standar yang </p><p>digunakan pada program flowchart: </p></li><li><p>13 </p><p>Tabel 2.1 Simbol-simbol pada flowchart </p><p>Terminal </p><p>Menyatakan dimana program dimulai, dan </p><p>mungkin juga berhenti. </p><p>Proses </p><p> Menyatakan beberapa manipulasi data. </p><p>Masukan / Keluaran </p><p> Menyatakan beberapa operasi masukan/ </p><p>keluaran data. </p><p>Keputusan </p><p>Menunjukkan perbandingan dua nilai. </p><p>Persiapan </p><p> Menyatakan beberapa manipulasi yang </p><p>ditunjukkan dalam program sari dalam data. </p><p>Proses Terdefinisi </p><p> Menyatakan untuk proses yang detilnya </p><p>dijelaskan terpisah. </p><p>Penghubung </p><p>Menyatakan sambungan ke atau dari bagian </p><p>lain program yang terputus masih dalam </p><p>halaman yang sama. </p></li><li><p>14 </p><p>Garis Alur </p><p>Menyatakan urutan operasi. </p><p>Annotasi </p><p>Menyatakan suatu cara untuk menambahkan </p><p>keter...</p></li></ul>