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
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
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
None Implied
Bytes
Arti
Organisasi dan Arsitektur Komputer – CSG2G3/2016 #2
Instruksi logika (3) MVI A, 02H MVI B, 00H MVI C, 01H ANA B ANI 00H ORA C XRI 00H HLT
; A 0000 00102 ; B 0000 00002 ; C 0000 000012 ; A 0000 00102 AND 0000 00002 ; A 0000 00002 AND 0000 00002 ; A 0000 00002 OR 0000 00012 ; A 0000 00012 XRI 0000 00002 ; A 0000 00012
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 None Direct 0
2
A byte
OUT byte
D3
1 None Direct 0
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 LAGI :
Mnemonik MVI C, 46H DCR C JNZ LAGI NOP RET
Komentar ; C 70d ;CC–1 ; Lompat jika Z = 0 ; Tunda Organisasi dan Arsitektur Komputer – CSG2G3/2016 #6
NOP (No Operation) (3) Diket: clock f = 1 MHz
T
1 1 6 10 s 1s 6 f 10
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 IN 01H ANI 01H JZ YES MVI A, 59H JMP END YES: MVI A, 4EH END: OUT 03H HLT
Komentar ; A byte ; Cek bit ke-0 bernilai 0 atau 1 ; Lompat jika bit ke-0 bernilai 0 (Nol) ; A 89 (‘Y’) ; Lompat ; A 78 (‘N’) ; Tampilkan ke Hexadecimal Display ; 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
1111 0000
1110 0001
0111 1000
RAL
RAR
Organisasi dan Arsitektur Komputer – CSG2G3/2016 #10
Output Serial Tunjukkan program pada halaman 8, jika output diubah menjadi keluaran SERIAL ! Jawab : Label Mnemonik IN 01H ANI 01H JZ YES MVI A, 59H JMP END YES: MVI A, 4EH END: MVI C, 08H REPEAT: OUT 04H RAR DCR C JNZ REPEAT HLT
Komentar ; A byte ; Cek bit ke-0 bernilai 0 atau 1 ; Lompat, jika bit ke-0 bernilai 0 ; A ‘Y’ ; Lompat ; A ’N’ ;C8 ; Kirimkan bit LSB pada A ke Port 4 ; Putar bit LSB menjadi bit MSB ;CC–1 ; Lompat, jika C 0 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 STATE :IN 02H ANI 01H JZ STATE IN 01H MOV B, A MVI A,80H OUT 04H MVI A, 00H OUT 04H HLT
Komentar ; Ambil byte dari port 2 ; Periksa bit READY sudah = 1 (HIGH) ; Ulangi jika belum siap ; Ambil byte dari port 1 ;BA ; Siapkan bit ACK, bit ke-7 yang high ; Kirimkan bit ACK ; Reset bit ACK ; Keluarkan ACK
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 Loop1:
End:
Mnemonik MVI C, 47H DCR C JNZ Loop1 RET
; 1 x 7 x 1 µs = 7 µs ; 71 x 4 x 1 µs = 284 µs ; 70 x 10 x 1 µs = 700 µs ; 1 x 7 x 1 µs = 7 µs ; 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”.3rd edition. McGraw-Hill. New York
Organisasi dan Arsitektur Komputer – CSG2G3/2016 #18