Model Hipotesis SAP-3 Abdillah, S.Si, MIT
Pendahuluan SAP-3 adalah sebuah mikrokomputer 8-bit yang kompatibel dengan mikroprosesor 8080 dan 8085. SAP-3 memiliki register CPU yang lebih banyak, sehingga program-program SAP-3 beroperasi lebih cepat daripada program-program SAP-2. Dalam bab ini dibahas tentang model pemrograman SAP-3 dan instruksi-instruksi yang digunakan oleh register-register SAP-3.
MODEL PEMROGRAMAN SAP-3 memiliki register CPU tambahan D, E, H dan L. Register-register ini dapat diisi dengan menggunakan instruksi MOV dan MVI. SAP-3 juga memiliki register F yang menyimpan bit-bit bendera. Terdapat juga register SP (stack pointer), register 16 bit yang mengendalikan suatu bagian memori yang dikenal sebagai tumpukan (stack).
Gambar Model Pemrograman PC B C SP D E F H L
Instruksi MOV dan MVI Instruksi MOV memiliki format: MOV reg1,reg2 Instruksi ini mengirimkan data dari register 2 ke register 1. Pada akhir eksekusi akan didapatkan reg1 = reg2. Instruksi MVI memiliki format: MVI reg1,byte contoh: eksekusi dari MVI D,0EH akan menghasilkan D = 0EH
Bendera Pindahan SAP-3 memperhitungkan pindahan dalam operasi penjumlah dan pengurang. Pindahan ini disimpan dalam sebuah flip-flop khusus yang disebut bendera pindahan (carry flag). Bendera ini ditandai dengan CY. Jika operasi menghasilkan pindahan akhir, CARRY akan menjadi tinggi dan CY juga menjadi tinggi untuk penjumlahan (ADD) dan CY menjadi rendah untuk pengurangan (SUB) .
Penjumlah dan Pengurang SAP-3
Instruksi Bendera Pindahan STC (set carry) adalah instruksi untuk menset bendera CY jika belum diset sebelumnya. CMS (complement the carry) adalah instruksi untuk mengkomplemenkan nilai CY. Untuk mereset bendera pindahan tanpa mengetahui statusnya, maka eksekusi dari STC CMC akan menjamin bahwa nilai akhir CY akan direset menjadi nol.
Instruksi-Instruksi Aritmetik (ADD) Instruksi ADD memiliki format: ADD reg Instruksi ini menjumlahkan isi register yang ditunjuk dengan isi akumulator. Hasil penjumlahan disimpan dalam akumulator dan keadaan bendera pindahan bergantung pada ada tidaknya pindahan. contoh: A = 1111 1111 dan E = 0000 0001 instruksi ADD E menghasilkan penjumlahan biner: 1111 1111 + 0000 0001 1 0000 0000 Pada akhir siklus instruksi: CY=1 dan A=0000 0000
Instruksi-Instruksi Aritmetik (ADC) Instruksi ADC (add with carry) memiliki format: ADC reg Instruksi ini menjumlahkan isi register yang ditunjuk beserta isi bendera pindahan dengan isi akumulator. Hasil penjumlahan disimpan dalam akumulator. contoh: A = 1000 0011, E = 0001 0010 dan CY = 1 instruksi ADC E menghasilkan penjumlahan biner: 1000 0011 0001 0010 + 1 1001 0110 Pada akhir siklus instruksi: CY=0 dan A=1001 0110
Instruksi-Instruksi Aritmetik (SUB) Instruksi SUB memiliki format: SUB reg Instruksi ini mengurangkan isi register yang ditunjuk dari isi akumulator dan hasil pengurangan disimpan dalam akumulator. Jika terjadi pinjaman, bendera CY akan diset, jika tidak ada pinjaman, bendera CY akan direset. contoh: A = 0000 1100, C = 0001 0010 instruksi SUB C menghasilkan pengurangan biner: 0000 1100 - 0001 0010 1 1111 1010 Pada akhir siklus instruksi: CY=1 dan A=1111 1010
Instruksi-Instruksi Aritmetik (SBB) Instruksi SBB (substract with borrow) memiliki format: SBB reg Instruksi ini mengurangkan isi register yang ditunjuk beserta isi bendera CY, dari isi akumulator. contoh: A = 1111 1111, E = 0000 0010 dan CY = 1 instruksi SBB E akan memulai operasinya dengan menggabungkan E dan CY untuk mendapatkan 0000 0011, dan selanjutnya menghasilkan pengurangan biner: 1111 1111 - 0000 0011 1111 1100 Pada akhir siklus instruksi: CY=0 dan A=1111 1100
Instruksi Penambahan Instruksi penambahan (increment) memiliki format: INR reg Instruksi ini menambah isi register yang ditunjuk, mempengaruhi bendera tanda S dan bendera nol Z, tapi tidak berpengaruh pada bendera pindahan CY. contoh: L = 1111 1111 dan S = 1, Z = 1, CY = 0 instruksi INR L akan menghasilkan L=0000 0000 S =0 Z = 1 CY = 0
Instruksi Pengurangan Instruksi pengurangan (decrement) memiliki format: DCR reg Instruksi ini menambah isi register yang ditunjuk, mempengaruhi bendera tanda S dan bendera nol Z, tapi tidak berpengaruh pada bendera pindahan CY. contoh: L = 0000 0000 dan S = 0, Z = 1, CY = 0 instruksi DCR L akan menghasilkan L=1111 1111 S = 1 Z = 0 CY = 0
Instruksi Putar Semuanya ke Kiri Instruksi putar semuanya ke kiri (rotate all to the left) memiliki format: RAL Instruksi ini memutar semua bit CY dan akumulator ke kiri. contoh: CY = 1 A = 0111 0100 instruksi RAL akan menghasilkan CY = 0 A = 1110 1001
Instruksi Putar Semuanya ke Kanan Instruksi putar semuanya ke kanan (rotate all to the right) memiliki format: RAR Instruksi ini memutar semua bit CY dan akumulator ke kanan. contoh: CY = 1 A = 0111 0100 instruksi RAL akan menghasilkan CY = 0 A = 1011 1010
Instruksi Putar ke Kiri dengan Pindahan Instruksi putar ke kiri dengan pindahan (rotate to the left without carry) memiliki format: RLC Instruksi ini memutar semua bit akumulator ke kiri tapi tidak memperlakukan bendera CY sebagai perluasan dari akumulator. contoh: CY = 1 A = 0111 0100 instruksi RLC akan menghasilkan CY = 0 A = 1110 1000
Instruksi Putar ke Kiri dengan Pindahan Instruksi putar ke kanan dengan pindahan (rotate to the right without carry) memiliki format: RRC Instruksi ini memutar semua bit akumulator ke kanan tapi tidak memperlakukan bendera CY sebagai perluasan dari akumulator. contoh: CY = 1 A = 0111 0100 instruksi RLC akan menghasilkan CY = 0 A = 0011 1010
Instruksi Logika Instruksi logika yang dimiliki SAP-3 hampir sama dengan yang terdapat dalam SAP-2. Instruksi logika yang baru adalah CMP, yang diberi format sbb: CMP reg Instruksi CMP membandingkan isi register yang ditunjuk dengan isi akumulator. Bendera nol menunjukkan hasil dari pembandingan menurut ketentuan: Z = 1 jika A = reg = 0 jika A ≠ reg
Instruksi Aritmetik dan Logika Segera Selain yang terdapat dalam SAP-2, SAP-3 memiliki instruksi-instruksi bersifat segera yang lain, yakni: ADI, ACI, SUI, SBI dan CPI. Masing-masing memiliki format seperti: ADI byte Instruksi ADI menjumlahkan byte di belakangnya dengan byte akumulator. ACI menjumlahkan byte di belakangnya beserta isi bendera CY dengan byte akumulator. SUI mengurangkan byte di belakangnya dari byte akumulator. SBI mengurangkan byte di belakangnya beserta isi bendera CY dari byte akumulator. CPI membandingkan byte yang tercantum dengan byte akumulator, jika sama bendera nol akan diset dan jika tidak sama bendera nol tetap dalam keadaan reset.