Instruksi Dasar Aritmatika dan OperasiLogika Menggunakan modul Upro 1
5/21/2015
Add Comment
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.
-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 :
- 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