Mikroprosesor & Bahasa Rakitan Eka Puji Widiyanto, ST Perkenalan Dosen : Eka Puji Widiyanto, ST – – S1 Teknik Elektro UGM 2001 Email : [email protected], [email protected] Buku Acuan : – – Henri S.V. Simanjuntak, Dasar-dasar Mikroprosesor, Kanisius, Yogyakarta. Susanto, Pemograman dengan Bahasa Assembly, Elex Media Komputindo, Jakarta Waktu Konsultasi : – – Selasa Jumat : 13.00 – 14.30 : 13.00 – 14.30 Penilaian : 1. 2. 3. 4. Tugas Kuis UTS UAS+Praktikum : 20% : 10% : 30% : 40% Aturan Perkuliahan Mahasiswa yang mempunyai tingkat kehadiran kurang dari 69% tidak diizinkan mengikuti Ujian Akhir Semester. Mahasiswa yang terlambat mengumpulkan tugas, tidak mendapat nilai untuk tugas tersebut. Mahasiswa yang melanggar tata tertib dan ketentuan ujian, baik ujian tengah semester maupun ujian akhir semester dianggap gugur dan mendapat nilai E. Materi 1. Pengantar Mikroprosesor 2. Pengantar Bahasa Rakitan 3. Arsitektur Mikroprosesor 4. Mencetak Huruf, Kalimat, dan Angka 5. Register 6. Memori 7. Masukan dari Keyboard 8. Mode Pengalamatan Data 9. Instruksi Mode Pengalamatan Data 10. Operasi Perpindahan Data 11. Operasi Aritmatika 12. Pointer 13. Manipulasi Bit dan Angka 14. Fungsi Pengambil Keputusan dan Stack 15. Prosedur dan Macro 16. Operasi Pada Layar 17. Operasi Pada String 18. Pengaksesan Port dan Speaker 19. Grafik Tool Turbo Assembler Pengantar Mikroprosesor Mikroprosesor : – Micro : kecil, mini – Processor : pengolah, pemroses Definisi : – General : Pemroses mikro atau pengolah mikro – Khusus : Merupakan keping (chip) kecil yang tersusun dari integrasi rangkaian elektronika yang rumit, yang didesain untuk mengerjakan proses yang kompleks Mikroprosesor merupakan inti dari sistem komputer Implementasi : – – – – – – Industri Medis Hiburan Kendaraan Keamanan dll Aplikasi Mikroprosesor Keunggulan Mikroprosesor 1. Programmable 2. Kebutuhan daya rendah 3. Jumlah komponen yang dibutuhkan relatif sedikit 4. Handal dan fleksibel. Sejarah Abacus - Alat hitung dari manik-manik dari Babilonia pada abak ke-50 SM Sempoa – Cina abad ke 10 sebelum Masehi Gigi Roda – Blaise Pascal, 1642, cikal bakal kalkulator modern Eniac – 1943 – Desimal 20 accumulator 10 digit – 30 ton, 18000 tabung vacum, daya 140 kW µP 4 bit – i4004 (1971) – Hanya bisa add dan sub µP 8 bit – i8008 µP 16 bit – i8086/i8088/80286 µP 32 bit – I80386/80486/Pentium µP 64 bit – AMD Athlon64 Mikroprosesor 4-bit 1971, Intel Corporation & Marcian E Hoff memperkenalkan i4004 4096 address 4-bit memori 45 instruksi Mikroprosesor 8-bit Akhir 1971 Intel memperkenalkan i8008 16K x 8bit memori 48 instruksi 1973 Intel memperkenalkan i8080 sebagai mikroprosesor 8-bit modern – Alamat memori dan instruksi lebih besar – Kecepatan akses 2uS 1977 : i8085 (1,3uS) Mikroprosesor 16-bit 1978 : i8086 1979 : i8088 Spesifikasi : – – – – 16-bit Kecepatan eksekusi 400nS Alamat 1Mbyte / 512Kword Hardware multiplication & division I80186 I80286 : sistem kendali industri : – Alamat memori 16Mbyte – Clock 16MHz Mikroprosesor 32-bit I80386 & i80486 : sering disebut 386 dan 486 Alamat memori 4GB i80486 = i80386 + coprocessor + 8Kbyte internal cache memory Pentium, Pentium II, Pentium III, Pentium IV Name Date Transistors um Clock Memory Data width MIPS 8080 1974 6,000 6 2 MHz 64 kB 8 bits 0.64 8088 1979 29,000 3 5 MHz 1 MB 80286 1982 134,000 1.5 6 MHz 16 MB 16 bits 1 80386 1985 275,000 1.5 16 MHz 4 GB 32 bits 5 80486 1989 1,200,000 1 25 MHz 4 GB 32 bits 20 Pentium 1993 3,100,000 0.8 60 MHz 64 GB 32 bits 64-bit bus 100 Pentium II 1997 7,500,000 0.35 233 MHz 64 GB 32 bits 64-bit bus ~300 Pentium III 1999 9,500,000 0.25 450 MHz 64 GB 32 bits 64-bit bus ~510 Pentium 4 2000 42,000,000 0.18 1.5 GHz 64 GB 32 bits 64-bit bus ~1,700 Pentium 4 "Prescott" 2004 125,000,000 0.09 3.6 GHz 64 GB 32 bits 64-bit bus ~7,000 Core-i7 2009 16 bits 8-bit bus 0.33 Arsitektur Dasar Komputer 3 komponen utama : – CPU (Central Processing Unit) – Memory – Input & Output Devices Memory I/O Devices DATA BUS CPU CONTROL BUS ADDRESS BUS CPU Otak komputer Bertugas mengorganisasikan semua operasi : – Perpindahan data – Aritmatika & logika – Kontrol IO Memori Menyimpan data dan instruksi Tipe : – RAM (Random Access Memory) – ROM (Read Only Memory) RAM : – Temporari / volatil – Akses cepat ROM : – Permanen / non volatil – Akses lebih lambat – Inisialisasi piranti Piranti Masukan & Keluaran Merupakan piranti-piranti eksternal yang dibutuhkan oleh komputer untuk berhubungan dengan dunia luar Contoh : – – – – – – Monitor Printer Scanner Keyboard Mouse dll Arsitektur Dasar Mikroprosesor 3 bagian : – ALU (Arithmetic Logic Unit/Unit Artimatika dan Logika) Operasi aritmatika dan logika – CU (Control Unit/Unit Kendali) Mengatur semua proses internal pada mikroprosesor : – – – – Transfer data Interupsi Kontrol program Kontrol IO – Register Memori yang dapat diakses dengan cepat Temporari storage proses komputasi Sistem Bilangan Dasar pemrograman mikroprosesor Tipe : – Biner – Oktal – Desimal – Heksadesimal Biner Sistem bilangan dasar sebuah komputer Basis/radiks 2 : – 0 : logik rendah (low – L) – 1 : logik tinggi (high – H) Level : – MSB(Most Significant Bit) : bit dengan nilai paling tinggi – LSB(Least Significant Bit) : bit dengan nilai paling rendah Konversi ke desimal : – Mengalikan suku ke-N dengan 2N Contoh : 11002 = (1 x 23) + (1 x 22) + (0 x 21) + (0 x 20) =8+4+0+0 = 12 Oktal Basis/radiks 8 = 0…7 Konversi ke desimal : – Mengalikan suku ke-N dengan 8N Contoh : 2768 = (2 x 82) + (7 x 81) + (6 x 80) = 128 + 56 + 6 = 190 Desimal Bilangan sehari-hari Basis/radiks 10 = 0…9 Heksadesimal Paling banyak dipergunakan dalam pemrograman bahasa rakitan Basis/radiks 16 = 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F Konversi ke desimal : – Mengalikan suku ke-N dengan 16N Contoh : 3116 = (3 x 161) + (1 x 160) = 48 + 1 = 49 Konversi Desimal ke Radiks r Aturan umum : – Gunakan pembagian dengan radiks r secara suksesif(berulang) sampai dengan hasil pembagian = 0 – Sisa pembagian merupakan hasil konversi mulai dari LSB sampai dengan MSB Konversi 17910 ke biner: 179 / 2 = 89 sisa 1 (LSB) / 2 = 44 sisa 1 / 2 = 22 sisa 0 / 2 = 11 sisa 0 / 2 = 5 sisa 1 / 2 = 2 sisa 1 / 2 = 1 sisa 0 / 2 = 0 sisa 1 (MSB) 17910 = 101100112 Contoh: Konversi 17910 ke oktal: 179 / 8 = 22 sisa 3 (LSB) / 8 = 2 sisa 6 / 8 = 0 sisa 2 (MSB) 17910 = 2638 Contoh: Konversi 17910 ke hexadesimal: 179 / 16 = 11 sisa 3 (LSB) / 16 = 0 sisa 11 (dalam bilangan hexadesimal berarti B)MSB 17910 = B316 Konversi Biner ke Oktal Aturan umum : – Kelompokkan 3 digit bilangan biner mulai dari LSB sampai dengan MSB Contoh : Konversikan 101100112 ke bilangan oktal Jawab : 10 110 011 2 6 3 Jadi 101100112 = 2638 Konversi Biner ke Heksadesimal Aturan umum : – Kelompokkan 4 digit bilangan biner mulai dari LSB sampai dengan MSB Contoh : Konversikan 101100112 ke bilangan heksadesimal Jawab : 1011 0011 B 3 Jadi 101100112 = B316 Konversi Oktal ke Biner Aturan umum : – Terjemahkan tiap digit oktal ke 3 digit biner Contoh : Konversikan 2638 ke bilangan biner Jawab : 2 6 3 010 110 011 Jadi 2638 = 0101100112 Karena 0 didepan tidak ada artinya kita bisa menuliskan 101100112 Konversi Heksadesimal ke Biner Aturan umum : – Terjemahkan tiap digit heksadesimal ke 4 digit biner Contoh : Konversikan 26316 ke bilangan biner Jawab : 2 6 3 0010 0110 0011 Jadi 26316 = 0010011000112 Karena 0 didepan tidak ada artinya kita bisa menuliskan 10011000112 Bilangan Bertanda dan Tidak Bilangan bertanda (signed number) : – Memiliki arti plus (+) dan minus (-) – Menggunakan seluruh digit angka yang tersedia untuk merepresentasikan angka positif dan negatif – Indikator dari Sign Flag(SF) : SF = 0 : bilangan positif SF = 1 : bilangan negatif Bilangan tidak bertanda (unsigned number) : – Tidak mengenal minus (-) – Menggunakan seluruh digit angka yang tersedia untuk merepresentasikan angka positif saja Tidak Bertanda +3 +2 +1 0 +255 +254 +253 Bertanda +3 +2 +1 0 -1 -2 -3 Biner 0000 0011 0000 0010 0000 0001 0000 0000 1111 1111 1111 1101 1111 1100 Konversi Signed Number ke Biner Aturan umum : – Konversi nilai absolut bilangannya ke biner yang diorganisasikan sebagai byte, word, ataupun double word – Komplemenkan hasilnya – Tambahkan LSB dengan 1 Contoh : Konversikan -21 ke biner Jawab : Absolut -21 = 21 Komplemen 000101012 Tambahkan LSB dengan 1 Hasil Jadi -21 = 111010112 = 000101012 = 111010102 = 000000012 = 111010112 Cara cepat : – Representasi Signed Number = maksimal cacahan + Signed Number Contoh : Konversikan -21 ke biner Jawab : 8bit biner(byte) dengan maksimal cacahan 256 (28) muat untuk merepresentasikan -21, maka Representasinya = 256 + (-21) = 235 = 111010112 Jadi -21 = 111010112 Organisasi Data Merupakan cara untuk merepresentasikan bit data menjadi beberapa pengelompokan Tipe : – Bit – Nibble – Byte – Word – Double word = 1 bit = 4 bit = 8 bit = 16 bit = 32 bit Bit "Unit" paling kecil dari data pada komputer biner adalah satu bit tunggal. Satu bit tunggal mampu merepresentasikan hanya dua nilai yang berbeda (secara tipikal nol atau satu) Anda bisa merepresentasikan dua item data apapun yang berbeda dengan satu bit tunggal. Contoh meliputi nol atau satu, benar atau salah, on atau off, pria atau wanita. Anda tidak dibatasi untuk merepresentasikan jenis data biner (yaitu, objek yang hanya mempunyai dua nilai yang berbeda). Nibble nibble adalah satu koleksi empat bit. Ia bukan merupakan jenis data yang menarik kecuali dua item: bilangan BCD (binary coded decimal) dan bilangan berbasis enambelas. Ia menggunakan empat bit untuk merepresentasikan satu BCD tunggal atau digit hexadecimal. Dengan suatu nibble, kita bisa merepresentasikan sampai dengan 16 nilai berbeda. Dalam kasus bilangan berbasis enambelas, nilai dapat berupa 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, dan F direpresentasikan dengan empat bit. BCD menggunakan sepuluh angka berbeda (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) Byte Struktur data terpenting yang digunakan oleh mikroprosesor 80x86 adalah byte. Sebuah byte terdiri dari delapan bit dan adalah datum addressable paling kecil (data item) pada mikroprosesor 80x86. Memori Utama dan alamat I/O pada 80x86 adalah semua alamat byte. Artinya bahwa item paling kecil yang mungkin diakses secara individu oleh satu program 80x86 adalah nilai delapan-bit. Bit dalam satu byte secara normal dinomori dari nol sampai tujuh menggunakan konvensi di dalam gambar 1.1. Bit 0 adalah urutan bit terendah atau bit paling tidak berarti (kurang signifikan), bit 7 adalah urutan bit paling berarti (signifikan) dari byte. Kita akan mengacu pada penomoran semua bit lain. Gambar 1.1: Penomoran Bit dalam satu Byte Perhatikan bahwa satu byte juga berisi persis dua nibble (lihat gambar 1.2). Gambar 1.2: Dua Nibbles dalam satu Byte Word Sebuah word adalah kelompok 16 bit. Kita akan menomori bit dalam word mulai dari nol sampai dengan lima belas. Penomoran bit muncul di gambar 1.3. Gambar 1.3: Nomor Bit dalam Word Seperti byte, bit 0 adalah urutan bit terendah dan bit 15 adalah urutan bit tertinggi. Perhatikan bahwa satu word berisi persis dua byte. Bit 0 sampai 7 membentuk urutan byte terendah, bit 8 hingga 15 membentuk urutan byte tertinggi (lihat gambar 1.4). Gambar 1.4: Dua Bytes dalam Word Secara alami, satu word mungkin saja dipecah ke dalam empat nibble seperti diperlihatkan di dalam gambar 1.5. Gambar 1.5: Nibble dalam Sebuah Word Nibble nol adalah nibble urutan terendah dalam word dan nibble tiga adalah nible urutan tertinggi dari word. Dua nibble lain adalah “nibble satu” atau “nibble dua”. Dengan 16 bit, bisa direpresentasikan 216 (65,536) nilai yang berbeda. Ini bisa menjadi nilai dalam jangkauan 0..65,535 (atau, sebagai kasus biasanya, 32,768..+32,767) atau jenis data lain apapun tanpa lebih dari 65,536 nilai. Double Word Merupakan kelompok 32 bit dengan penomoran bit dari 0 – 31 1 double word = 2 word = 4 byte = 8 nibble = 32 bit Cacahan maksimal = 232 = 4294967296 (biasa disebut sebagai 4Gbyte) Aritmatika Biner Penjumlahan : – – – – 0+0=0 0+1=1 1+0=1 1 + 1 = 0, simpan (carry) 1 25 32 24 16 1 1 Simpan (carry) 1 1 Jumlah 1 1 23 8 1 1 0 22 4 0 0 21 2 1 0 1 1 1 0 20 1 1 1 0 Cara cepat : – Hasil – Carry = sisa pembagian dengan 2 = hasil pembagian dengan 2 Metode ini bisa dipergunakan untuk menjumlahkan beberapa bilangan biner sekaligus, misal penjumlahan 7 buah bilangan biner sekaligus 25 32 24 16 23 8 22 4 21 2 20 1 1 1 1 1 0 0 1 1 2 Jumlah per digit 0 2 2 0 0 1 1 Carry 1 1 0 1 1 0 Hasil 1 1 0 1 0 0 Pengurangan Aturan Umum – – – – 0–0=0 1–0=1 1–1=0 0 – 1 = 1 , pinjam 1 1 1 1 0 1 0 1 1 1 1 Pinjam 1 1 Hasil 0 0 Perkalian Prosedur sama dengan perkalian desimal Contoh : 9 x 11 1 0 0 1 9 1 0 1 1 11 1 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 1 1 0 0 0 1 1 99 Pembagian Prosedur sama dengan pembagian desimal biasa TERIMAKASIH