TEORI, IMPLEMENTASI & APLIKASI [ ] :: SAP - 2 :: TEORI, IMPLEMENTASI & APLIKASI
SAP - 2< Evolusi ke Komputer Modern > Arsitektur lebih lengkap dibanding SAP-1 Instruksi lebih banyak termasuk jump (Lompat) Menggunakan Register dua Arah LOAD CLK Enable BUS
ARSITEKTUR SAP-2 PC < Program Counter > Memiliki saluran 16-bit Encoder Hexa In Port 1 In Port 2 PC MAR A ALU TEMP B C 8 16 Bus W Memori MDR IR CON Out Port 3 Out Port 4 Hexa Disp Flag 2 Serial In Ack 7 Ready Serial Out ARSITEKTUR SAP-2 PC < Program Counter > Memiliki saluran 16-bit PC=0000 0000 0000 0000 Sampai : PC=1111 1111 1111 1111 Atau PC=0000 H – FFFF H Instruksi selalu mulai : 0000 H 0000 H Instruksi pertama 0001 H Instruksi kedua 0002 H Instruksi ketiga dst
ARSITEKTUR SAP-2 MAR & Memori Menerima alamat 16-bit Encoder Hexa In Port 1 In Port 2 PC MAR A ALU TEMP B C 8 16 Bus W Memori MDR IR CON Out Port 3 Out Port 4 Hexa Disp Flag 2 Serial In Ack 7 Ready Serial Out ARSITEKTUR SAP-2 MAR & Memori Menerima alamat 16-bit Keluaran 2-state ke memori ROM 2KB berisi program Monitor Inisialisasi saat dinyalakan 0000 H ROM 07FF H 0800 H RAM FFFF H
ARSITEKTUR SAP-2 MDR<Memory Data Register> Encoder Hexa In Port 1 In Port 2 PC MAR A ALU TEMP B C 8 16 Bus W Memori MDR IR CON Out Port 3 Out Port 4 Hexa Disp Flag 2 Serial In Ack 7 Ready Serial Out ARSITEKTUR SAP-2 MDR<Memory Data Register> Keluaran MDR aktifkan RAM. Menerima data dari bus, sblm operasi menulis ke RAM Mengirim data ke bus, stlh operasi membaca dari RAM
ARSITEKTUR SAP-2 Register Instruksi < IR > IR 8-bit Encoder Hexa In Port 1 In Port 2 PC MAR A ALU TEMP B C 8 16 Bus W Memori MDR IR CON Out Port 3 Out Port 4 Hexa Disp Flag 2 Serial In Ack 7 Ready Serial Out ARSITEKTUR SAP-2 Register Instruksi < IR > IR 8-bit mampu menampung 2^8 = 256 Instruksi. SAP-2 hanya 42 Instruksi Kompatibel dengan 8080 / 8085
ARSITEKTUR SAP-2 Pengendali-Pengurut Encoder Hexa In Port 1 In Port 2 PC MAR A ALU TEMP B C 8 16 Bus W Memori MDR IR CON Out Port 3 Out Port 4 Hexa Disp Flag 2 Serial In Ack 7 Ready Serial Out ARSITEKTUR SAP-2 Pengendali-Pengurut Menghasilkan kata kendali atau mikroinstruksi SAP-2 lebih banyak Instruksi, pengendalilebih rumit. Kata CON lebih panjang Akumulator Register 2 Arah Keluaran 3-state ke bus W Terus menerus menggerakkan ALU
ARSITEKTUR SAP-2 ALU & FLAG Encoder Hexa In Port 1 In Port 2 PC MAR A ALU TEMP B C 8 16 Bus W Memori MDR IR CON Out Port 3 Out Port 4 Hexa Disp Flag 2 Serial In Ack 7 Ready Serial Out ARSITEKTUR SAP-2 ALU & FLAG SAP-2 mengandung operasi Aritmatik & Logika FLAG Untuk mengawasi / mengikuti perubahan keadaan selama beroperasi. Sign Flag : aktif bila A berubah menjadi negatif Zero Flag : aktif bila A menjadi nol.
ARSITEKTUR SAP-2 Register TMP, B dan C TMP : pengganti register B Encoder Hexa In Port 1 In Port 2 PC MAR A ALU TEMP B C 8 16 Bus W Memori MDR IR CON Out Port 3 Out Port 4 Hexa Disp Flag 2 Serial In Ack 7 Ready Serial Out ARSITEKTUR SAP-2 Register TMP, B dan C TMP : pengganti register B Register B dan C berfungsi sama untuk menyimpan data sementara selama operasi dilakukan. Input Port SAP-2 mempunyai 2 Input Port. Encoder keyboard Hexa ke Input Port 1 Serial data ke Input Port 2 line 7
ARSITEKTUR SAP-2 Output Port Mempunyai 2 Output Port Encoder Hexa In Port 1 In Port 2 PC MAR A ALU TEMP B C 8 16 Bus W Memori MDR IR CON Out Port 3 Out Port 4 Hexa Disp Flag 2 Serial In Ack 7 Ready Serial Out ARSITEKTUR SAP-2 Output Port Mempunyai 2 Output Port Output Port 3 ke Peraga Hexa Output Port 4 ke Serial Out line 0
Perangkat Instruksi < Instruction Set > Operasi dasar yang dapat dilakukan dengan perintah / program. LDA < Load Data Accumulator > Isi Akumulator dengan isi dari lokasi memori Contoh : LDA 2000H ; /* Isikan Akumulator dengan isi alamat 2000H */ STA < Store Accumulator > Simpan Isi Akumulator ke lokasi memori yang ditunjuk Contoh : STA 7FFFH ; /* Simpan Isi Akumulator ke alamat 7FFFH */ Operan Operasi
Perangkat Instruksi < Instruction Set > MVI < Move immediate > Pindahkan Segera Mengisi Register dengan bilangan yang mengikutinya Contoh : MVI A, 37H ; /* Isikan Akumulator dengan bilangan 37H */ Jika eksekusi perintah ini, maka : A =0011 0111 Format Instruksi : MVI A, byte MVI B, byte MVI C, byte
INSTRUKSI OP CODE INSTRUKSI OP CODE ADD B ADD C ANA B ANA C ANI byte CALL alamat CMA DCR A DCR B DCR C HLT IN byte INR A INR B INR C JM alamat JMP alamat JNZ alamat JZ alamat LDA alamat MOV A,B MOV A,C 80 81 A0 A1 E6 CD 2F 3D 05 0D 76 DB 3C 04 0C FA C3 C2 CA 3A 78 79 MOV B,A MOV B,C MOV C,A MOV C,B MVI A, byte MVI B, byte MVI C, byte NOP ORA B ORA C ORI byte OUT byte RAL RAR RET STA alamat SUB B SUB C XRA B XRA C XRI byte 47 41 4F 48 3E 06 0E 00 B0 B1 F6 D3 17 1F C9 32 90 91 A8 A9 EE
Perangkat Instruksi < Instruction Set > Contoh : Bahasa Mesin 8080/8085 Alamat Isi Mnemonik Jumlah 2000H 3EH MVI A, 49H 2-byte 2001H 49H 2002H 06H MVI B, 4AH 2-byte 2003H 4AH 2004H 0EH MVI C, 4BH 2-byte 2005H 4BH 2005H 32H STA 6285H 3-byte 2006H 85H 2007H 62H 2009H 76H HLT 1-byte
Instruksi-Instruksi Register MRI=Memory Reference Instruction Lebih lambat karena memerlukan lebih dari 1 operasi akses memori. Sedangkan Instruksi Register memindahkan data dari Register ke Register yang lain MOV Memindahkan data dari satu register ke register yang lain. Contoh : MOV A, B. /* Pindahkan data dalam Register B ke Akumulator */
Instruksi-Instruksi Register ADD Tambahkan isi Register dengan Isi Akumulator Contoh : ADD B Jika : A = 04 H dan B = 02 H, maka eksekusi ADD B menghasilkan : A = 06 H SUB Kurangkan isi Register dengan Isi Akumulator Jika : C = 03 H, maka eksekusi SUB C diperoleh A = 03 H
Instruksi-Instruksi Register INR Penambahan isi Register dengan satu angka Contoh : INR B Jika : B = 09 H, maka eksekusi INR B menghasilkan : B = 0A H DCR Pengurangan isi Register dengan satu angka Jika : C = 03 H, maka eksekusi DCR C diperoleh C = 02 H
CONTOH : Tambahkan bilangan 25 dan 55, simpan hasilnya pada lokasi memori 5000 H dan tambahkan hasilnya dengan 1, serta simpan di register B. MVI A, 19 H ; Isikan Accumulator dengan 25 MVI B, 37 H ; Isikan Register B dengan 55 ADD B ; Tambahkan Register B dengan Acc STA 5000H ; Simpan Acc pada alamat 5000H INR A ; Tambahkan Isi Acc dengan 1 MOV B,A ; Simpan Isi Acc pada Register B HLT ; Berhenti
INSTRUKSI JUMP DAN CALL : JMP Mengambil Instruksi berikutnya pada Alamat yang ditunjuk Selalu diikuti Alamat yang diisikan ke Pencacah Program Tanpa syarat JM Jump if Minus < Lompat ke Alamat yang ditunjuk Jika A bernilai Minus > SAP-2 mempunyai Zero Flag (Z) dan Sign Flag (S) S = 0 jika A >= 0 dan S = 1 jika A < 0 Lompat dengan Syarat jika S = 1
INSTRUKSI JUMP DAN CALL : JZ Jump if Zero < lompat ke Alamat yang ditunjuk Jika A bernilai Nol > Z = 1 jika A = 0 dan Z = 0 jika A~= 0 Lompat dengan Syarat Z = 1 JNZ Jump if Not Zero < Lompat ke Alamat yang ditunjuk Jika A tidak sama dengan Nol > Lompat dengan Syarat jika Z = 0
ILUSTRASI : ILUSTRASI : Tanpa Syarat Jika S = 1 2000 H ----------- 2005 H JMP 3000 H 2006 H ----------- 3000 H ----------- ILUSTRASI : 2000 H ----------- ----------- 2005 H JM 3000 H 2006 H ----------- 3000 H ----------- Tanpa Syarat Jika S = 1
ILUSTRASI : ILUSTRASI : Jika Z = 1 Jika Z = 0 2000 H ----------- 2005 H JZ 3000 H 2006 H ----------- 3000 H ----------- ILUSTRASI : 2000 H ----------- ----------- 2005 H JNZ 3000 H 2006 H ----------- 3000 H ----------- Jika Z = 1 Jika Z = 0
ILUSTRASI : ILUSTRASI : Alamat Isi Simbol 2000 H ----------- 2005 H CALL 5000 H 2006 H ----------- 5000 H ----------- RET ILUSTRASI : Alamat Isi Simbol 2000 H 0E H MVI C,03 H 2001 H 03 H 2002 H 0D H DCR C 2003 H CA H JZ 2009 H 2004 H 09 H 2005 H 20 H 2006 H C3 H JMP 2002H 2007 H 02 H 2008 H 20 H 2009 H 76 H HLT
LOOP DAN LABEL : LOOP < Simpal > LABEL Bagian dari Program yang diulang-ulang Lihat Ilustrasi LABEL Tanda bantu yang digunakan untuk instruksi lompat dan panggil Diakhiri dengan : < titik dua > Terdiri dari 1 – 6 karakter, yang pertama selalau huruf.
ILUSTRASI : Label Mnemonik Komentar MVI A,00 H ; Kosongkan Akumulator MVI B,0C H ; Isikan desimal 12 ke B MVI C,08 H ; Preset C dengan 8 REPEAT : ADD B ; Tambahkan dengan 12 DCR C ; Kurangi isi C dengan 1 JZ DONE ; Lompat ke DONE JMP REPEAT; Ulangi / Lompat DONE : HLT ; Berhenti
INSTRUKSI LOGIKA : CMA ANA Complement the Accumulator < Komplemenkan isi Akumulator > Melakukan komplemen-1 pada Isi Akumulator ANA AND-kan Isi Akumulator dengan isi Register tertentu Contoh : ANA B ; AND-kan Isi Akumulator dengan isi Register B Jika : A = 1110 1010 B = 1000 0101 Maka Eksekusi dari ANA B menghasilkan : A = 1000 0000
INSTRUKSI LOGIKA : ORA XRA OR –kan Isi Akumulator dengan Isi Register tertentu Jika : A = 1110 1010 B = 1000 0101 ; maka Eksekusi ORA B menghasilkan : A = 1110 1111 XRA XOR-kan Isi Akumulator dengan isi Register tertentu Contoh : XRA B ; AND-kan Isi Akumulator dengan isi Register B B = 1000 0101 ; Maka Eksekusi XRA B menghasilkan : A = 0110 1111
INSTRUKSI LOGIKA : ANI ORI XRI AND –kan segera Isi Akumulator dengan Byte tertentu Jika : A = 1110 1010, Maka Eksekusi ANI C7 H menghasilkan : = 1100 0111 < C7 H > A = 1100 0010 ORI OR-kan Segera Isi Akumulator dengan Byte tertentu Eksekusi ORI C7 H menghasilkan : A = 1100 0111 XRI XOR-kan Segera Isi Akumulator dengan Byte Tertentu
INSTRUKSI LAINNYA : NOP IN OUT No Operation ( tidak ada oprasi ) Untuk pengaturan waktu atau Waktu tunda Jika 1 NOP = 4 T, maka 100 NOP menunggu 400 T IN Instruksi untuk memberi masukan Memindahkan data dari Input Port ke Akumulator Contoh : IN 02 H ; Memindahkan data dari Port 2 ke Akumulator OUT Memindahkan Isi Akumulator ke Output Port Contoh : OUT 03 H ; Pindahkan Isi Akumulator ke Output Port 3
INSTRUKSI LAINNYA : RAL RAR Rotate the Accumulator Left < Putar akumulator ke kiri > RAR Rotate the Accumulator Right < Putar akumulator ke kanan > Jika A = 0100 1001, maka Eksekusi : RAL A = 1001 0010 RAR A = 1010 0100 MSB LSB MSB LSB
ILUSTRASI : Label Mnemonik Waktu MVI A,00 H ; 1 x 7 x T MVI B,0C H ; 1 x 7 x T MVI C,08 H ; 1 x 7 x T REPEAT : ADD B ; 4 x 8 x T DCR C ; 4 x 8 x T JZ DONE ; 7 x 7 x T (tanpa Lompatan) ; 10 x 1 x T (dengan Lompatan) JMP REPEAT; 10 x 7 x T (dengan Lompatan) DONE : HLT ; 5 x 1 x T
::. Terima Kasih .::