Simple As Posible 2 (bag-2) (Pertemuan ke-18) Disusun ulang oleh: Andrian Rakhmatsyah Diedit ulang oleh: Endro Ariyanto Prodi S1 Teknik Informatika Fakultas Informatika Universitas Telkom Maret 2016
Instruksi logika (1) Memanipulasi isi Accumulator, dibagi menjadi 2 1. Operand kedua adalah register B dan C Panjang instruksi : 1 byte Format : Opcode Contoh : ANA B 2. Operand kedua adalah nilai konstanta Panjang instruksi : 2 byte Format : Opcode, byte Contoh : ANI C7H Organisasi dan Arsitektur Komputer CSG2G3/2016 #1
Instruksi logika (2) Instruction Opcode T Flags Addressing Bytes Arti ANA B A0H 4 S, Z Register 1 A A AND B ANA C A1H 4 S, Z Register 1 A A AND C ANI byte E6H 7 S, Z Immediate 2 A A AND byte CMA 2FH 4 None Implied 1 A A ORA B B0H 4 S, Z Register 1 A A OR B ORA C B1H 4 S, Z Register 1 A A OR C ORI byte F6H 7 S, Z Immediate 2 A A OR byte XRA B A8H 4 S, Z Register 1 A A XOR B XRA C A9H 4 S, Z Register 1 A A XOR C XRI byte EEH 7 S, Z Immediate 2 A A XOR byte Organisasi dan Arsitektur Komputer CSG2G3/2016 #2
Instruksi logika (3) MVI A, 02H ; A 0000 0010 2 MVI B, 00H ; B 0000 0000 2 MVI C, 01H ; C 0000 00001 2 ANA B ; A 0000 0010 2 AND 0000 0000 2 ANI 00H ; A 0000 0000 2 AND 0000 0000 2 ORA C ; A 0000 0000 2 OR 0000 0001 2 XRI 00H ; A 0000 0001 2 XRI 0000 0000 2 HLT ; A 0000 0001 2 Organisasi dan Arsitektur Komputer CSG2G3/2016 #3
Instruksi Lainnya Instruction Opcode T Flags Addressing Bytes Arti NOP 00 4 None - 1 No Operation (delay) HLT 76 5 None - 1 Stop Processing IN byte DB 1 0 None Direct 2 A byte OUT byte D3 1 0 None Direct 2 Port byte A RAL 17 4 None Implied 1 Rotate All Left RAR 1F 4 None Implied 1 Rotate All Right Organisasi dan Arsitektur Komputer CSG2G3/2016 #4
NOP (No Operation) (1) Selama eksekusi, tidak akan terjadi apapun pada 4 keadaan T Termasuk isi register tidak akan berubah Disebut instruksi waste time Kadang-kadang diperlukan jika dalam suatu loop yang banyak, misalnya 100 kali. Jika terdapat sebuah instruksi NOP sekali dalam loop tersebut maka akan terdapat waktu tunda (delay) sebanyak 400 T Organisasi dan Arsitektur Komputer CSG2G3/2016 #5
NOP (No Operation) (2) Contoh, SAP-2 memiliki clock = 1 MHz. Berapa waktu yang dibutuhkan oleh subrutin di bawah ini? Label Mnemonik Komentar MVI C, 46H ; C 70 d LAGI : DCR C ; C C 1 JNZ LAGI ; Lompat jika Z = 0 NOP ; Tunda RET Organisasi dan Arsitektur Komputer CSG2G3/2016 #6
NOP (No Operation) (3) Diket: clock f = 1 MHz T 1 6 f 1 10 s 1 6 10 s Jawab : instruksi dieksekusi x T states x T MVI = 1 x 7 x 1 µ = 7 µs DCR = 70 x 4 x 1 µ = 280 µs JNZ = 69 x 10 x 1 µ = 690 µs (jika terjadi lompatan) JNZ = 1 x 7 x 1 µ = 7 µs (tidak terjadi lompatan) NOP = 1 x 4 x 1 µ = 4 µs RET = 1 x 10 x 1 µ = 10 µs = 998 µs 1 ms Organisasi dan Arsitektur Komputer CSG2G3/2016 #7
Contoh Instruksi IN dan OUT Tunjukkan sebuah program yang dapat menginputkan sebuah byte dari input port 1 dan menentukan apakah bit ke-0 bernilai 1 atau 0. Jika bit tersebut adalah 1 maka isikan akumulator dengan huruf Y dan jika 0 isikan N (ASCII : Y = 89 desimal ; N = 78 desimal). Jawaban bit Y atau N ditampilkan di Hexadecimal Display! Jawab : Label Mnemonik Komentar IN 01H ; A byte ANI 01H ; Cek bit ke-0 bernilai 0 atau 1 JZ YES ; Lompat jika bit ke-0 bernilai 0 (Nol) MVI A, 59H ; A 89 ( Y ) JMP END ; Lompat YES: MVI A, 4EH ; A 78 ( N ) END: OUT 03H ; Tampilkan ke Hexadecimal Display HLT ; Selesai Organisasi dan Arsitektur Komputer CSG2G3/2016 #8
Instruksi RAL dan RAR (1) RAL, mnemonik dari rotate the accumulator left yaitu menggeser semua bit ke kiri dan memindahkan posisi bit-msb ke posisi bit-lsb RAR, mnemonik dari rotate the accumulator right yaitu menggeser semua bit ke kiri dan memindahkan posisi bit-lsb ke posisi bit-msb MSB RAL LSB MSB RAR LSB Organisasi dan Arsitektur Komputer CSG2G3/2016 #9
Instruksi RAL dan RAR (2) 1111 0000 RAL 1111 0000 RAR 1110 0001 0111 1000 Organisasi dan Arsitektur Komputer CSG2G3/2016 #10
Output Serial Tunjukkan program pada halaman 8, jika output diubah menjadi keluaran SERIAL! Jawab : Label Mnemonik Komentar IN 01H ; A byte ANI 01H ; Cek bit ke-0 bernilai 0 atau 1 JZ YES ; Lompat, jika bit ke-0 bernilai 0 MVI A, 59H ; A Y JMP END ; Lompat YES: MVI A, 4EH ; A N END: MVI C, 08H ; C 8 REPEAT: OUT 04H ; Kirimkan bit LSB pada A ke Port 4 RAR ; Putar bit LSB menjadi bit MSB DCR C ; C C 1 JNZ REPEAT ; Lompat, jika C 0 HLT Organisasi dan Arsitektur Komputer CSG2G3/2016 #11
Handshaking (1) Handshaking adalah proses interaksi antar a CPU dengan peripheral device yang berlangsung selama pemindahan data ke I/O. SKENARIO: Setelah 2 digit (1 byte) dimasukkan lewat hexadecimal encoder, data dimasukkan ke input port 1, sekaligus pada waktu yang bersamaan input port 1 mengirimkan bit READY ke port 2. Sebelum data dari input port 1 masuk ke akumulator, CPU memeriksa bit READY pada Port 2 Jika bit READY = 0 (Low) maka CPU akan menunggu. Jika bit READY = 1 (High), data dari port 1 dimasukkan ke Akumulator Setelah data diterima akumulator, bit ACKNOWLEDGE dikirimkan oleh Akumulator ke port 4 untuk selanjutnya dikirimkan ke Hexadecimal encoder untuk mereset bit READY pada port 2 Organisasi dan Arsitektur Komputer CSG2G3/2016 #12
Handshaking (2) 1.READY bit (bit-0, port 2) = 1 2.A byte pada port 1 3.A kirim ACK bit (bit-7, port 4) = 1 untuk mereset READY bit = 0 4.ACK bit di reset = 0 Organisasi dan Arsitektur Komputer CSG2G3/2016 #13
Handshaking (3) Tuliskan program untuk memasukkan data dari port 1 dengan menggunakan proses handshaking! Label Mnemonik Komentar STATE : IN 02H ; Ambil byte dari port 2 ANI 01H ; Periksa bit READY sudah = 1 (HIGH) JZ STATE ; Ulangi jika belum siap IN 01H ; Ambil byte dari port 1 MOV B, A ; B A MVI A,80H ; Siapkan bit ACK, bit ke-7 yang high OUT 04H ; Kirimkan bit ACK MVI A, 00H ; Reset bit ACK OUT 04H ; Keluarkan ACK HLT Organisasi dan Arsitektur Komputer CSG2G3/2016 #14
Contoh Kasus (1) Berapa waktu yang diperlukan untuk mengeksekusi subrutin berikut ini: Label Mnemonik MVI B, 0AH LOOP1 : MVI C, 47H LOOP2: DCR C JNZ LOOP2 DCR B JNZ LOOP1 RET Organisasi dan Arsitektur Komputer CSG2G3/2016 #15
Contoh Kasus (2) Program memiliki 2-buah looping yaitu nested-loop. Looping dalam looping. Loop-dalam (Loop2) DCR C = 71 eksekusi x 4 clock x 1 µs = 284 µs JNZ Loop2 = 70 x 10 x 1 µs = 700 µs (dg lompatan) JNZ Loop2 = 1 x 7 x 1 µs = 7 µs (tanpa lompatan) Total = 284 µs + 700 µs + 7 µs = 991 µs Saat C = 0, maka B = B 1 dan JNZ Loop1 kembali ke MVI C, 47H. Kemudian, Loop2 dieksekusi lagi. Loop2 akan dilakukan sebanyak = 10x (0AH), sehingga MVI B, 0AH = 1 x 7 x 1 µs = 7 µs MVI C, 47H = 10 x 7 x 1 µs = 70 µs Loop2 = 10 x 991 µs = 9910 µs DCR B = 10 x 4 x 1 µs = 40 µs JNZ Loop1 = 9 x 10 x 1 µs = 90 µs (dg lompatan) JNZ Loop1 = 1 x 7 x 1 µs = 7 µs (tanpa lompatan) RET = 1 x 10 x 1 µs = 10 µs Total = 7 + 70 + 9910 + 40 + 90 + 7 + 10 = 10134 µs 10 ms Organisasi dan Arsitektur Komputer CSG2G3/2016 #16
Subrutin 1 ms Subrutin D1ms Label Mnemonik MVI C, 47H ; 1 x 7 x 1 µs = 7 µs Loop1: DCR C ; 71 x 4 x 1 µs = 284 µs JNZ Loop1 ; 70 x 10 x 1 µs = 700 µs ; 1 x 7 x 1 µs = 7 µs End: RET ; 1 x 10 x 1 µs = 10 µs Dijumlahkan = 7 + 284 + 700 + 7 + 10 = 1008 µs 1 ms Organisasi dan Arsitektur Komputer CSG2G3/2016 #17
Referensi Malvino, Albert Paul; Jerald A. Brown. 1999. Digital Computer Electronics.3 rd edition. McGraw-Hill. New York Organisasi dan Arsitektur Komputer CSG2G3/2016 #18