MODE PENGALAMATAN DAN SET INSTRUKSI Alamat Memori • Sel memori dapat menyimpan informasi sebesar 1 byte (8 bit) • Tiap sel memori diberi suatu alamat (address) dimulai dari 0 sampai dengan jumlah dari sel memori dikurangi 1 Alamat Memori • Contoh : Pada mikroprosesor Intel 8086/8088 memori mencapai 1MB • 1KB = 1024 byte • 1MB = 1024 KB • 1MB = 1024x1024 = 1048576 byte • 1048575(10) = FFFFF(16) • alamat terendah 00000 sampai alamat tertinggi FFFFF Alamat Memori • Kemampuan hanya sebesar 16bit • Menampung alamat memori sebanyak 216 = 65536 byte (64KB), padahal alamat memori yang dipunyai sebesar 1048576 byte • Register yang ada register 16bit – hanya dapat menampung 4 digit hexadesimal – dari 0000 sampai FFFF • Kurang 4 bit untuk menampung alamat memori • Harus dilakukan penomoran dengan 2 register Alamat Memori • Sebuah register 16 bit sebelah kiri (register segment) • Sebuah register 16 bit dari kanan (register offset) • Tiap segment dapat menjangkau 64KB Alamat Memori • Contoh : Alamat Memori • Contoh : Tabel Alamat Fisik Alamat fisik hexadesimal Alamat dalam Segment:Offset Alamat fisik desimal Tabel Alamat Fisik Komponen Komputer Register • Memory Buffer Register (MBR), menyimpan isi dari alamat instruksi • Memory Address Register (MAR), menyimpan alamat instruksi • Instruction Register (IR), berisi instruksi kode operasi yang akan dieksekusi. • Program Counter (PC), berisi alamat pasangan instruksi berikutnya yang akan diambil dari memori. • Accumulator (AC/ACC) digunakan untuk penyimpanan sementara operand dan hasil ALU. Mode Pengalamatan • Bagaimana cara menunjuk sebuah alamat di mana operand akan diambil • Mode pengalamatan diterapkan pada set instruksi, dimana pada umumnya instruksi terdiri dari opcode (kode operasi) dan alamat Contoh Proses Eksekusi Program REGISTER CPU • Program counter (PC) = alamat instruksi • Instruction register (IR) = instruksi yang dieksekusi • Accumulator(AC/ACC) = penyimpanan sementara Contoh Proses Eksekusi Program CONTOH OPCODE • 0001(2) = 1(16) = Load AC dari memori • 0010(2) = 2(16) = Simpan AC pada memori • 0101(2) = 5(16) = tambahkan pada AC dari memori Contoh Proses Eksekusi Program Contoh Proses Eksekusi Program 1. 2. 3. 4. 5. 6. PC berisi 300, alamat dari instruksi pertama (1940 – 1 adalah opcode dalam hexadesimal, 940 adalah alamat memori dimana data akan diambil). Instruksi 1940 diload ke dalam IR dan PC bertambah 1. 1940 di dalam IR mengindikasikan untuk load AC, jadi isi alamat memori 940 yaitu 0003 di-load ke AC Instruksi selanjutnya 5941, disimpan di IR, PC bertambah 1 Instruksi 5941, berarti tambahkan ke AC (isi alamat 941 adalah 0002, tambahkan ke AC yang sudah berisi 0003 menjadi 0005, simpan di AC) Instruksi 2941 di simpan di IR Instruksi 2941, artinya simpan ke memori (isi AC 0005, disimpan ke memori 941), PC bertambah 1 Jenis Mode Pengalamatan • Secara garis besar ada 3 jenis : • Direct – Alamat operand ditunjuk secara langsung pada instruksi – Contoh : instruksi LOAD, cara penulisan : LOAD Y • Indirect – Alamat operand ditunjukkan secara tidak langsung oleh data yang terkandung pada alamat yang ditunjuk – Cara penulisan : LOAD (Y) • Immediate – Alamat operand tidak berisi sebuah alamat, tetapi langsung operand yang akan diproses – Cara penulisan : LOAD #9 Penerapan Mode Pengalamatan Misalkan kita memiliki contoh register dan memory sebagai berikut (bagian kiri alamat, kanan datanya): Memory Register A 0 70 B 1 10 C 50 2 12 D 51 3 43 … … Y 50 3 Z 51 7 AC 52 10 … IR PC … 100 5 101 6 102 15 Direct • Untuk pemanggilan alamat operand berupa register disebut Register Addressing – Contoh : LOAD C, akan menghasilkan ACC ← 50, karena alamat register C berisi 50 • Untuk pemanggilan alamat operand berupa memory disebut Direct Addressing – Contoh : LOAD 3, akan menghasilkan ACC ← 43, karena alamat memory 3 berisi bilangan 43 Indirect • Untuk pemanggilan alamat operand berupa register namanya Register Indirect Addressing – Contoh : LOAD (D), akan menghasilkan ACC ← 7, karena alamat register D berisi alamat memory 51, sedangkan alamat memory 51 berisi bilangan 7 • Untuk pemanggilan alamat operand berupa memory namanya Indirect Addressing – Contoh : LOAD (50), akan menghasilkan ACC ← 43, karena alamat memory 50 berisi alamat memory 3, sedangkan alamat memory 3 berisi bilangan 43 Displacement / Penggantian • Merupakan alamat relatif, artinya alamat operand yang dituju berjarak n alamat dari sebuah alamat yang diekspresikan secara indirect • Contoh : LOAD (C) + 50 akan menghasilkan ACC ← 5, karena alamat register C berisi alamat 50, sedangkan alamat yang dituju berjarak +50 darinya. 50 + 50 = 100. Alamat 100 berisi bilangan 5 Immediate • Immediate tidak membutuhkan alamat memory/register, karena tempat untuk alamat operand diisi langsung oleh bilangan operandnya • Contoh 1 : LOAD #9, akan menghasilkan ACC ← 9, nilai di belakang tanda # dianggap sebagai operand-nya • Contoh 2 : ADD Y, #2, #3, akan menghasilkan register Y ← 5, kedua operand adalah 2 dan 3, dengan demikian 2+3 = 5 Contoh Soal • Berapakah isi register Y? • Gunakan kondisi register dan memori yang ada! LOAD (C) ADD 3 SUB (0) MPY (C) + 50 DIV #9 STOR Y Contoh Soal • Berapakah isi register Y? • Gunakan kondisi register dan memori yang ada! INSTRUKSI LOAD (C) ADD 3 SUB (0) MPY (C) + 50 DIV #9 STOR Y ALGORITMIK ISI ACC AC ← 3 AC ← AC + 43 AC ← AC - 10 AC ← AC X 5 AC ← AC/9 Y ← 20 3 46 36 180 20 Register Y berisi 20 Tipe-Tipe Instruksi • Pada bahasa pemrograman tingkat tinggi, misal C, contoh : x = x +y; • Statemen tersebut memberi instruksi kepada komputer untuk menambah nilai yang tersimpan di x dengan nilai yang tersimpan di y dan meletakkan hasilnya di x Tipe-Tipe Instruksi • Pada bahasa mesin, operasi tersebut membutuhkan tiga instruksi (misalnya variabel x dan y terletak di lokasi 513 dan 514) : – Load register berisi lokasi memori 513 – Tambahkan isi lokasi memori 514 ke register – Simpan isi register di lokasi memori 513 • Bahasa pemrograman tingkat tinggi mengekspresikan operasi dalam bentuk aljabar ringkas, menggunakan variabel • Bahasa mesin mengekspresikan operasi dalam bentuk dasar melibatkan perpindahan data dari dan ke register Tipe-Tipe Instruksi • Komputer harus memiliki suatu set instruksi supaya user dapat memformulasikan pemrosesan data • Program yang ditulis dalam bahasa pemrograman tingkat tinggi harus diterjemahkan ke bahasa mesin untuk dijalankan/dieksekusi • Jadi, set instruksi harus mencukupi untuk menjalankan instruksi dari bahasa tingkat tinggi Tipe-Tipe Instruksi • Instruksi Aritmatika dan Logika (Arithmetic and Logic Instruction) – Data Processing, contoh : ADD, SUB, MPY, DIV, OR, AND • Instruksi Memory (Memory Instruction) – Data Storage, contoh : LOAD, STOR • Instruksi I/O (I/O Instruction) – Data Movement • Instruksi Test dan Branch (Test And Brach Instruction) – Control Arithmetic Instruction • Menyediakan kemampuan komputasional untuk pemrosesan data numerik Logic (Boolean) Instruction • Beroperasi pada level bit • Menyediakan kemampuan untuk memproses berbagai macam tipe data Memory Instruction • Perpindahan data antara memori dan register I/O Instruction • Transfer program dan data ke memori dan hasil perhitungan ke user Test And Branch Instruction • Digunakan untuk menguji nilai data atau status dari perhitungan • Digunakan untuk percabangan pada set instruksi yang lain tergantung dari keputusan yang dibuat Contoh Set Instruksi dan Operasinya Contoh Set Instruksi dan Operasinya Contoh Set Instruksi dan Operasinya Aksi Yang Dilakukan CPU Terhadap Berbagai Operasi