Minggu, 05 Mei 2013

Instruksi Aritmetika & Logika

INSTRUKSI ARITMETIKA DAN LOGIKA PADA MIKROPROSESOR Z-80

          Pada pertemuan yang keduapuluh untuk sesi sistem mikroprosesor kali ini, kita mencoba membahas mengenai instruksi aritmetika dan logika pada mikroprosesor Z-80, mudah-mudahan sobat blogger dapat memahaminya. Agar dapat memahaminya, sobat blogger harus membaca dan menyimak tulisan ini dengan penuh konsentrasi (boleh juga sih sambil dengarkan lagu heheheee...), kemudian dilanjutkan dengan melaksanakan praktikum sesuai dengan langkah-langkah dalam lembar kerja (jobsheet) yang telah disajikan. 
          Dalam mikroprosesor Zilog Z-80 CPU instruksi-instruksi aritmatika yang disediakan jumlahnya terbatas, pada instruksi penjumlahan (ADD dan ADC) dan pada pengurangan (SUB dan SBC) saja. Dengan demikian bukan berarti bahwa persoalan aritmetika lainnya seperti perkalian dan pembagian tidak dapat diselesaikan. Dengan menggabungkan beberapa instruksi yang tersedia dapat dibuat program subroutin untuk perkalian dan pembagian, mencari nilai kuadrat suatu bilangan, sortir data, pengurutan, dan sebagainya. Perlu diingat bahwa mikroprosesor melalukan operasi penjumlahan dan pengurangan dalam sistem komplemen berbasis dua sedangkan kita menggunakan sistem bilangan desimal hampir di segala bidang. Instruksi Decimal Addjust Accumulator (DAA) disediakan untuk memberikan faktor koreksi pada saat kita bekerja dalam sistem bilangan desimal dalam kode BCD.
          Instruksi CP,s disediakan untuk membandingkan isi akumulator dengan sebuah data tanpa merubah isi akumulator tersebut. Instruksi ini memberikan akibat pada perubahan register flag sebagai status pembandingannya. Status tersebut diantaranya adalah (S=Sign, Z=Zerro , H=Half Carry, dan C=Carry). Dalam melaksanakan instruksi pembandingan, mikroprosesor menggunakkan sistem bilangan komplemen dua.
          Pada sistem komplemen dua bilaangan terkecil adalah 8FH = 10000000B = -128 dan bilangan terbesar adalah 7F = 0111 1111 = +127.

1. Instruksi ADD dan SUB.
          Instruksi ADD digunakan untuk melakukan operasi penjumlahan 8 bit dan 16 bit. Ada 38 jenis perintah penjumlahan pada mikroprosesor Z-80 CPU.
          Pada operasi aritmetika 8 bit register A (akumulator) ditambahkan dengan isi sebuah register 8 bit atau data immediate 8 bit, atau data pada satu lokasi memori yang alamatnya dicatat oleh register HL, IX, atau IY.  Sedangkan pada operasi aritmetika 16 bit register HL, IX, dan IY berfungsi sebagai akumulator yang dapat ditambahkan dengan isi register BC, DE, HL, SP. Untuk lebih jelasnya perhatikan Tabel 1 berikut ini:
Tabel 1. Instruksi ADD
          Instruksi SUB digunakan hanya untuk melakukan operasi pengurangan 8 bit. Pada operasi SUB isi register A dikurangkan dengan salah satu isi register A, B, C, D, E, H, L, atau data immediate 8 bit. Disamping juga isi register A dapat dikurangi dengan data pada suatu lokasi memori yang alamatnya dicatat oleh register HL, IX, dan IY.
Tabel 2. Instruksi SUB
          Instruksi ADD dan SUB dapat mempengaruhi status Sign, Zerro, HalfCarry, Overflow, dan Carry pada Register Flag. Pada instruksi ADD flag N = 0 dan pada instruksi SUB flag N = 1. Dua keadaan ini digunakan untuk menyatakan fungsi flag C sebagai carry atau borrow.

2. Instruksi ADC (ADD With Carry) dan SBC (Sub With Carry)
          Instruksi ADC digunakan untuk menambahkan isi register A dengan data 8 bit yang berada pada suatu register atau data immediate atau data suatu memori dan mengikut sertakan bit Carry (C). Instruksi ADC juga digunakan untuk menambahkan isi register HL dengan data 16 bit yang berada pada register BC, DE, HL, dan SP dengan mengikut sertakan bit Carry Flag (C).
Tabel 3. Instruksi ADC

          Instruksi SBC digunakan untuk mengurangkan isi register A dengan data 8 bit yang berada pada suatu register atau data immediate atau data suatu memori dengan mengikutsertakan bit carry flag. Instruksi SBC juga digunakan untuk mengurangkan isi register HL dengan data 16 bit yang berada pada register BC, DE, HL, dan SP dengan mengikutsertakan bit Carry Flag (Cy). Hasil dari kedua bentuk pengurangan tersebut dicatat di Register A dan Register HL.
Tabel 4. Instruksi SBC

3.  Instruksi INC (Increment) dan DEC (Decrement)
         Instruksi INC digunakan untuk menambah isi suatu register atau memori dengan satu nilai. Instruksi ini sangat potensial digunakan untuk membuat counter cacah naik.
Tabel 5. Instruksi INC
          Instruksi DEC digunakan untuk mengurangi isi register atau data suatu memori dengan nilai 1.
Tabel 6. Instruksi DEC

4.  Instruksi Aritmetika Khusus
          Dalam operasi aritmetika disediakan beberapa instruksi khusus yaitu :
DAA mnemonic dari Decimal Adjust Accumulator
CPL mnemonic dari Complement Accumulator ( Komplemen 1)
NEG mnemonic dari Negate Accumulator (Komplemen 2).

a. Instruksi DAA
          Instruksi DAA digunakan untuk merubah isi register A ke bent uk BCD. Instruksi DAA digunakan untuk memberi faktor koreksi pada saat bekerja dengan bilangan desimal. DAA dalam melakukan koreksi bekerja sbb :
- Jika Bit b3, b2, b1, b0 > 9 atau ada Half Carry (H = 1) maka bit b3, b2, b1, b0 ditanbah dengan 0110 = 6.
- Jika Bit b7, b6, b5, b4 > 9 atau ada Carry (C = 1) maka bit b7, b6, b5, b4 ditanbah dengan 0110 = 6.
b.  Instruksi CPL ( Complement)
          Instruksi CPL digunakan untuk merubah isi akumulator menjadi bentuk komplemen 1 yaitu dengan menginverse semua bit yang ada di akumulator.
c.  Instruksi NEG (Negate)
          Instruksi BEG digunakan untuk merubah isi akumulator menjadi bentuk negatifnya yaitu dengan merubahnya menjadi nilai komplemen dua.

5. Instruksi CP (Compare)
          Digunakan untuk membandingkan isi akumulator dengan data immediate 8 bit atau isi salah satu register 8 bit atau isi/data suatu lokasi memori tanpa merubah isi akumulator. Instruksi CP  membangun keadaan pada status Flag pada Bit Sign, Zero, Over  Flow, Half Carry dan Carry pada Register Flag. Instruksi CP sangat baik digunakan untuk menguji sebuah data apakah data tersebut sama dengan suatu nilai tertentu atau lebih besar dan lebih kecil dari suatu nilai tertentu.
Tabel 7. Instruksi CP

6. Instruksi LOGIKA AND, OR, dan XOR
          Instruksi AND, OR, dan XOR digunakan untuk melakukan operasi logika isi dari akumulator terhadap data suatu register 8 bit atau data immediate, atau data suatu lokasi memori.
Tabel 8. Instruksi Logika
          Pola di atas berlaku juga pada operasi LOGIKA OR dan XOR. Simbol operasi Logika adalah sbb:
^  : untuk LOGIKA AND
V  : untuk LOGIKA OR
(+)   : untuk LOGIKA XOR


Lembar Kerja
Alat dan Bahan :
1. Trainer MPF-1...................................................................... 1 buah
2. Catu Daya  DC..................................................................... 1 buah

Kesehatan dan Keselamatan Kerja :
1. Janganlah menghubungkan Trainer MPF-1 dengan sumber AC!
2. Ikuti semua petunjuk yang ada dalam modul kerja!
3. Gunakanlah sumber DC 9 VDC!

Langkah Kerja :
Program Penjumlahan
1. Persiapkan alat dan bahan yang diperlukan!
2. Hubungkan  MPF-1 dengan sumber DC 9 V!
3. Ketikkan ke dalam MPF-1 program sebagai berikut!
4. Eksekusi program tersebut di atas dan periksa isi data register dan memori dengan mencatatkannya pada tabel berikut :
Data 1
Data 2
Data 1+ Data 2
[1900]
[1901]
[1902]
[1903]
[1904]
[1905]
[1906]
10
00
03
02



06
05
08
07



8F
9F
F5
AF



5. Program tersebut diatas adalah penjumlahan biner. Untuk membuat program tersebut bekerja sebagi program penjumlahan bilangan desimal, tambakan satu perintah koreksi DAA seperti tabel di bawah ini.
6. Eksekusi program tersebut di atas dan periksa isi data register dan memori dengan mencatatkannya pada tabel berikut :
Data 1
Data 2
Data 1+ Data 2
[1900]
[1901]
[1902]
[1903]
[1904]
[1905]
[1906]
10
20
30
40



15
25
50
70



40
15
25
55



2 komentar: