11/20/2015 Tahun Akademik 2015/2016 Semester I DIG1B3 – Konfigurasi Perangkat Keras Komputer SAP-2 Mohamad Dani (MHM) E-mail: [email protected] Hanya dipergunakan untuk kepentingan pengajaran di lingkungan Telkom Applied Science School Setelah mengikuti perkuliahan ini mahasiswa dapat: Memahami Arsitektur SAP-2. Menjelaskan cara kerja SAP-2. Menjelaskan instruksi-instruksi yang ada pada SAP-2. Membuat program sederhana untuk SAP-2.. Dapat menggunakan Logisim dan ISIS Proteus untuk mensimulasikan cara kerja SAP-2 untuk program yang diload ke RAM SAP-2. 1 11/20/2015 Komputer SAP-2 (Simple As Possible Versi 2) Perancangan komputer SAP bertujuan untuk memperkenalkan semua ide penting dibalik operasi komputer tanpa harus tenggelam dalam kerumitan yang tidak perlu. Meski sederhana, SAP sudah mengandung banyak konsep yang lanjut. SAP-2 merupakan tahap pengembangan dari komputer SAP-1 yang memiliki jumlah instruksi yang lebih banyak dengan kapasitas memori yang lebih banyak dengan fitur yang lebih lengkap. ARSITEKTUR SAP-2 Bus W ACKNOWLEDGE 8 Hexadecimal Keyboard encoder 8 Input Port 2 8 PC 16 8 Accumulator 8 ALU 8 TMP 8 B 8 C 8 Input Port 1 2 FLAGS 8 Hexadecimal Display 8 16 MAR 16 0 SERIAL IN 7 Address 64K Memory 8 Data MDR 8 IR 8 8 Output Port 3 8 Output Port 4 0 7 SERIAL OUT ACKNOWLEDGE 8 READY Controller/ Sequencer 2 11/20/2015 ARSITEKTUR SAP-2: Input Port SAP-2 memiliki 2 buah input port yaitu input port 1 dan 2. Dihubungkan dengan keyboard heksadesimal untuk menuliskan data & instruksi. Sinyal Ready dikirim ke jalur 0 Input Port 2 untuk menunjukkan data pada Input Port 1 telah benar. Sinyal SERIAL IN untuk masuk ke jalur 7 pada Input Port 2. Bus W ACKNOWLEDGE 8 Hexadecimal Keyboard encoder READY 0 SERIAL IN 7 Input Port 1 8 Input Port 2 8 ARSITEKTUR SAP-2: PC dan MAR Bus W ACKNOWLEDGE 8 Hexadecimal Keyboard encoder 0 SERIAL IN 7 8 Input Port 2 8 PC 16 MAR 16 READY Input Port 1 Address 16 PC (Program Counter) Lebar 16-bit (0000 H – FFFF H) Nilai PC 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 PC dengan bus W ada 2: 1 jalur untuk mengirim nilai 1 jalur untuk menerima jump MAR (Memory Address Register) Menerjemahkan alamat dari PC untuk diproses ke memori. 3 11/20/2015 ARSITEKTUR SAP-2: 64K Memory Bus W 16 MAR 16 Address 64K Memory 8 Data Lebar data 8-bit. Penggunaan alamat memori : 2KB awal (0000H - 07FFH) untuk program monitor. 0800H – FFFFH untuk instruksi dan data. Program monitor untuk masukan dari keyboard dan kondisi yang terjadi selama proses ARSITEKTUR SAP-2: MDR (Memory 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. Bus W 64K Memory 8 MDR 8 4 11/20/2015 ARSITEKTUR SAP-2: IR (Instruction Register) & Controller/Sequencer (CS) Bus W IR Instruksi lebarnya 8-bit (sama dengan prosesor 8080/8085 dari Intel) untuk diteruskan ke controller/sequencer. Jumlah instruksi yang bisa dimiliki 256 buah. SAP-2 hanya punya 43 instruksi. 8 8 IR (Instruction Register) Controller/ Sequencer CS (CONTROLLER/SEQUENCER) Instruksi dari IR akan diterjemahkan mejadi sinyal kontrol (CON). ARSITEKTUR SAP-2: Accumulator dan ALU Accumulator Untuk menyimpan sementara hasil operasi ALU. Data dari bus W bisa dari memori atau hasil operasi ALU Keluaran data dapat ditransfer ke output port. Bus W 8 8 Accumulator ALU 2 FLAGS 8 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). 5 11/20/2015 ARSITEKTUR SAP-2: 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 Accumulator A. Untuk mengkomunikasikan proses dengan pengguna. Pengguna dapat melihat hasilnya lewat Hexadesimal Display. Bus W ALU 8 TMP 8 B 8 C 8 8 ARSITEKTUR SAP-2: Output Port 3 dan 4 hasil Bus W 8 Output Port 3 8 Output Port 4 8 Hexadecimal Display SERIAL OUT ACKNOWLEDGE 6 11/20/2015 Jalur 2 Arah Bus W ACKNOWLEDGE Hexadecimal Keyboard encoder n 8 (a) 8 0 READY SERIAL IN 7 Input Port 2 8 PC 16 MAR 16 (b) Accumulator (a) JALUR SATU ARAH 8 Input Port 1 n ALU 8 TMP 2 FLAGS (b) JALUR DUA ARAH (satu untuk IN satu untuk 8 8 16 OUT) B 8 Address 64K Memory C 8 8 Data 8 IR 8 8 Output Port 3 8 Output Port 4 8 0 7 Hexadecimal Display SERIAL OUT ACKNOWLEDGE 8 MDR Controller/ Sequencer Instruction Set SAP-2 (1) Instruksi terdiri dari 2 bagian : Operational code (Opcode) Operand (nilai yang dioperasikan) Kebutuhan memori untuk operand tergantung jenis instruksi. Terdapat 43 Instruksi pada SAP-2 Contoh 3 instruksi dimulai dari alamat 1000H: ADD B op code 80, tidak butuh memori MVI A,18H op code 3E butuh 1 alamat memori STA 4861H op code 32 butuh 2 alamat memori 7 11/20/2015 Instruction Set SAP-2 (2) Instruction Set SAP-2 (3) 8 11/20/2015 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. Execute Melakukan eksekusi berdasarkan sinyal kontrol CON. Jenis-Jenis Instruksi SAP-2 Instruksi Mengacu Memori (Memory Reference Instruction, MRI) Instruksi antar Register Instruksi Lompat dan Pemanggilan (Jump & Call Instruction) Instruksi Logika (Logic Instruction) Instruksi lain-lain 9 11/20/2015 MRI (Memory Reference Instruction) Yang termasuk ke MRI: LDA (load the accumulator) STA (store the accumulator) MVI (move immediate) MRI melibatkan pengaksesan memori 2x, yaitu saat fetch dan eksekusi, sehingga lama. MRI : LDA Berfungsi untuk menyalin data memori pada alamat tertentu ke dalam akumulator. Format instruksi : LDA Alamat Contoh: Mnemonic LDA 1500H Keterangan A [1500H] Instruksi memuat data dari alamat memori 1500H ke akumulator 10 11/20/2015 MRI : STA Berfungsi untuk menyalin data dari akumulator ke memori pada alamat tertentu. Format instruksi : STA Alamat Contoh: Mnemonic STA 1500H Keterangan [1500H] A Misal sebelum instruksi isi akumulator BFH. Maka nilai BFH ini akan disalin ke memori alamat 1500H. MRI : MVI Berfungsi untuk transfer data yang menyalin data 8 bit ke dalam register. Operand yang terlibat adalah register A, B, C. Format instruksi : MVI Register, byte Contoh: Mnemonic Keterangan MVI A, 12H A 11H MVI B, 34H B 34H MVI C, 56H C 56H Setelah 3 instruksi dijalankan, maka nilai Register A = 11H, B = 34H, C = 56H 11 11/20/2015 Contoh 1: Buatlah mnemonic dan bahasa mesin SAP-2 untuk sebuah program yang memasukkan data ke accumulator dengan 40H, Register B dengan 41H, Register C dengan 42H dan kemudian program menyimpan data Accumulator A ke lokasi memori 6285H!. Lokasi awal program di 2000H. Solusi: Alamat Mnemonic Bahasa Mesin Keterangan 2000H MVI A, 40H 3E 40 A 40H 2002H MVI B, 41H 06 41 B 41H 2004H MVI C, 42H 0E 42 C 42H 2006H STA 6285H 32 85 62 [6285H] A 2009H HLT 76 STOP 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) 12 11/20/2015 Instruksi Antar Register : MOV (Move Register) Berfungsi untuk transfer data yang menyalin data 8 bit dari satu register ke register lain. Operand yang terlibat adalah register A, B, C. Format instruksi : MOV Register Tujuan, Register Asal Contoh: Mnemonic MOV A, B MOV B, C MOV C, A Keterangan AB BC C A Instruksi Antar Register : ADD & SUB Berfungsi untuk menambah atau mengurangi nilai accumulator dengan nilai register tertentu dan hasilnya disimpan di accumulator. Register yang terlibat adalah register B dan C. Format instruksi : ADD Register SUB Register Contoh: Mnemonic ADD C SUB B Keterangan A A + C A A - B 13 11/20/2015 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: Mnemonic INR A DCR B Keterangan A A + 1 BB-1 Contoh 2: Buatlah mnemonic dan bahasa mesin SAP-2 untuk sebuah program yang menjumlahkan 2 bilangan heksadesimal 10H yang disimpan di accumulator dan 20H yang disimpan di Register B dan hasil penjumlahannya disimpan di lokasi memori 5600H dan kemudian hasil penjumlahannya dinaikkan dengan 1 dan disimpan ke Register C. Lokasi awal program di 2000H. Solusi: Alamat Mnemonic Bahasa Mesin Keterangan 2000H MVI A, 10H 3E 10 A 10H 2002H MVI B, 20H 06 20 B 20H 2004H ADD B 80 A A+B 2005H STA 5600H 32 00 56 [5600H] A 2008H INR A 3C A A + 1 2009H MOV C,A 4F C A 200AH HLT 76 STOP 14 11/20/2015 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: Mnemonic JMP 3000H Keterangan Instruksi ini memberitahu prosesor untuk menjalankan instruksi di 3000H. PC 3000H 15 11/20/2015 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 Mnemonic Keterangan SUB B A A – B = 45H – 10H = 35H JM 1000H Lompat ke alamat 1000H jika Nilai Sign Flag 1 (-) SUB C A A – C = 35H – 60H JM 2600H Lompat ke alamat 2600H jika Nilai Sign Flag 1 (-) 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: Asumsi nilai reg A = 45H, B = 10H, C = 35H Mnemonic Keterangan SUB B A A – B = 45H – 10H = 35H JZ 1000H Lompat ke alamat 1000H jika Nilai Zero Flag 1 SUB C A A – C = 35H – 35H = 00H JZ 2600H Lompat ke alamat 2600H jika Nilai Zero Flag 1 16 11/20/2015 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: Asumsi nilai reg A = 45H, B = 10H, C = 35H Mnemonic Keterangan SUB B A A – B = 45H – 10H = 35H JNZ 1000H Lompat ke alamat 1000H jika Nilai Zero Flag 0 SUB C A A – C = 35H – 35H = 00H JNZ 2600H Lompat ke alamat 2600H jika Nilai Zero Flag 0 Instruksi CALL & RET (return) (1) 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. CALL adalah instruksi untuk memanggil subrutin. RETURN untuk mengakhirinya. Format Instruksi: CALL Alamat 17 11/20/2015 Instruksi CALL & RET (return) (2) Misal kita punya subrutin faktorial di alamat 4000H sampai 4500H. Untuk memanggil subrutin faktorial tersebut dilakukan pemanggilan berikut : CALL 4000H Contoh CALL & RETURN di SAP-2 18 11/20/2015 Contoh CALL & RETURN di SAP-2 Ketika terjadi call yang terletak di alamat 1001H – 1003H, alamat terakhir (1004H) akan disimpan pada akhir memori. Alamat FFFEH dan FFFFH dialokasikan untuk alamat kembali. Flag 19 11/20/2015 Contoh 3: Buatlah mnemonic dan bahasa mesin SAP-2 untuk sebuah program yang mengalikan bilangan desimal 12 dengan 10 dan simpan hasilnya disimpan di Register A dan alamat 1000H. Lokasi awal program di 800H. Solusi: Alamat Mnemonic Bahasa Mesin Keterangan 0800H MVI A, 00H 3E 00 A 00H 0802H MVI B, 0CH 06 0C B 0CH 0804H MVI C, 0AH 0E 0A C 0AH 0806H ADD B 80 A A + B 0807H DCR C 0D CC-1 0808H JNZ 0806H C2 06 08 C <>0, JMP 0806H 080BH STA 1000H 32 00 10 [1000H] A 080EH HLT 76 STOP Contoh 4: Buatlah mnemonic dan bahasa mesin SAP-2 untuk sebuah program yang mencari perkalian 2 x 3 x 4, hasil perkalian ketiga bilangan tersebut disimpan di alamat 1000H. Operasi perkaliannya dibuat dalam Subrutin dan disimpan di alamat 900H. Lokasi awal program di 800H. Solusi: 20 11/20/2015 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) ANI (and Immediate) ORI (or immediate) 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 21 11/20/2015 Instruksi Logika: ANA (and the accumulator) Instruksi ini berfungsi melakukan operasi AND isi akumulator dengan isi register lain bit per bit. Register operand adalah register B, C. Format instruksi : ANA Register Contoh: Misal nilai akumulator saat ini adalah A = 00101100 dan B = 10110001 Setelah instruksi ANA B A = 00100000 Instruksi Logika: ORA (or the accumulator) Instruksi ini berfungsi melakukan operasi OR isi akumulatir dengan isi register lain bit per bit. Register operand adalah register B, C. Format instruksi : ORA Register Contoh: Misal nilai akumulator saat ini adalah A = 00101100 dan B = 10110001 Setelah instruksi ORA B A = 10111101 22 11/20/2015 Instruksi Logika: XRA (or the accumulator) Instruksi ini berfungsi melakukan operasi XOR isi akumulatir dengan isi register lain bit per bit. Register operand adalah register B, C. Format instruksi : XRA Register Contoh: Misal nilai akumulator saat ini adalah A = 00101100 dan B = 10110001 Setelah instruksi XRA B A = 10011101 Instruksi Logika: ANI (and immediate) Instruksi ini berfungsi melakukan operasi AND isi akumulator dengan suatu nilai 8 bit. Format instruksi : ANI byte Contoh: Misal nilai akumulator saat ini adalah A = 00101100 dan data = 11111110 Setelah instruksi ANI FEH A = 00101100 23 11/20/2015 Instruksi Logika: ORI (or immediate) Instruksi ini berfungsi melakukan operasi OR isi akumulator dengan suatu nilai 8-bit. Format instruksi : ORI byte Contoh: Misal nilai akumulator saat ini adalah A = 00101101 dan data = 10101010 Setelah instruksi ORI AAH A = 10101111 Instruksi Logika: XRI (xor immediate) Instruksi ini berfungsi melakukan operasi XOR akumulator dengan suatu nilai 8-bit. Format instruksi : XRI byte isi Contoh: Misal nilai akumulator saat ini adalah A = 00101101 dan data = 10101010 Setelah instruksi XRI AAH A = 10000111 24 11/20/2015 Instruksi Lain-Lain (1) 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) RAL (Rotate the accumulator left) Memutar nilai akumulator ke kiri satu bit 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 25 11/20/2015 Daftar Pustaka Albert Paul Malvino, Ph.D., Digital Computer Electronics, 3rd Edition 26