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 PC berisi 300, alamat dari instruksi pertama (1940 – 1 adalah opcode dalam hexadesimal, 940 adalah alamat memori dimana data akan diambil). Instruksi 1940 di-load 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): Register A B C 50 D 51 … Y Z AC IR PC Memory 70 1 10 2 12 3 43 … 50 51 7 52 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 operand-nya 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 Register Y berisi 20 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 AC ← 3 AC ← AC + 43 AC ← AC - 10 AC ← AC X 5 AC ← AC/9 Y ← 20 ISI ACC 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