Simple as Possible Computer 2

Download Report

Transcript Simple as Possible Computer 2

Simple as Possible Computer 2
Instruction Set SAP-1 (2)
° Instruksi-instruksi pada SAP-1 :
• LDA (Load the Accumulator)
-
Untuk mengambil data dari memori dan dimasukkan ke
dalam accumulator
Contoh : LDA AH
• ADD
-
Untuk menjumlahkan isi accumulator dengan data
memori
Contoh : ADD 8H
• SUB
-
Untuk mengurangkan isi accumulator dengan isi register
B
Contoh : SUB DH
2
Arsitektur SAP-2
3
Register Masukan
• SAP-2 memiliki 2 buah register
masukan diberi nomor 1 dan 2
• Dihubungkan dengan keyboard
heksadesimal untuk menuliskan
data & instruksi
• Sinyal Ready dikirim ke jalur 0
register masukan 2 untuk
menunjukkan data pada register
masukan 1 telah benar
• Sinyal IN SERIAL untuk masuk
ke jalur 7 pada register
masukan 2
4
Pencacah Program & MAR
PENCACAH PROGRAM
• Lebar 16-bit (0000 H – FFFF H)
• Nilai pencacah masuk ke MAR
• Instruksi dilaksanakan secara
berurutan dari alamat 0000
sampai ketemu instruksi HLT
• Dapat diisi nilai 16-bit dari
instruksi jump
• Jalur yang menghubungkan
pencacah dengan bus W ada 2
• 1 jalur untuk mengirim nilai
• 1 jalur untuk menerima
jump
MAR
• Menerjemahkan alamat dari PC
untukdiproses ke memori
5
Memori 64 KB
• Lebar data 8-bit
• Penggunaan alamat memori :
• 2KB awal (0000 H - 07FF
H) untuk program monitor
• 0800 H – FFFF H untuk
instruksi dan data
• Program monitor untuk
masukan dari keyboard dan
kondisi yang terjadi selama
proses
6
Memori Data Register
• Untuk menyimpan sementara
data yang dibaca atau akan
dimasukkan ke dalam memori
• Saat operasi baca data masuk
ke MDR untuk diteruskan ke
bus W
• Saat operasi tulis, data dari bus
W akan diteruskan ke memori
7
Register Instruksi (IR) & Controller/Sequencer (CS)
REGISTER INSTRUKSI
• Instruksi lebarnya 8-bit (sama
dg prosesor 8080/8085 dari
intel) untuk diteruskan ke
controller/ sequencer
• Jumlah instruksi yang bisa
dimiliki 28 = 256 buah
• SAP-2 hanya punya 42 instruksi
CONTROLLER/SEQUENCER
• Instruksi dari IR akan
diterjemahkan mejadi sinyal
kontrol (CON)
8
Akumulator A & ALU
AKUMULATOR
• Untuk menyimpan sementara
hasil operasi ALU
• Data dari bus W bisa dari
memori atau hasil operasi ALU
• Keluaran data dpt ditransfer ke
register keluaran
ALU
• Untuk menyelesaikan operasi
aritmetika & logika
• Lebar 8-bit (jadi SAP-2 adlh
prosesor 8-bit)
• Terdapat 2-bit flag :
• 1 bit untuk sign flag (1 hasil
ALU negatif, 0 positif)
• 1 bit untuk zero flag (1 hasil
bukan 0, 0 hasil 0)
9
Register tmp, B, dan C
• Untuk menyimpan sementara
nilai yang akan dioperasikan
atau hasil operasi
• Khusus register TMP
menyimpan data yang akan
dioperasikan oleh ALU.
• Lebih banyak register untuk
menyimpan data sementara
akan lebih baik
• Data sementara tidak hanya
disimpan di akumulator A
10
Register Keluaran 3 & 4
• Untuk mengkomunikasikan
hasil proses dengan pengguna.
• Pengguna dapat melihat
hasilnya lewat Peraga
Heksadesimal
11
Jalur 2 Arah (1)
(a) JALUR SATU ARAH
(b) JALUR DUA ARAH (satu untuk
IN satu untuk OUT)
12
Contoh Jalur 2 Arah pada Akumulator (2)
• Data bisa mengalir dari Akumulator ke bus W dan
sebaliknya
• Aliran data dikendalikan oleh jalur kendali :
• EN  mengendalikan data dari Akumulator ke bus W
• CK  untuk detak (clock) yang mentrigger proses
• LOAD  untuk mengendalikan data dari bus W ke
Akumulator
• Dengan jalur 2 arah, perusahaan chip tidak perlu
menyediakan banyak jalur ke sebuah register
13
Instruction Set SAP-2
° Instruksi terdiri dari 2 bagian :
• Operational code
• Operand (nilai yang dioperasikan)
° Kebutuhan memori untuk operand tergantung jenis instruksi
° Contoh 3 instruksi dimulai dari alamat 1000 H:
• ADD B  op code 80, tidak butuh memori
• MOV A,18H  op code 3E butuh 1 alamat memori
• STA 4861H  op code 32 butuh 2 alamat memori
14
Operasional Code (1)
15
Operasional Code (2)
16
Operasional Code (3)
17
Operasional Code (4)
18
Jenis-jenis instruksi
Jenis instruksi SAP-2 dapat dikelompokkan :
° Instruksi Mengacu Memori (Memory Reference
Instruction, MRI)
° Instruksi antar Register
° Instruksi Lompat dan Pemanggilan (Jump & Call
Instruction)
° Instruksi Logika (Logic Instruction)
° Instruksi lain-lain
19
Siklus Instruksi
° Secara garis besar, instruksi pada SAP-2 diselesaikan
jadi 3 tahap :
• Fetch
-
Siklus Fetch sama dg SAP-1 di mana akhir dari siklus
adalah op code ada di IR
• Penerjemahan (decode)
-
Siklus penerjemah dilakukan di controller/sequencer
hasil penerjemahan dikeluarkan oleh CON dan
digunakan pada tahap eksekusi
• Eksekusi
-
Melakukan eksekusi berdasarkan sinyal kontrol CON
20
MRI
° Contoh :
• LDA (load the accumulator)
• STA (store the accumulator)
• MOV (move; untuk yang tipe immediate)
° MRI melibatkan pengaksesan memori 2x, yaitu saat
fetch dan eksekusi, sehingga lama.
21
MRI - LDA
° Berfungsi untuk mengambil data memori alamat
tertentu dan dipindahkan ke dalam akumulator
° Format instruksi :
LDA alamat
Contoh :
LDA 1500 H
Instruksi memindahkan data memori alamat
1500H ke akumulator
22
MRI - STA
° Berfungsi untuk mengambil data pada akumulator dan
memindahkannya ke memori alamat tertentu
° Format instruksi :
STA alamat
Contoh :
STA 1501 H
Misal sebelum instruksi isi akumulator 4E H.
Maka nilai 4E H ini akan disalin ke memori
alamat 1501 H
23
MRI – MOV (untuk yg mov immediate)
° Berfungsi untuk transfer data yang memindahkan 8 bit
data ke dalam register. Operand yang terlibat adalah
register A, B, C.
° Format instruksi :
MOV register, byte
Contoh :
MOV A, 45 H
MOV B, 5E H
MOV C, F3H
Setelah 3 instruksi dijalankan, maka nilai
register A = 45H, B=5EH, C = F3H
24
Instruksi antar Register
° Proses perpindahan data tidak menggunakan memori
° Terjadi antar register secara langsung
° Lebih cepat daripada MRI
° Contoh :
• MOV (move; untuk move register)
• ADD
• SUB
• INR (Increment)
• DCR (Decrement)
25
Instruksi antar Register – MOV (move register)
° Berfungsi untuk transfer data yang memindahkan 8 bit
data ke dalam register. Operand yang terlibat adalah
register A, B, C.
° Format instruksi :
MOV register, register
Contoh :
MOV A, B
MOV B, C
MOV C, A
26
Instruksi antar Register – ADD & SUB
° Berfungsi untuk menambah atau mengurangi nilai
akumulator dengan nilai register tertentu dan hasilnya
disimpan di akumulator. Register yang terlibat adalah
register B dan C.
° Format instruksi :
ADD register
SUB register
Contoh :
ADD C
SUB B
27
Instruksi antar Register – INR & DCR
° Berfungsi menambahkan nilai 1 (INR) atau
mengurangkan nilai 1 (DCR) pada register. Register
yang terlibat sebagai operand adalah A, B, C.
° Format instruksi :
INR register
DCR register
Contoh :
INR A
 nilai A = A + 1
DCR B  nilai B = B - 1
28
Instruksi Jump
° Berfungsi untuk memungkinkan prosesor
mengeksekusi instruksi tidak secara berurutan
° Nilai PC dapat diubah sesuai dengan kondisi dan
instruksi lompat atau pemanggilan
° Contoh :
• JMP (Jump)
• JM (Jump if Minus)
• JZ (Jump if Zero)
• JNZ (Jump if Not Zero)
° Di antara keempat instruksi, JMP termasuk instruksi
lompatan tidak bersyarat (uncoditional jump) dan JM,
JZ, JNZ adalah lompatan bersyarat (conditional jump)
29
Instruksi Jump – JMP
° Adalah instruksi lompatan tidak bersyarat yang
mengakibatkan prosesor mengalihkan eksekusi
program sesuai dengan alamat tujuan lompatan
° Format instruksi :
JMP alamat
Contoh :
JMP 2500 H
Instruksi ini memberitahu prosesor untuk
menjalankan instruksi di 2500 H. PC  2500H
30
Instruksi Jump – JM (Jump if Minus)
° Adalah instruksi lompatan bersyarat. Prosesor akan
memeriksa flag sign keluaran dari ALU. Jika Sign 1
(negatif) maka lompatan dilakukan
° Format instruksi :
JM alamat
Contoh :
Asumsi nilai reg A = 45H, B = 10H, C = 60H
Hasil SUB +, tdk dilakukan
SUB B; A = A – B = 45H – 10 H = 35 H
jump ke 1000 H
JM 1000 H;
SUB C; A = A – C
Hasil SUB -, dilakukan jump
JM 2600 H;
ke 2600 H
31
Instruksi Jump – JZ (Jump if Zero)
° Adalah instruksi lompatan bersyarat. Prosesor akan
memeriksa zero keluaran dari ALU. Jika flag Zero 1
(nol) maka lompatan dilakukan
° Format instruksi :
JZ alamat
Contoh :
JZ 2500 H
Instruksi ini memberitahu prosesor untuk
lompat ke instruksi di 2500 H jika zero flag 1
32
Instruksi Jump – JNZ (Jump if Not Zero)
° Adalah instruksi lompatan bersyarat. Prosesor akan
memeriksa zero keluaran dari ALU. Jika flag Zero 0
(hasil ALU tidak 0) maka lompatan dilakukan
° Format instruksi :
JNZ alamat
Contoh :
JZ 2500 H
Instruksi ini memberitahu prosesor untuk
lompat ke instruksi di 2500 H jika zero flag 0
33
Instruksi CALL & RET (return)
° Konsep sub rutin memudahkan pembagian tugas
utama yang diselesaikan oleh program utama dan subprogram.
° Bagian yang sering dieksekusi tidak harus terus
menerus ditulis dalam program utama.
° Bagian ini dapat ditulis secara terpisah pada alamat
tertentu, disebut subrutin atau prosedur.
34
Instruksi CALL & RETURN
° CALL adalah instruksi untuk memanggil subrutin.
RETURN untuk mengakhirinya.
° Format instruksi :
CALL alamat
Contoh :
Misal kita punya subrutin faktorial di alamat
4000H sampai 4500 H . Untuk memanggil
subrutin faktorial tersebut dilakukan
pemanggilan berikut :
CALL 4000 H
35
Contoh CALL & RETURN di SAP-2
36
Contoh CALL & RETURN di SAP-2
Ketika terjadi call yang terletak di alamat 1001H – 1003H,
alamat terakhir (1004H) akan disimpan pada akhir memori.
Alamat FFFE H dan FFFF H dialokasikan untuk alamat
kembali.
37
Instruksi Logika
° Dikerjakan oleh ALU
° Proses logika adalah proses yang didasarkan pada
peraturan aljabar logika
° Contoh :
• CMA (complement the accumulator)
• ANA (and the accumulator)
• ORA (or the accumulator)
• XRA (xor the accumulator)
• XRI (xor immediate)
38
Instruksi Logika – CMA (complement the accumulator)
° Instruksi ini berfungsi melakukan komplemen isi
akumulator, yaitu mengubah setiap bit dalam
akumulator dengan nilai kebalikannya
° Format instruksi :
CMA
Contoh :
Misal nilai akumulator saat ini adalah A = 00101100
Setelah instruksi CMA A = 11010011
39
Instruksi Logika – ANA (and the accumulator)
° Instruksi ini berfungsi melakukan operasi AND isi
akumulatir dengan isi register. Register operand adalah
register B, C
° Format instruksi :
ANA register
Contoh :
Misal nilai akumulator saat ini adalah A = 00101100
B = 00011001
Setelah instruksi ANA B = 00001000
40
Instruksi Logika – ORA (or the accumulator)
° Instruksi ini berfungsi melakukan operasi OR isi
akumulatir dengan isi register. Register operand adalah
register B, C
° Format instruksi :
ORA register
Contoh :
Misal nilai akumulator saat ini adalah A = 00101100
B = 00011001
Setelah instruksi ORA B = 00111101
41
Instruksi Logika – XRA (xor the accumulator)
° Instruksi ini berfungsi melakukan operasi XOR isi
akumulatir dengan isi register. Register operand adalah
register B, C
° Format instruksi :
XRA register
Contoh :
Misal nilai akumulator saat ini adalah A = 00101100
B = 00011001
Setelah instruksi XRA B = 00110101
42
Instruksi Logika – ANI (and immediate the accumulator)
° Instruksi ini berfungsi melakukan operasi AND isi
akumulatir dengan suatu nilai 8-bit. Register operand
adalah register B, C
° Format instruksi :
ANI byte
Contoh :
Misal nilai akumulator saat ini adalah A = 00101100
Setelah instruksi ANI 00110010
A = 00100000
43
Instruksi Logika – ORI (or immediate the accumulator)
° Instruksi ini berfungsi melakukan operasi OR isi
akumulatir dengan suatu nilai 8-bit. Register operand
adalah register B, C
° Format instruksi :
ORI byte
Contoh :
Misal nilai akumulator saat ini adalah A = 00101100
Setelah instruksi ORI 00110010
A = 00111110
44
Instruksi Logika – XRI (xor immediate the accumulator)
° Instruksi ini berfungsi melakukan operasi XOR isi
akumulatir dengan suatu nilai 8-bit. Register operand
adalah register B, C
° Format instruksi :
XRI byte
Contoh :
Misal nilai akumulator saat ini adalah A = 00101100
Setelah instruksi XRI 00110010
A = 00011110
45
Instruksi lain-lain (1)
° Contoh :
• NOP (no operation)
-
Prosesor tidak melakukan apa-apa.
Digunakan sebagai jeda
Sering digunakan pada proses pipeline, yaitu upaya
peningkatan kecepatan proses dengan melaksanakan
beberapa instruksi secara bersamaan
• IN (input)
-
Untuk memindahkan data dari register masukan ke
akumulator
Format instruksi : IN byte (IN 100001101)
• HLT (HALT)
-
Sebagai tanda akhir dari program
• OUT (output)
-
Memindahkan data dari akumulator ke register keluaran
46
Instruksi lain-lain (2)
° Contoh :
• RAL (Rotate the accumulator left)
-
Memutar nilai akumulator ke kiri satu bis
Misal A = 11001000
Setelah instruksi RAL A = 10010001
• RAR (Rotate the accumulator right)
-
Memutar nilai akumulator ke kanan satu bit
Misal A = 11001000
Setelah instruksi RAR maka nilai A = 01100100
47