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
Arsitektur SAP-2
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
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
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
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
Register Instruksi (IR) & Controller/Sequencer (CS) 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)
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)
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
Register Keluaran 3 & 4 Untuk mengkomunikasikan hasil proses dengan pengguna. Pengguna dapat melihat hasilnya lewat Peraga Heksadesimal
Jalur 2 Arah (1) JALUR SATU ARAH JALUR DUA ARAH (satu untuk IN satu untuk OUT)
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
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
Operasional Code (1)
Operasional Code (2)
Operasional Code (3)
Operasional Code (4)
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
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
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.
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
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
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
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)
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
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
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
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)
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
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 SUB B; A = A – B = 45H – 10 H = 35 H JM 1000 H; SUB C; A = A – C JM 2600 H; Hasil SUB +, tdk dilakukan jump ke 1000 H Hasil SUB -, dilakukan jump ke 2600 H
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
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
Instruksi CALL & RET (return) Konsep sub rutin memudahkan pembagian tugas utama yang diselesaikan oleh program utama dan sub-program. 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.
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
Contoh CALL & RETURN di SAP-2
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.
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)
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
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
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
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
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
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
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
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
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 Setelah instruksi RAR maka nilai A = 01100100