W BUS ACKNOWLEDGE HEXADECIMAL KEYBOARD ENCODER 16 ACCUMULATOR INPUT PORT 1 READY SERIAL IN 0 7 INPUT PORT 2 ALU 2 FLAGS PROGRAM COUNTER 16 TMP MAR 16 B 16 64 K MEMORY C Arsitektur SAP-2 MDR OUTPUT PORT 3 HEXADECIMA L DISPLAY INSTRUCTION REGISTER OUTPUT PORT 4 0 7 SERIAL OUT ACKNOWLEDGE CONTROLLER/ SEQUENCER CON 2
W BUS ACKNOWLEDGE HEXADECIMAL KEYBOARD ENCODER 16 ACCUMULATOR READY SERIAL IN 0 7 INPUT PORT 1 INPUT PORT 2 ALU 2 FLAGS Arsitektur SAP-2 vs SAP -1 PROGRAM COUNTER 16 TMP Cp CLK CLR Ep Program Counter 4 Accumulator A L A CLK E A MAR 16 B L M 16 CLK Input & MAR 4 Adder/Substractor S U E U 64 K MEMORY C CE RAM 16 x B Register L B CLK MDR INSTRUCTION REGISTER OUTPUT PORT 3 OUTPUT PORT 4 0 7 HEXADECIMAL DISPLAY SERIAL OUT ACKNOWLEDGE L I CLK CLR E I Instruction Register 4 Output Register L O CLK CONTROLLER/ SEQUENCER Controller- Sequencer CLK CLK CLR CLR Binary Display CON SAP-1 BLOCK ARCHITECTURE 3
Komponen SAP-2 (1) HEXADECIMAL KEYBOARD ENCODER Untuk memasukkan instruksi dan data hexadesimal Dihubungkan dengan Input Port 1 Mengirimkan sinyal READY sebagai bit-0 pada port 2 Bit READY ini mengindikasikan data pada port 1 sudah valid INPUT PORT 1 Menerima masukan dari HEXADECIMAL KEYBOARD ENCODER INPUT PORT 2 Menerima sinyal SERIAL IN dari input port 1 Untuk mengirimkan data ke peripheral 4
Komponen SAP-2 (2) PROGRAM COUNTER Menunjukkan alamat instruksi selanjutnya yang akan dieksekusi Memiliki 16-bit (2 byte) : 0000H FFFFH MAR (MEMORY ADDRESS REGISTER) Menyimpan alamat memori dari instruksi/data Menerima masukan dari PC sebanyak 2 byte MEMORI Memiliki ukuran 64K x Bit. Terbagi menjadi 2 bagian. ROM : Alamat 0000H 07FFH (=2K) berisi program monitor (inisialisasi, decode masukan dari keyboard) RAM : Alamat 0FFH FFFFH (=62K), user program 5
Komponen SAP-2 (3) MDR (MEMORY DATA REGISTER) Menyimpan data sementara dari Memori (RAM) Untuk Akses Memori : Akses Baca : Memori MDR Bus Register Akses Tulis : Register Bus MDR Memori INSTRUCTION REGISTER Register tempat penyimpanan instruction set (decode) Berisi Opcode -bit CONTROL UNIT Penghasil word kendali ACCUMULATOR Penyangga data operand atau hasil aritmatika/logik 6
Komponen SAP-2 (4) ALU (ARITHMATIC LOGIC UNIT) Unit pemroses aritmatika FLAGS Register yang mengikuti hasil proses Aritmatik/Logika pada ALU. Berukuran 2-bit. Menyimpan status S (Sign) dan Z (Zero) S = 1 jika Accumulator (A) < 0 dan sebaliknya Z = 1 jika Accumulator (A) = 0 dan sebaliknya TMP Register, B Register and C Register Penyimpan data operand kedua untuk operasi aritmatika/logik 7
Komponen SAP-2 (5) OUTPUT PORT 3 Penyimpan data Accumulator yang akan ditampilkan di Hexadesimal Display HEXADECIMAL DISPLAY Menampilkan isi Accumulator dari Output Port 3 OUTPUT PORT 4 Pin ke-7 (bit-7) dapat digunakan sebagai ACKNOWLEDGE (ACK) sinyal ke Hexadecimal encoder Sinyal (bit) ACK dan bit READY ini bagian dari konsep Handshaking Penyimpan data Accumulator yang akan ditampilkan secara SERIAL (dari pin/bit-0)
PEMROSESAN INSTRUKSI 1. Fase Pengambilan (Fetch Cycle), bersifat tetap yaitu 3 pulsa T1 : Address State T2 : Increment State T3 : Memory State 2. Fase Eksekusi (Execution Cycle), jumlah pulsa tergantung instruksi 9
KLASIFIKASI INSTRUKSI (1) Instruksi Beracuan Memori (MRI) LDA (Load Accumulator) STA (Store Accumulator) MVI (Move Immediate) Instruksi Register MOV (move) ADD SUB (substract) INR (increment) DCR (decrement) 10
KLASIFIKASI INSTRUKSI (2) Instruksi Jump dan CALL JMP (jump) JM (jump if minus) JZ (jump if zero) JNZ (jump if not zero) CALL (call the subroutine) RET (return) Instruksi Logika 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) 11
KLASIFIKASI INSTRUKSI (3) Instruksi Lain NOP (No Operation) HLT (Halt) IN (Input) OUT (Output) RAL (Rotate the Accumulator Left) RAR (Rotate the Accumulator Right) 12
KLASIFIKASI INSTRUKSI (4) Modus Pengalamatan 1. Pengalamatan langsung (Direct Addressing) Contoh : LDA address 2. Pengalamatan Segera (Immediate Addressing) Contoh : MVI A, byte 3. Pengalamatan Register (Register Addressing) Contoh : MOV A, B 4. Pengalamatan Tersirat (Implied Addressing) Contoh : RAL 13
Instruksi Beracuan Memori (MRI)(1) Dibagi menjadi 2 1. Operand berupa alamat Format Dasar : Opcode, address Contoh : LDA 2000H 2. Operand berupa nilai konstanta (byte) Format Dasar : Opcode, byte Contoh : MVI A, 49H 14
Instruksi Beracuan Memori (MRI) (2) Format instruksi : LDA address STA address ; LDA adalah opcodenya ; STA adalah opcodenya Contoh Initial : AddrMem 2000H = AH LDA 2000H ; A CON(2000H) STA 7FFFH ; AddrMem 7FFFH CON(A) Final : AddrMem 2000H = AH Accumulator (A) = AH AddMem 7FFFH = AH 15
Instruksi Beracuan Memori (MRI) (3) Format instruksi : MVI A, byte MVI B, byte MVI C, byte ; MVI reg, adalah opcode ; byte = nilai dalam ukuran byte Contoh Initial : Register A = AH; B = 00H; C = 00H MVI A, 00H ; CON(A) 00H MVI B, AH ; CON(B) AH MVI C, AH Final : A = 00H B = C = AH ; CON(C) AH 16
Instruksi Beracuan Memori (MRI) (4) Instruction Opcode T States Flags Addressing Bytes Arti LDA address 3AH 13 None Direct 3 A M address STA address 32H 13 None Direct 3 M address A MVI A, byte 3EH 7 None Immediate 2 A byte MVI B, byte 06H 7 None Immediate 2 B byte MVI C, byte 0EH 7 None Immediate 2 C byte 17
Instruksi Beracuan Memori (MRI) (5) Contoh : Tunjukkan mnemonik dari program untuk, Mengisi akumulator dengan 49H, Mengisi register B dengan 4AH Mengisi register C dengan 4BH, dan kemudian Menyimpan isi Accumulator ke lokasi memori 625H. Terjemahkan ke dalam bahasa mesin mulailah pada alamat 2000H! Jawab : MVI A,49H MVI B,4AH MVI C,4BH STA 625H HLT ; A 49H ; B 4AH ; C 4BH ; CON(625H) 49H ; Selesai 1
Instruksi Beracuan Memori (MRI) (6) Alamat Isi Mnemonik 2000H 3EH MVI A, 49H ; Big Endian 2001H 49H 2002H 06H MVI B, 4AH 2003H 4AH 2004H 0EH MVI C, 4BH 2005H 4BH 2006H 32H STA 625H 2007H 5H 200H 62H 2009H 76H HLT 19
Instruksi Register (1) Instruction Opcode T Flags Addressing Bytes Arti ADD B 0H 4 S, Z Register 1 ; A A + B ADD C 1H 4 S, Z Register 1 ; A A + C DCR A 3DH 4 S, Z Register 1 ; A A 1 DCR B 05H 4 S, Z Register 1 ; B B 1 DCR C 0DH 4 S, Z Register 1 ; C C 1 INR A 3CH 4 S, Z Register 1 ; A A + 1 INR B 04H 4 S, Z Register 1 ; B B + 1 INR C 0CH 4 S, Z Register 1 ; C C + 1 20
Instruksi Register (2) Instruction Opcode T Flags Addressing Bytes Arti MOV A, B 7H 4 None Register 1 ; A B MOV A, C 79H 4 None Register 1 ; A C MOV B, A 47H 4 None Register 1 ; B A MOV B, C 41H 4 None Register 1 ; B C MOV C, A 4FH 4 None Register 1 ; C A MOV C, B 4H 4 None Register 1 ; C B SUB B 90H 4 S, Z Register 1 ; A A B SUB C 91H 4 S, Z Register 1 ; A A - C 21
Instruksi Register (3) Contoh, Buatlah Program SAP-2 untuk penjumlahan angka-angka desimal 23 dan 45. Jawabannya disimpan pada lokasi memori 5600H. Kemudian jawaban itu ditambahkan dengan 1 dan disimpan di register C! Jawab MVI A,17H MVI B,2DH ADD B STA 5600H INR A MOV C, A HLT ; A 23 d ; B 45 d ; A 23 d + 45 d ; M 5600H 6 d ; A 6 d + 1 d ; C 69 d ; Selesai 22
Instruksi Jump dan CALL (1) SAP-2 memiliki 3 macam instruksi Jump (lompat) Jump tanpa syarat Jump bersyarat Subrutin Instruksi ini mengubah urutan program, program akan berpindah ke bagian program lainnya 23
Instruksi Jump dan CALL (2) Instruction Opcode T Flags Addressing Bytes Arti CALL address CDH 1 None Immediate 3 PC address JM address FAH 10/7 None Immediate 3 PC address jika S = 1 JMP address C3H 10 None Immediate 3 PC address JNZ address C2H 10/7 None Immediate 3 PC address jika Z = 0 JZ address CAH 10/7 None Immediate 3 PC address jika Z = 1 RET C9H 10 None Implied 1 PC Return address 24
Instruksi Jump (1) Misal, Ilustrasi address Instruksi 2005H 2000H JMP 3000H 2005H JMP 3000H ; PC 2006H 2006H 00H ; PC 2007H 2007H 30H ; PC 3000H 200H MOV A, B 3000H MOV B, C ; PC 3001H... 25
Instruksi Jump bersyarat Misal, address Instruksi 2005H JM 3000H Ilustrasi 2000H 2005H JM 3000H ; PC 2006H 2006H 2007H 200H MOV A, B 3000H MOV B, C ; PC 3001H... ; PC 2007H ; PC 200H (7T) atau 3000H (10T) 26
Instruksi Jump (2) Contoh, Lakukan assembli-tangan pada program dibawah ini dimulai dari lokasi memori 2000H : MVI C,03H DCR C JZ 2009H JMP 2002H HLT 27
Instruksi Jump (3) Jawab Alamat Isi Simbolik 2000H 0EH MVI C,03H 2001H 03H 2002H 0DH DCR C 2003H CAH JZ 2009H 2004H 09H 2005H 20H 2006H C3H JMP 2002H 2007H 02H 200H 20H 2009H 76H HLT 2
Contoh (1) ProMul : Tuliskan program perkalian bilangan desimal 12 dengan Jawab : Label Instruksi Komentar MVI A,00H ; Kosongkan isi A MVI B, 0CH ; Isikan desimal 12 ke B MVI C,0H ; Isikan desimal ke C REPEAT : ADD B ; Tambahkan A dengan B DCR C ; Kurangkan isi C JZ JMP END REPEAT ; Periksa apakah C = 0 ; Ulangi END : HLT ; Berhenti 29
Contoh (2) Tuliskan Program ProMul dengan menggunakan JNZ kemudian lakukan assembli-tangan! Alamat Isi 2000H 3EH 2001H 00H 2002H 06H 2003H 0CH 2004H 0EH 2005H 0H 2006H 0H 2007H 0DH 200H C2H 2009H 06H 200AH 20H 200BH 76H Instruksi MVI A,00H MVI B, 0CH MVI C,0H ADD B DCR C JNZ 2006H Label Instruksi MVI A,00H MVI B, 0CH MVI C,0H LOOP : ADD B DCR C JNZ LOOP END: HLT 30
Contoh (3) Buatlah program untuk menjumlahkan angka desimal : 19 + 21 + 5 * 5 dengan menggunakan Instruksi JUMP! Alamat Mnemonik Komentar 2000H MVI A,13H ; A 19 2002H MVI B,15H ; B 21 2004H ADD B ; A A + B 2005H MVI B,0H ; B 2007H MVI C,05H ; C 5 2009H ADD B ; A A + B 200AH DCR C ; C C - 1 200BH JZ 2011H ; Lompat jika Z = 1 200EH JMP 2009H ; Lompat 2011H MVI B,3AH ; B 5 2013H SUB B ; A A - B 2014H HLT ; Selesai 31
Contoh (4) Alamat Isi Mnemonik 2000H 3EH MVI A,13H 2001H 13H 2002H 06H MVI B,15H 2003H 15H 2004H 0H ADD B 2005H 06H MVI B,0H 2006H 0H 2007H 0EH MVI C,05H 200H 05H 2009H 0H ADD B 200AH 0DH DCR C 200BH CAH JZ 2011H 200CH 11H 200DH 20H 200EH C3H JMP 2009H 200FH 09H 2010H 20H 2011H 06H MVI B,3AH 2012H 3AH 2013H 90H SUB B 2014H 76H HLT 32
CALL & RET (1) Subroutine yang disimpan di suatu lokasi memori tertentu untuk digunakan oleh program lain. Analogi sebuah fungsi dalam PASCAL, yang dapat menghasilkan keluaran. RET digunakan pada setiap akhir sebuah subroutine, artinya memberitahu komputer untuk kembali ke program semula. Isi Program Counter akan disimpan secara otomatis dalam 2 lokasi memori yaitu FFFEH & FFFFH pada saat instruksi CALL dieksekusi. Setelah selesai dilaksanakan instruksi RET akan memberitahu komputer agar isi pada 2 lokasi memori FFFEH & FFFFH diisikan ke Program Counter untuk mengembalikan kendali ke program semula. 33
CALL & RET (2) Buatlah Program pada contoh 6 dengan menggunakan CALL dan RET pada proses perkalian 5 * jika Lokasi CALL berada di F006H! Alamat Mnemonik Alamat Mnemonik 2000H MVI A,13H F006H ADD B 2002H MVI B,15H 2004H ADD B 2005H MVI B,0H 2007H MVI C,05H 2009H CALL F006H 200CH MVI B,3AH 200EH SUB B 200FH HLT F007H DCR C F00H JZ F006H F00BH RET 34
CALL & RET (3) Alamat Isi F006H 0H F007H 0DH F00H CAH F009H 06H F00AH F0H F00BH C9H Simbolik ADD B DCR C JZ F006H RET Alamat Isi 2000H 3EH 2001H 13H 2002H 06H 2003H 15H 2004H 0H 2005H 06H 2006H 0H 2007H 0EH 200H 05H 2009H CD 200AH 06H 200BH F0H 200CH 06H 200DH 3AH 200EH 90H 200FH 76H Simbolik MVI A,13H MVI B,15H ADD B MVI B,0H MVI C,05H CALL F006H MVI B,3AH SUB B HLT 35
Referensi: Malvino, Albert Paul; Jerald A. Brown. 1999. Digital Computer Electronics.3rd edition. McGraw-Hill. New York 36