Instruksi Dasar Aritmatika dan OperasiLogika Menggunakan modul Upro 1



Pandai Elektronika-- Kesempatan kali ini kita akan membahas tentang Instruksi Dasar Aritmatika dan Opersai Logika dengan modul uPro1 dan instructions set dari Z 80.  Instuksi aritmatika 8 bit dan operasi logika dalam CPU Z80 laksanakan pada register A  (accumulator). Register-register A,B,C,D,E,H,dan L dapat digunakan sebagai operand bersama-sama dengan register A pada instruksi-instruksi LD. Jika data yang ditransfer antara memori dan register A, alamat memori dapat ditujukan oleh register HL, IX, IY. Dibawah ini terdapat instruksi aritmatika dan instruksi operasi logika beserta artinya : 
-ADD A :   Data pada register A ditambahkaan pada regisster A sendiri, artinya data didua kalikan atau digeser kekiri satu bit.  
- ADC B :    Isi register B bersama dengan carry flag ditambahkan register. 
-SUB C :    Data pada register A dikurangi dengan data pada register C. 
-SBC (HL) : Isi register A dikurangi dengan isi memori yang alamatnya ditunjukkan oleh HL,dikurangi lagi dengan carry flag. 
-AND D     :  Operasi logika “AND” antara register D dan register A. 
-OR 0FH    :  Operasi logika “OR” antaara data 0FH dan register A. 
-XOR A  :  Operasi “OR-exusif” antaara register A dengan dirinya sendiri. 
- INC H       :  Menambah isi register H dengan 1.  
- INC(IX)    :  Menambah isi memori pada alamat yang ditunjuk oleh IX dengan 1. 
- DEC C      :  Mengurangi isi register C dengan 1. 
-Dec ( IY + 3 )       : Hasil penjumlahan isi register IY dan tiga dipakai sebagai penunjuk alamy pada memori. Isi memori pada alamat yang ditunjuk IY + 3 dikurangi dengan 1.
Mode pengalamatan lain dapat dilihat dari Z80 CPU technical manual :
  1. Pengalamatan RegisterSebagai contohnya : Pada instruksi ADC A,B ADC adalah Opcode yang menyatakan operasi macam apa yang akan dilaksanakan. Huruf A disebelah kanan menyatakan bahwa data yang ditambah ke register A. Huruf B disebelah kanan huruf A yang menyatakan bahwa data ditambah ke A diambil dari register B. 
     2. Pengalamatan register tak langsung
         Suatu register 16 bit digunakan untuk menyimpan alamat memori. Contohnya : Pada instruksi SBC A, ( HL ), bukan berarti bahwa register A dikurangi isi register HL. Tetapi CPU akan melihat data 16 bit yang terdapat pada HL sebagai alamat memori, lalu memeriksa data 8 bit yang tersimpan di memori pada alamat yang ditunjuk IX dengan data 8 bit yang tersimpan pada memori yang alamatnya ditunjukan dengan IX + 2. Hasilnya disimpan alam register A.
         LD         A,(IX)
         ADD      A,(IX + 2)

3          3. Pengalamatan langsung
        Dalam OR OFH, menjelaskan disebelah kanan opcode OR, terdapat bilangan OFH. Hal ini berarti bahwa bilangan OFH di OR kan secara logikandengan register A. Baik data OFH maupun juga programnya disimpan di memori. CPU mengambil data dengan melihat PC sebagai alamat tujuan. Contoh-contoh dibawah ini juga merupakan pengalamatan tidak langsung.
         LD         B,8
         ADD      A,44H
         SUB A,OA4H
Setelah suatu operasi logika atau aritmatika selesai dilaksanakan, hasilnya akan disimpan pada register A dan beberapa status flag akan terpengaruh. Beberapa contoh dari status flag :
  • Carry FlagCarry flag ini akan berada dalam keadaan set (1) bila dalam operasi penjumlahan yang tidak diberi tanda ( + atau - ) hasil yang didapat lebih besar dari operasi pengurangan, terjadi dalam keadaan set apabila dalam operasi pengurangan terjadi peminjaman.
  • Over flow atau Parity flag Pada operasi aritmatika komplemen kedua yang menggunakan data (+ atau -)maka flag ini sebagaiover flow fag. Over flow flog dalam Z 80 menyatakan bahwa bilangan komplemen kedua bertanda pada accumulator telah melebihi kapasitas maksimum (+127) atau kurang dari kapasitas minimum(-128).
  • Zero flagJika register A sama dengan nol setelah operasi logika atau aitmatika, keadaan atau status ini akan dicatat didalam fli-flop yang disebut zero flag. Zero flag dapat digunakan sebagai sarat untuk instruksi-instruksi bercabang, juga sangat berguna dalam program “LOOP”.
  • Sign flag                                                                                                                                            Jika bit yang paling kiri (bit 7) dari register A adalah salah satu setelah operasi logika atau aritmatika, bilangan pada register A diinterprestasikan sebagai bilangan negative. Sign flag ini akan diset menjadi satu. Flag ini akan di abaikan bila programmer telah menunjuk datanya sebagai bilangan-bilangan tanpa ada.
  • Flag-flg lainFlag-flag lain yang dirancang untuk operasi aritmatika BCD tidaklah penting bagi programmer.     
Percobaan I :
Menuliskan program dalam bahasa assembly untuk menjumlahkan isi register D dan isi register E bersamaa-sama.hasilnya akan disimpaan pada pasangan register L. Masukan prograam ini pada uPro-1 dan kemudian jalankan.

- Penjumlahan dengan D = 54 H, dan E = A6 H dimana D + E = L, maksudnya L disini datanya disimpan pada register L.
Flow Chartnya :

Programnya berdasarkan instructions set dari Z-80 .
Programnya :
Mnemorik                              Opcode                                   Alamat
LD       D, 54                           16        54                                  1900
LD       E, A6                          1E        A6                                 1902
LD       A, D                            7A                                             1904
ADD   A, E                             83                                              1905
LD       L,A                              6F                                              1906
RST-38                                    FF                                              1907
Setelah program dijalankan dengan cara menekan tombol ADDR ketikan alamat awal yang digunakan pada program (1900) kemudian tekan tombol GO, maka didapatkan hasil :
REG HL = 18 FA dengan nilai REG L = FA
REG F    = A8     dengan binner 1 0 1 0 1 0 0 0.
Pengujian hasil REG L yang didapatkan secara teori dengan hasil REG L yang didapatkan secara praktek :
·         REG L dari pratikum = FA
·         REG L dari teori adalah FA sehingga dikatakan pratikum yang dilakukan berhasil.
                       
54H
A6 H + 
 F A
Tabel Hasil Pelaksanaan Program :

Nilai preset
Hasil pelaksanaan praktikum
Register
Register
Flag
D                    E
L
Sign
Zero
P/V
Carry
54H              A6H

FA

1

0

0

0



 - Penjumlahan dengan D = FE H, dan E = CE H dimana D + E = L, maksudnya L disini datanya disimpan pada register L.
Flowchartnya :

 



Programnya :
Mnemorik                              Opcode                                   Alamat
LD       D, FE                          16        FE                                 1900
LD       E, CE                          1E        CE                                 1902
LD       A, D                            7A                                             1904
ADD   A, E                             83                                              1905
LD       L,A                              6F                                              1906
RST-38                                    FF                                              1907

Setelah program dijalankan dengan cara menekan tombol ADDR ketikan alamat awal yang digunakan pada program (1900) kemudian tekan tombol GO, maka didapatkan hasil :
REG HL = 18 CC dengan nilai REG L = 99
REG F    = 99     dengan binner 1 0 0 1 1 0 0 1.
Pengujian hasil REG L yang didapatkan secara teori dengan hasil REG L yang didapatkan secara praktek :
·         REG L dari pratikum = CC
·         REG L dari teori adalah FA sehingga dikatakan pratikum yang dilakukan berhasil.
                       
FEH
CE H + 
 F A
Tabel Hasil Pelaksanaan Program :

Nilai preset
Hasil pelaksanaan praktikum
Register
Register
Flag
D                    E
L
Sign
Zero
P/V
Carry
FEH              CEH

CC

1

0

0

1


 Percobaan II :
Tulislah program untuk menjumlahkan data 16 bit di memori pada alamat 1A00H-1A01H dengan data 16 bit yang ada didalam pasangan register DE. Kemudian hasilnyaa akan tersimpan pada pasangan register HL.Masukan program pada uPro-1 dan jalankan.

Penjumlahan data 16 bit dengan alamat memori 1A00 = FF, 1A01 = 99 dengan alamat register D = 98, E = BC.

Jawaban :
Flowchart


Programnya :
Mnemorik                              Opcode                                   Alamat
LD       A, 99                           3E        99                                  1900
LD      (1A00),A                     32        00        1A                     1902
LD       E, BC                          1E        BC                                 1905
ADD   A, E                             83                                              1907
LD       L,A                              6F                                              1908
LD       A, FF                           3E        FF                                  1909
LD       (1A01) , A                   32        01        1A                     190B
LD       D, 98                           16        98                                  190E
ADC   A,D                             8A                                             1910
LD       H,A                             67                                              1911
RST-38                                    FF                                              1912
Setelah program dijalankan dengan cara menekan tombol ADDR ketikan alamat awal yang digunakan pada program (1900) kemudian tekan tombol GO, maka didapatkan hasil :
REG HL = 9855 H
REG F    = 99 H    dengan binner 1 0 0 1 1 0 0 1.
Pengujian hasil REG HL yang didapatkan secara teori dengan hasil REG HL yang didapatkan secara praktek :
·         REG  HL   dari pratikum = 9855 H
·         REG HL dari teori adalah 9855 H sehingga dikatakan pratikum yang dilakukan berhasil.
                   
FF99H
98BC H + 
9855 H

Maka didapatkan tabel program :
Nilai preset
Hasil pelaksanaan praktikum
Memori
(1A01) (1A00)
Register DE
Register HL
Flag
Sign
Zero
P/V
Carry
FF
99
98BC
9855
1
0
0
0









Penjumlahan data 16 bit dengan alamat memori 1A00 = AF, 1A01 = FC dengan alamat register D = 9C, E = EB

 Flow Chart :

Programnya :
Mnemorik                              Opcode                                   Alamat
LD       A, 99                           3E        FC                                 1900
LD      (1A00),A                     32        00        1A                     1902
LD       E, BC                          1E        EF                                 1905
ADD   A, E                             83                                              1907
LD       L,A                              6F                                              1908
LD       A, FF                           3E        AF                                 1909
LD       (1A01) , A                   32        01        1A                     190B
LD       D, 98                           16        EC                                 190E
ADC   A,D                             8A                                             1910
LD       H,A                             67                                              1911
RST-38                                    FF                                              1912
Setelah program dijalankan dengan cara menekan tombol ADDR ketikan alamat awal yang digunakan pada program (1900) kemudian tekan tombol GO, maka didapatkan hasil :
REG HL = 9CEB H
REG F    = 99 H    dengan binner 1 0 0 1 1 0 0 1.
Pengujian hasil REG HL yang didapatkan secara teori dengan hasil REG HL yang didapatkan secara praktek :
·         REG  HL   dari pratikum = 9CEB H
·         REG HL dari teori adalah 9CEB H sehingga dikatakan pratikum yang dilakukan berhasil.
                       
AFFCH
ECEFH + 
9CEB H

Maka didapatkan tabel program :

Nilai preset
Hasil pelaksanaan praktikum
Memori
(1A01) (1A00)
Register DE
Register HL
Flag
Sign
Zero
P/V
Carry
AF
FC
ECEF
9CEB
1
0
0
0
           

Penting !!! : 
          Untuk mengetahui hasil percobaan diatas kita harus mngetahui format register yang dibentuk oleh flag sebagai berikut :
S
Z



P/V

C
Sign           zero                                                        parity                         carry

Untuk mendapatkan sign,zero,parity,dan carry kita harus menjalankan program dan mencari dulu  register yang ada pada register HL ATAU L .Setelah mencari register tersebut baru kita dapat menentukannya.hasilnya yaitu dengan cara REG F dan jadikan nilai tersebut ke biner.
 Contoh REG F = 9A = 10001001
            1 = sign            0 = zero           
            1 = parity         0 = carry

        Dengan adanya flow chart akan memudahkan kita untuk menentukan program seperti Mnemoric, Opcode dan alamat penyimpanan data kita tersebut. Kita hanya biasa menyimpan alamat data pada memori RAM yaitu alamat 1800-1FFF.

         Disini Admin Tacampak sedikit memberi saran yaitu Dalam membuat opcode program telitilah dalam membaca instruction set dari modul Z80.
Memeriksa kembali instruksi-instruksi yang telah kita masukan kedalam modul sebelum di eksekusi, agar hasil pemograman yang kita dapat sesuai dengan teorinya.
Berhati-hati menggunakan alat jagan terlalu keras menekan keyboard pada modul Z80 agar tidak terjadi kerusakan. 

Demikianlah sedikit penjelasan tentang Instruksi Dasar Aritmatika dan Operasi Logika Menggunakan modul Upro 1 semoga bermanfaat bagi sobat tacampak semua. Silahkan like Fanspage TACAMPAK ELEKTRONIKA serta cantupkan saran dan kritik untuk kebaikan bersama.



















                                                                                                                                                           

0 Response to "Instruksi Dasar Aritmatika dan OperasiLogika Menggunakan modul Upro 1"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel