Simple as Possible Computer 2 Instruction Set SAP1
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 8 H • 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 : • 2 KB awal (0000 H - 07 FF 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, 18 H op code 3 E butuh 1 alamat memori • STA 4861 H 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 2 x, 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 1500 H 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 4 E H. Maka nilai 4 E 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, 5 E H MOV C, F 3 H Setelah 3 instruksi dijalankan, maka nilai register A = 45 H, B=5 EH, C = F 3 H 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 2500 H 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 = 45 H, B = 10 H, C = 60 H Hasil SUB +, tdk dilakukan SUB B; A = A – B = 45 H – 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 : JNZ 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 4000 H 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 1001 H – 1003 H, alamat terakhir (1004 H) 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 atau ANI 32 H A = 00100000 43
Instruksi Logika – ORI (or immediate the accumulator) ° Instruksi ini berfungsi melakukan operasi OR isi akumulatir dengan suatu nilai 8 -bit. ° 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
- Slides: 47