APLIKASI DASAR INSTRUKSI ARITHMETIK
DAN INSTRUKSI
OPERASI LOGIK
A.
Tujuan
Percobaan
1.
Membiasakan para
pemakai dengan instruksi arithmetik dan instruksi operasi logik.
2.
Menjelaskan
tentang mode addressing memory.
3.
Menjelaskan
tentang status flag.
B.
Dasar
Teori
Sebuah
program diperlukan saat mikrokomputer digunakan untuk melaksanakan sederetan
operasi (menghitung, memasukkan dan mengeluarkan data) seperti halnya dalam
proses pengontrolan alat-alat. Program tersebut tersusun dari sejumlah perintah
yang berurutan yang dibaca dan dieksekusi. Namun sebuah mikroprosesor hanya
mampu membaca bahasa mesin saja. Di dalam program seperti BASIC, FORTRAN, yang
dikenal sebagai bahasa tingkat tinggi, sudah ada bagian yang berfungsi
menterjemahkannya ke bahasa mesin. Sehingga pemakai lebih mudah memahami bahasa
BASIC/Fortrain. Sebelum dieksekusi program tersebut akan diterjemahkan dahulu
ke bahasa mesin, sehingga prosesnya menjadi lebih lambat (beberapa ratus kali
lebih lambat). Karena pemakaian bahasa tingkat tinggi akan memperlambat suatu
proses, karena itulah dipilih bahasa mesin untuk mengontrol mesin. Panjang word
suatu perintah diset dalam satuan 8 bit(=1byte). Bergantung kepada jumlah bit
yang digunakan, ada empat jenis perintah; perintah 1-byte, perintah 2-byte,
3–byte dan perintah 4-byte (Hikmat, 2012).
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 (Putu Sudira, 2013).
Instruksi
arithmetik 8 bit dan operasi-operasi logik dalam CPU Z80 dilaksanakan pada
register A (Acumulator). 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 ditransfer antara memory dan register A,
address memory dapat ditunjukkan oleh register-register HL, IX, atau IY.
Dibawah ini terdapat instruksi arithmetik dan instruksi operasi logik beserta artinya (Nur Amril, 2011).
(1) ADD A ;
|
data pada register A ditambahkan pada
register A sendiri, artinya data diduakalikan atau digeser ke kiri 1 bit
|
(2) ADC B ;
|
Isi register B bersama dengan Carry
Flag ditambahkan pada register A.
|
(3) SUB C ;
|
Data pada register A dikurangi dengan
data pada register C
|
(4) SBC )HL) ;
|
Isi register A dikurangi dengan isi
memory yang addresnya ditunjuk oleh HL, dikurangi lagi dengan carry flag.
|
(5) AND D ;
|
Operasi AND logik antara register D
dan register A
|
(6) OR
OFH ;
|
Operasi OR logik antara data OFH dan register A.
|
(7) XOR A ;
|
Operasi OR-exclusive antara register A
dengan dirinya sendiri. (karena register A sama dengan register A, maka
hasilya pasti nol).
|
(8) INC H ;
|
Menambah isi register H dengan 1
(increment).
|
(9) INC (IX) ;
|
Menambah isi memory pada address yang
ditunjuk oleh IX dengan 1.
|
(10) DEC C ;
|
Mengurangi isi register C dengan 1
(decrement)
|
(11)DEC(1Y+3) ;
|
Hasil penjumlahan dari isi register 1Y
dan 3 diapakai sebagai penunjuk address pada memmory. Isi memory pada address
yang ditunjuk oleh IY+3 dikurangi dengan 1
|
Mode addressing
data :
1.
Addressing Register
2.
Addressing Register Tidak Langsung
3.
Addressing Langsung
Status
Flag (Modul Praktikum, 2017) :
1.
Carry Flag
2.
Overflow/ Parity Flag
3.
Zero (nol) Flag
4.
Sign (Tanda) Flag
C.
Alat
Dan Bahan
1.
Trainer Mikroprosesor 1
buah
2.
Adaptor 1
buah
3.
Modul Mikroprosesor 1 buah
D.
Kode
Program
1.
Percobaan I
Address
Memory
|
Opcode
& Operand
|
Bahasa
Mesin
|
|
1800H
(address
awal)
|
ORG
|
1800H
|
|
LD
|
A,
E
|
7B
|
|
ADD
|
A,
D
|
82
|
|
LD
|
L,
A
|
6F
|
|
LD
|
A,
0
|
3E00
|
|
ADC
|
A,
0
|
CF00
|
|
LD
|
H,
A
|
67
|
|
RST
|
38H
|
FF
|
Nilai
Preset
|
Hasil
Pelaksanaan Program
|
|||||
Register
|
Register
|
Flag
|
||||
D
|
E
|
HL
|
Sign
|
Zero
|
P/V
|
Carry
|
5AH
|
A6H
|
0100
|
0
|
0
|
0
|
0
|
46H
|
77H
|
00BD
|
0
|
1
|
0
|
0
|
2.
Percobaan II
Address
Memory
|
Opcode
& Operand
|
Bahasa
Mesin
|
||
1800H
(address
awal)
|
ORG
|
1800H
|
||
LD
|
A,
(1A00H)
|
3A001A
|
||
ADD
|
A,
E
|
83
|
||
LD
|
L,
A
|
6F
|
||
LD
|
A,
(1A01H)
|
3A011A
|
||
ADC
|
A,
D
|
8A
|
||
LD
|
H,
A
|
67
|
||
RST
|
38H
|
FF
|
Nilai
Preset
|
Hasil
Pelaksanaan Program
|
||||||
Memory
|
Register
|
Register
|
Flag
|
||||
(1A01H)
|
(1A00H)
|
DE
|
HL
|
Sign
|
Zero
|
P/V
|
Carry
|
02
|
01
|
4677
|
4878
|
0
|
0
|
0
|
0
|
E.
Pembahasan
Praktikum
ini bertujuan agar praktikan dapat menjelaaskan tentang mode addressing memory,
status flag dan menyusun data untuk register-register CPU dan bagian memori.
1. Percobaan
I
Pada percobaan pertama bertujuan
untuk menjumlahkan isi register D dan isi register E bersama-sama. Hasilnya
disimpan pada pasangan register HL. Sebelum memasukkan digit biner ke
mikroprosesor dari tabel 1, bahasa asembli yang terdapat di tabel tersebut
harus diubah ke bahasa mesin supaya lebih memudahkan menjalankan suatu perintah.
Sehingga bahasa mesin yang diperoleh dapat dicantumkan seperti dalam tabel.
Setelah
diketahui bahasa mesin, masukkan bahasa mesin ke mikroprosesor dengan alamat
awal 1800H. Kemudian masukkan nilai di Reg E, kemudian masukkan nilai Reg A
yang sesuai dengan Reg E. Sedangkan untuk Reg D diisi dengan nilai sesuai
dengan keinginan, kemudian tekan Reg A kemudian isi kembali di Reg A dengan Reg
D yang ditambahkan Reg E. Tekan tombol Reg L sehingga nilai yang keluar sama
dengan Reg A. Kemudian tekan reg A dengan nol. Karena nilai yang dimasukkan
pada reg-reg tersebut tidak menimbulkan carry maka nilai yang terdapat di reg A
tersebut dimasukkan pada reg H. Setelah proses pemasukan data telah selesai,
praktikan dapat mengecek alamat maupun register yang muncul, untuk memudahkan
pengecekan setiap alamat maka tekan tombol PC dan Step. Maka data yang keluar
dapat dicek satu-persatu. Sedangkan jika ingin langsung melihat hasil akhir
setelah proses pemasukkan data tekan tombol PC dan GO.
Setelah bahasa
mesin tersebut telah dimasukkan pada mikroprosesor, maka nilai 5AH dimasukkan
pada register D dan A6H pada register E sehingga ketika menekan tombol register
HL nilai yang muncul 0100. Hal ini membuktikan bahwa data yang dimasukkan
mengalami kesinkronan dengan program yang dijalankan. Selanjutnya dengan
menekan tombol PNC dapat diketahui P/V dan Carry bernilai nol. Kemudian menekan
tombol SZH dapat diketahui Sign dan Zero bernilai nol.
Jika dihitung
secara manual, untuk register HL=0100 diketahui nilai dari PNC=0000FL yang
merupakan nilai biner akhir dan nilai dari SZH=0000FH yang merupakan nilai
biner awal. Kemudian nilai biner yang didapat digabungkan menjadi 00000000.
Dari angka biner tersebut dapat diketahui bahwa menurut format register yang
terbentuk oleh flag angka pertama dari susunan biner tersebut adalah Sign=0,
angka kedua adalah Zero=0, angka keenam adalah P/V=0 dan angka kedelapan adalah
Carry=0. Dari hasil tersebut dapat diketahui bahwa perhitungan secara praktikum
dan manual hasilnya sama.
2. Percobaan
II
Pada praktikum ini bertujuan untuk
menjumlahkan data 16 bit di memori pada alamat 1A00H- 1A01H pada data 16 bit
yang ada pada pasangan register DE dan hasilnya disimpan pada pasangan register
HL. Sebelum memasukkan alamat ke mikroprofesor, hal yang harus diperhatikan
ialah bahasa asembli. Bahasa asembly di sini harus diubah ke bahasa mesin
terlebih dahulu yaitu sesuai yang tercantum pada tabel kode program.
Kemudian masukkan alamat awal 1800
pada mikroprofesor, kemudian tambahkan bahasa mesin pada tabel ke dalam
mikroprofesor. Setelah sampai di FF tekan tombol ADDRESS kemudian masukkan
1A01H dan tekan tombol DATA kemudian masukkan nilai sesuai dengan keinginan.
Setelah itu masukkan kembali alamat 1A00H dan tekan tombol DATA kemudian
masukkan nilai sesuai dengan keinginan. Setelah itu, tekan tombol reg DE dan
isi dengan nilai yang diinginkan. Kemudian tekan tombol reg HL untuk melihat
hasil akhir. Kemudian jika ingin melihat hasil akhirnya saja maka bisa langsung
dengan menekan tombol PC dan GO. Kemudian tekan tombol reg H L. Pada praktikum
kali dapat dijelaskan bahwa data yang berada pada alamat 1A00H jika ditambahkan
dengan data pada register E maka hasilnya akan muncul pada register L.
Sedangkan data berada pada alamat 1A01H jika ditambahkan dengan data yang berada
pada register D hasilnya akan muncul pada register H. Berdasarkan percobaan,
didapatkan data sesuai pada tabel kode program.
Jika dihitung
secara manual untuk register DE=4677 dan HL=4878, diketahui nilai dari PNC=1000FL
yang merupakan nilai biner akhir dan nilai dari SZH=0000FH yang merupakan nilai
biner awal. Kemudian nilai biner yang didapat digabungkan menjadi 00001000.
Dari angka biner tersebut dapat diketahui bahwa menurut format register yang
terbentuk oleh flag angka pertama dari susunan biner tersebut adalah Sign=0,
angka kedua adalah Zero=0, angka keenam adalah P/V=0 dan angka kedelapan adalah
Carry=0. Dari hasil tersebut dapat diketahui bahwa perhitungan secara praktikum
dan manual hasilnya sama.
F.
Kesimpulan
1.
Pada percobaan I data yang ada pada register DE dijumlahkan dengan
data yang ada pada register E dan hasilnya dilihat pada register HL
2.
untuk melihat sign dan zero yaitu dengan menekan reg
SZH sedangkan untuk P/V dan Carrynya
tekan reg PNC .
3.
Untuk memulai mengessekusi sebuah program yang sudah
dimasukkan harus menekan Reset, PC, GO.
G.
Daftar
Pustaka
Hikmat. 2012. Aplikasi Mikroprosesor (Bahasa). Bandung : Universitas Pendidikan Indonesia
Sudira,
Putu. 2013. Sistem Mikroprosesor dan
Mikrokontroler. Yogyakarta :
Universitas Negeri Yogyakarta
Amril, Nur. 2011. Mikroprosesor. Makassar : Universitas Negeri Makassar
Tim Penyusun. 2017. Modul Praktikum Sistem Mikroprosesor. Pontianak : Universitas Tanjungpura
No comments:
Post a Comment