Anda di halaman 1dari 7

BAHAN KULIAH : MICROPROGRAMMING DOSEN : ANDRIE Y. S.Kom., MT.

====================================================== Teori Mikroprosesor Perbedaan antara mikroprosesor, mikrokomputer serta mikrokontroler sangat penting sebelum mempelajari ketiganya secara mendalam. Suatu mikroprosesor adalah Central Prosesing Unit dari sebuah komputer, tanpa memori, I/O unit, dan periferal yang dibutuhkan oleh suatu sistem lengkap. Sebagai contoh 8088 dan 80X86 adalah suatu mikroprosesor yang membutuhkan perangkat pendukung berupa RAM, ROM serta I/O unit. Bila sebuah mikroprosesor dikombinasikan dengan I/O unit dan memori (RAM/ROM), akan dihasilkan sebuah mikrokomputer. Pada kenyataannya mengkombinasikan CPU dengan memori dan I/O unit dapat juga dilakukan dalam level chip, yang menghasilkan Single Chip Mikrocomputer (SCM) untuk membedakannya dengan mikrokomputer. Untuk selanjutnya karena fungsinyan SCM dapat disebut mikrokontroler. CPU (Central Prosesing Unit). Unit Pengolah Pusat (CPU) terdiri atas dua bagian, yaitu unit pengendali (kontrol unit) serta unit aritmatika (ALU). Fungsi utama unit pengendali adalah mengambil, mengkode, dan melaksanakan urutan instruksi sebuah program yang tersimpan dalam memori. Unit pengendali mengatur urutan operasi seluruh sistem. Unit ini juga menghasilkan dan mengatur sinyal pengendali yang diperlukan untuk menyerempakan operasi, juga aliran dan instruksi program. Unit pengontrol mengendalikan aliran informasi pada bus data dan bus alamat, dilanjutkan dengan menafsirkan dan mengatur sinyal yang terdapat pada bus pengendali. Unit aritmatika dan logika melaksakan pengolahan data secara aritmatika (aljabra) dan secara logika (fungsi OR, NOT, AND dan XOR). Bus Alamat. Apabila suatu alat dihubungkan dengan mikrokontroler tersebut, maka harus ditetapkan terlebih dahulu alamat (address) dari alat tersebut. Hal ini untuk mrnghidari terjadinya dua alat yang bekerja bersamaan yang mungkin dapat menyebabkan kesalahan/kerusakan. Alat penyimpanan data (memori), baik RAM maupun ROM, juga mempunyai alamat tersendiri. RAM 8Kbyte memiliki 8 x 1024 alamat, dimana setiap alamat dapat diisi data 1 byte. Bus Data. Pada kenyataanya saluran masuk dan keluar mempunyai jumlah yang terbatas, umumnya jumlah saluran data masuk sama dengan jumlah saluran data keluar. Jumlah saluran data masuk dan saluran data keluar tersebut dinamakan lebar jalur data mikroprosesor dan kumpulan saluran data tersebut disebut bus data. Pada perancangan komponen mikroprosesor, karena alasan ekonomi, maka dilakukan pembatasan jumlah kaki, dalam suatu rangkaian teintregrasi. Dengan mengunakan tri state buffer dapat dilakukan multiflexing antara saluran data input dan saluran data output, dengan demikian suatu saluran data dapat berfungsi sebagai saluran input dan output. Karena setiap saluran dalam suatu bus bersifat dua arah, maka diperoleh bus data dua arah. Bus Kontrol. Selain bus alamat dan bus data, mikroprosesor/mikrokontroler dilangkapi juga dengan bus pengendali. Guna pengendali ini adalah untuk menyerempakan operasi mikroprosesor/mikrokontroler dengan operasi rangkaian luar.

Memori. Suatu sistem mikroprosesor maupun komputer memerlukan memori untuk tempat penyimpanan program/data. Pada mikroprosesor, tempat penyimpanan program/data adalah pada ROM/EPROM. Sedangkan pada PC program disimpan dalam disket atau hardisk. Ada beberapa tingkatan memori, diantaranya adalah register internal, memori utama dan memori massal. Register internal adalah memoridi dalam ALU. Waktu akses register sangat cepat, umumnya kurang dari 100ns. Memori utama adalah memori suatu sistem. Ukurannya berkisar antara 4 kbyte sampai 64 kbyte. Waktu aksesnya lebih lambat dibandingkan regoster internal, yaitu antara 200 sampai 1000ns. Memori massal dipakai untuk penyimpanan berkapasitas tinggi, biasanya berbentuk disket, pita magnetik atau kaset. RAM. RAM (Random Acces Memory) adalah memori yang dapat dibaca atau ditulis. Data dalam RAM akan terhapus (bersifat volatile) bila catudaya dihilangkan. Oleh karena sifat RAM yang volatile ini, maka program mikroprosesor tidak disimpan dalam RAM. RAM hanya digunakan untuk menyimpan data sementara, yaitu data yang tidak begitu vital bila hilang akibat aliran daya terputus. Ada dua teknologi yang dipakai untuk membuat RAM, yaitu RAM statik dan RAM dinamik. Dalam RAM statik, satu bit informasi disimpan dalam sebuah flip-flop. RAM statik tidak memerlukan penyegar dan penanganannya juga tidak

terlalu rumit. Isi dari RAM tetap tersimpan selama daya diberikan. Dua contoh RAM statik adalah 6116 dan 6264 yang masing-masing berkapasitas 2 kbyte dan 8kbyte. RAM dinamik menyimpan bit informasi sebagai muatan. Sel memori elementer dibuat dari kapasitas gerbang subtrat transistor MOS. Keuntungan RAM dinamik adalah sel-sel memori yang lebih kecil sehingga memerlukan tempat yang lebih sempit, sehingga RAM dinamik menjadi lebih kecil dibandingkan dengan RAM statik. Contoh RAM dinamik adalah 4116 yang berkapasitas 16384 x 1 bit. Kerugian penggunaan RAM dinamik adalah bertambahnya kerumitan pada papan memori, karenanya diperlukan rangkaian untuk proses penyegaran. Proses penyegaran untuk kapasitor ini dilakukan setiap 1 atau 2 milli detik.

ROM. ROM (Read Only Memory) merupakan memori yang hanya dapat dibaca. Data dalam ROM tidak akan terhapus meskipun catu daya diputuskan (bersifat nonvolatile). Karena sifatnya yang demikian, ROM digunakan untuk menyimpan program. Ada beberapa tipe ROM, diantaranya adalah ROM, PROM, EPROM dan EEPROM. ROM adalah memori yang sudah diprogram oleh pabrik. PROM (Programable Read Only Memory) dapat diprogram oleh pemakai, tetapi hanya sekali program saja. Alternatif lain adalah menggunakan EPROM (Erasable Programable Read Only Memory), yaitu PROM yang dapat diprogram ulang. Isi EPROM setelah dihapus dengan menggunakansinar ultraviolet. Isi EPROM setelah dihapus akan berlogika 1. Pemrograman EPROM adalah mengubah logika 1 menjadi 0. EEPROM (Electrical Erasable Programable Read Only Memory), yaitu PROM yang dapat diprogram ulang. Isi EEPROM dihapus dengan menggunakan suatu tegangan listrik.

Microprogramming /

Dosen : Andrie Yuswanto, MT.

Source : (http://ssams.i8.com/Linux%20Assembly%20Indonesia.htm) Pendahuluan Halaman ini membahas Linux Assembly menggunakan GNU Ass. Ketika membuat program assembly di DOS Banyak jenis assembly yang bisa dijalankan under linux diantaranya adalah: NASM (Netwide Assembly), GAS(GNU Assembly) diperuntukkan untuk mendukung secara penuh kompiler unix 32-bit, MASM, SHASM, TDASM, AS86, dll. Sebelum memulai linux assembly, pertama pastikan jenis bahasa assembly yang akan digunakan, jika hendak menggunakan assembly selain GNU Ass, pastikan paket telah terinstall dengan benar dan siap untuk dijalankan, yang kedua dibutuhkan program linker 'ld' untuk menghasilkan file binary (executable), karena as hanya menghasilkan file objek. Semua distribusi linux dengan tool-tool kompilasi yang terinstal didalamnya mempunyai ld. Kedua opsi diatas bisa saja diganti dengan menggunakan gcc, dengan memanfaatkan opsi-opsi gcc file binary bisa langsung didapatkan. Mulai dari 0 Komputer awalnya adalah sebuah besi rongsokan yang tak bisa apa-apa, sedang manusia adalah sebuah benda hidup yang bisa berpikir, berkomunikasi sesamanya dan mampu memberikan sebuah arti. Bahasa pemrograman komputer adalah sebuah cara untuk membuat komputer menjadi mesin pintar yang mampu membuatnya berkomunikasi dengan manusia. Alasan tersebut membuat keberadaan bahasa pemrograman menjadi sangat esensial. Look this picture:

Dari gambar diatas bisa disimpulkan bahwa bahasa pemrograman merupakan interface antara manusia dan komputer. Implementasi sebuah software oleh bahasa pemrograman mempunyai level-level dengan fungsinya masing-masing. Levellevel bahasa pemrograman tersebut dapat dikelompokkan sebagai berikut: 1. 2. 3. 4. 5. Microprogramming Bahasa Mesin Bahasa Perakit (Assembly) / Tingkat Rendah Bahasa Pemrograman Tingkat tinggi Bahasa Pemrograman Visual

Microprogramming atau biasa dikenal sebagai chip programming bisa dikatakan merupakan penanaman talenta awal pada komputer, gerbang-gerbang logika , interprestasi bilangan, didefinisikan disini. Tahap ini merupakan intrprestasi paling mendasar yang dilakukan sebuah besi bobrok terhadap keinginan manusia melalui sebuah software, untuk lebih mudahnya kita sebut saja tahap ini sebagai ''How a Komputer thingking''. Yang kedua adalah bahasa mesin atau bisa juga disebut sebagai definitor language. Dalam bahasa mesin inilah fungsi-fungsi didefinisikan, diimplementasikan dalam kode-kode biner. Bahasa assembly mempunyai fungsi-fungsi yang juga dimiliki oleh bahasa mesin, namun level bahasa pemrograman ini digunakan untuk definisi fungsi bahasa pemrograman level berikutnya. Level kedua dan ketiga yaitu bahasa mesin dan bahasa assembly bisa dikatakan sebagai transformer languaage talenta komputer dan talenta manusia. Bahasa pemrograman tingkat tinggi (C, C++, Pascal, dll), dan bahasa pemrograman visual merupakan perangkat untuk mewujudkan keinginan manusia terhadap komputer, bahasa pemrograman ini cenderung berorientasi objek dan user friendly. How computer learn ? Komputer berotakkan processor, processor tidak dapat secara langsung mengeksekusi sebuah program yang ditulis dalam source program, prosesor memerlukan apa yang disebut sebagai translator untuk menyelesaikan hal itu, jadi fungsi translator adalah menterjemahkan keinginan manusia agar dapat dimengerti oleh komputer. Translator dibedakan menjadi dua kelompok. Ketika sebuah source program merupakan representasi simbolik dari kode-kode numerik bahasa mesin, translator disebut assembler atau perakit dan source program tersebut kita sebut sebagai assembly. Ketika translator mengkonversi source program yang ditulis dalam bahasa pemrograman tingkat tinggi seperti bahasa C, Pascal, atau yang lainnya ke kode-kode numerik, translator disebut sebagai kompiler. Jadi jangan bingung tentang assembly, assembler, dan kompiler !! What's Assembly do ? Bahasa assembly menghubungkan keinginan manusia dengan komputer. Sebagai contohnya apabila kita mengetikkan sembarang kalimat seperti ''lets study'', kalimat ini hanya dikenali oleh manusia namun tidak oleh komputer (kalimat ini disebut sebagai source program). Kalimat yang diberikan tersebut oleh kompiler dikonversi ke dalam kode-kode numeric yang dikenali oleh komputer (kode numerik dari kalimat tersebut disebut sebagai object program). Hal-hal tersebut diatas dilakukan oleh bahasa assembly. Demikian halnya bahasa pemrograman lainnya seperti pascal, dan C/C++ assembly berisi sekumpulan kata yang merupakan perintah kepada komputer untuk melakukan sesuatu. Bahasa assembly adalah bahasa pemrograman tingkat rendah, instruksiinstruksi yang kita berikan dalam bahasa assembly akan mengakses komponen-komponen komputer secara langsung, oleh karena itu ,maka konfigurasi assembly pada jenis mesin yang berbeda memiliki instruksi berbeda, (walaupun secara umum sama). Satu alasan ini menyebabkan orang menyimpulkan bahwa linux itu bebas virus, sebenarnya bukan berarti tak ada virus yang bisa dibuat untuk sistem operasi Linux, tapi kebanyakan virus yang ada sekarang ini dikonfigurasi untuk sistem operasi selain Linux. Setiap satu statemen yang kita tulis dalam source program bahasa assembly memproduksi satu instruksi mesin, dengan kata lain ada korespondensi satu-satu antara instruksi mesin dengan statemen - statemen yang terdapat dalam program assembly. What is Assembly for..? Pemrograman assembly memiliki kelebihan yang tidak mungkin diikuti oleh bahasa pemrograman tingkat tinggi lainnya dalam hal kecepatan, dan ukuran file yang sangat kecil. Kita dapat mengakses semua features dan instruksi-instruksi yang terdapat dalam target mesin lewat bahasa assembly, hal ini tidak dapat dilakukan oleh bahasa pemrograman tingkat tinggi. Sebagai contoh, bahasa assembly dapat secara langsung melakukan tes bila pada target mesin terjadi overflow bit, bahasa pemrograman seperti Pascal dan C tidak dapat melakukanya secara langsung. Semua yang dapat dilakukan dalam bahasa mesin dapat dilakukan juga dalam bahasa assembly. Assembly adalah bahasa pemrograman tingkat rendah yaitu pemrograman tingkat kernel dan module. Beberapa program khusus seperti OS loader (LILO) dibuat dengan assembly, karena kelebihan-kelebihan

yang dimilikinya, lebih dari 20 tahun bahasa assembly digunakan oleh para hacker untuk pembuatan berbagai macam virus komputer, pembuatan proteksi program agar tidak mudah untuk di-hack-pun juga memerlukan assembly. Kelebihan-kelebihan yang terdapat dalam pemrograman assembly dibanding dengan bahasa pemrograman tingkat tinggi bukan berarti kita bisa meninggalkan bahasa pemrograman tingkat tinggi tersebut. Bahasa assembly dipergunakan untuk maksudmaksud khusus yang tidak dapat dilakukan oleh bahasa pemrograman tingkat tinggi, terlalu sia-sia atau ''wasting time'' memanfaatkan bahasa assembly untuk membuat program yang bisa dilakukan dengan bahasa pemrograman tingkat tinggi. Bahasa pemrograman tingkat tinggi dikonfigurasi untuk hal-hal yang bersifat user friendly, artinya hal-hal yang dimaksudkan tersebut akan lebih mudah dilakukan dengan bahasa pemrograman tinggkat tinggi daripada assembly. Sebagai contoh apabila kita ingin membuat program olah bilangan yang ditampilkan di layar monitor, akan lebih mudah apabila kita menggunakan bahasa C atau Pascal, atau yang lain. Dan ingat ''As long as we can do with high level language we steel need assembly'' khususnya saat mengakses hardware, jadi alangkah lebih baik assembly ini dipahami sebelum kita mempelajari bahasa pemrograman tingkat tinggi. Dengan menguasai bahasa pemrograman assembly mempermudah kita untuk melakukan manipulasi terhadap komputer, kita bisa membuat komputer seperti apa yang kita inginkan, kita juga akan dapat memahami sistem operasi lebih dalam. How we work on assembly Struktur penulisan program assembly secara umum dapat digambarkan sebagai berikut: [Label:] Mnemonik [operan] [komentar] ..........: ........... ......,....... #....................... Dari semua bagian, hanya bagian mnemonic yang harus selalu tersedia, label dan komentar bersifat opsional, sedang operan ada ketika terdapat instruksi-instruksi yang menggunakan operan. Tanda [] bukan termasuk dalam program, tanda tersebut hanya sebagai tanda bahwa bagian itu beersifat opsional. Antara masing-masing bagian dipisahkan dengan minimum satu spasi (whitespace) . Contoh: Mulai: movl [Label:]

%eax,%ebx

#memindahkan isi register eax ke ebx

Bagian label dapat berisi lebih dari 31 karakter fan diakhiri dengan '':''. Fungsi label adalah untuk menandakan nama instruksiinstruksi bahasa assembly. Karakter yang membangun label bisa berupa: 1. 2. 3. Huruf A sampai Z (atau a sampai z, Assembler tidak membedakan huruf besar dan huruf kecil). Digit 0 sampai 9 Spesial karakter : ? . @ _ $

Label bisa dimulai dengan sembarang karakter kecuali angka. Jika menggunakan ''.'' maka harus diletakkan pada karakter pertama. Hindari penggunaan simbol-simbol yang sama dengan nama register. Dalam menuliskan label tidak boleh menggunakan spasi (whiespace). Jika nama label lebih dari satu kata sebaiknya dihubungkan dengan ''_'' atau ditulis secara berturutan. Contoh Ambilvec: movl $alamat,%edx Atau Ambil_vec: movl $alamat,%edx Mnemonik Mnemonic bisa terdiri dari dua sampai tujuh karakter yang merupakan lambang sebuah instruksi. Misal ADD adalah lambang dari sebuah instruksi penambahan (Assembler menggunakan table internal untuk mendefinisikan atau mentranslasi menmonic menjadi kode-kode numerik).

Dalam linux assembly (GNU Ass) jenis operan ditentukan dengan sebuah prefik yang mengikutinya b untuk byte w untuk word l untuk long yang diletakkan setelah mnemonic.contoh: movl atau movb atau movw. [operan] Bagian operan digunakan untuk menentukan/menunjukkan alamat dan register-register yang digunakan sebagai operan dengan mengguanakan instruksi-instruksi mesin. Jika pada bagian ini mengandung nilai integer berarti menginstruksikan kepada assembler apa yang ditambahkan dan untuk apa. Bila terdapat instruksi jump berarti menginstruksikan kepada assembler kemana tujuan dari jump tersebut. Bagian operan bisa terdiri dari dua buah instruksi, jika hal ini terjadi maka penulisannya harus dipisahkan dengan tanda','(koma). Contoh: Movw [komentar] Komentar digunakan untuk mempermudah membuat dan melakukan pengecekan program, cara penulisan program diawali dengan tanda '#'. Komentar hanyalah komentar terhadap sebuah bagian program, komentar tidak dieksekusi oleh assembly. Contoh: movl $4,%eax # sistem call untuk write () $7,%ax # mov integer 7 ke register ax

Selain cara tersebut gas juga mengijinkan penggunaan tanda '' /* komentar*/ ''seperti penulisan komentar pada standar C, atau tanda ''##'' seperti pada emacs asm-mode, namun hal ini tidaklah essensial. Tahapan-tahapan yang perlu dilakukan dalam memprogram dengan assembly adalah: 1. 2. 3. 4. 5. 6. Membuat gambaran program yang akan kita buat Menulis instruksi-instruksi pada salah satu teks editor Mengkompile file program Mengkonversi file program ke file executable Menjalankan program Cek program apakah sudah sesuai dengan keinginan, bila belum maka masuk ke tahap debugging

Tidak seperti memprogram dalam bahasa pemrograman level tinggi, ketika kita menuliskan program kita harus membuka aplikasinya, dalam assembly program bisa ditulis melalui berbagai jenis text editor , kita bisa memilih teks editor sesuai keinginan kita, bisa pada teks editor Vi, Emacs, atau yang lain. Dengan satu syarat bahwa source program yang kita tulis kita simpan dengan ekstensi ''.s''. Contoh program bisa dilihat DISINI, bisa kita tulis dalam teks editor vi, emax or another Selanjutnya source file yang sudah kita ketikkan tersebut kita kompile ke bentuk file objek dengan ekstensi ''.o'',Pada GAS bisa kita lakukan dengan perintah : [ssams@local host Program Ass]$ as -o ksl.o ksl.s Sekarang kita telah mendapatkan file source dan file objek yang tersimpan pada direktory aktif . Untuk melihatnya bisa menggunakan perintah ''ls'': [ssams@local host Program Ass]$ ls ksl.s ksl.o langkah berikutnya adalah melakukan lingking file objek untuk mendapatkan file eksecutable . Perintah untuk linking :

[ssams@local host Program Ass]$ ld ksl.o -o ksl Kita juga bisa memanfaatkan GCC untuk melakukan kedua langkah diatas. Apabila kita mengkompile dengan menggunakan GCC perintah yang digunakan adalah: [ssams@local host Program Ass]$ gcc -o ksl ksl.s Perintah ini sama dengan jika kita menggunakan as dan ld, untuk membuktikannya bisa kita lihat dengan mengetikkan perintah [ssams@local host Program Ass]$ gcc -v -Q ksl.s Hasil yang didapat, pada direktori aktif (atau direkstori lain, bila dispesifikasi) sudah terdapat file eksecutable : [ssams@local host Program Ass]$ ls ksl.s ksl.o ksl Sekarang program siap dieksekusi. Untuk eksekusi tersebut bisa menggunakan gdb sebagai berikut: [ssams@localhost Program Ass]$ gdb ksl Tekan enter dan kita akan mendapatkan hal seperti berikut: GNU gdb Red Hat Linux 7.x (5.0rh-15) (MI_OUT) Copyright 2001 Free Software Foundation, Inc. GDB is free software, coerred by GNU General Public License, and you are welcome to change it and/or distrtibute copies of it under certain condition. Type "show copying" to see the condition. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-redhat-linux". (gdb)run Starting program: /home/ssams/Dokumen/Program Ass/ksl KSL UAD Program exited normally. (gdb) Linux & Assembly Ketika ingin melakukan porting Linux ke sebuah embedded hardware (seperti hand phone, mesin hitung, dll), dibutuhkan minimalisasi ukuran sistem, semakin kecil ukuran keseluruhan sistem semakin maksimal pula apa yang diharapkan, misalnya : kompile ulang kernel, libc dan semua yang terdapat pada utilitas (file|find|text|sh|etc.) kedalam kedalam ruang berukuran beberapa ratus kilobyte, dan yang perlu diingat setiap kilobyte sangatlah berarti mengingat keterbatasan ruang yang terdapat pada embedded hardware tersebut. Salah satu cara untuk dapat melakukan hal tersebut adalah menulis ulang beberapa atau semua bagian system dalam assembly, cara ini akan menghasilkan penghematan ruang memory yang luar biasa. Sebagai contoh: Sebuah httpd sederhana yang ditulis dalam assembly hanya memerlukan space berukuran kurang dari 600 byte. Bahkan compiling ulang webserver yang terdiri dari kernel dan httpd hanya memerlukan ruang sejumlah 400 Kb, atau bisa juga kurang dari itu. Dan yang terakhir ''How is the smart LILO done and the answer is by assembly'' .

Anda mungkin juga menyukai