Desain dan Arsitektur Set Instruksi

advertisement
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
Download