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 : 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 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 atau ANI 32H 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