LAPORAN PRAKTIKUM Instruksi Aritmatika dan Operasi Logika
Praktek Mikroprosesor 1 Job Sheet 2
Nama NIM Kelas Kelompok Anggota Kelompok
: : : : :
DENNY SETIAWAN 3201311036 VB 1 Denny Setiawan Ranto susilo Isah Andi Rintis Sanjaya
LABORATORIUM TEKNIK ELEKTRONIKA JURUSAN TEKNIK ELEKTRO POLITEKNIK NEGERI PONTIANAK 2015 Instruksi Aritmatika dan Operasi Logika
I . Tujuan Tujuan dari praktikan yang dilakukan, diharapkan mahasiswa dapat : -
Memahami fungsi dari flag register pada mikroprosesor Z-80
-
Memahami instruksi-instruksi aritmatika seperti penjumlahan, pengurangan dan lain sebagainya.
-
Memahami instruksi-instruksi operasi logika seperti AND, XOR, RR, RL dan lain sebagainya
II.
a. Tugas Pendahuluan 1. Flag Register pada Z-80 berisi Carry flag, Negative flag, Parity/Overflow flag, Auxiliary carry flag, Zero flag dan Sign flag. Sebutkan fungsi dari masing-masing bagian flag register tersebut ? Jawab: Carry Flag (CF) akan meng 'set' (menjadi logika '1', tinggi), apabila terjadi 'bawaan' (carry) atau 'pinjaman' (borrow) dalam suatu hasil proses perhitungan (arithmetic) pada Most Significant Bit (MSB, bit paling berbobot). Jika hal-hal itu tidak terjadi maka CF akan 'reset' (logika '0', rendah). Kalau dalam suatu instruksi, terjadi hasil yang menunjukkan bahwa sistem pengecekan paritas adalah 'paritas genap' (even parity), maka PF akan 'set'. Bila yang terjadi 'paritas ganjil' (odd parity), PF akan me'reset'. Overflow Flag, berguna untuk menunjukkan bahwa telah terjadi 'overflow' yaitu jumlah bit sebagai hasil suatu proses perhitungan telah melampaui batas yang diperkenankan. Mikroprosesor 8088 mempunyai kemampuan untuk bekerja dalam mode 'langkah tunggal' (single-step), yaitu semua instruksi dilaksanakan dengan cara satu demi satu. Mode ini dimungkinkan dengan jalan membuat TF (Trap Flag) masuk ke logika '1' atau 'set'. Bagi seorang programmer, mode ini akan sangat berguna dalam pekerjaan 'debugging'. Auxiliary Carry Flag dipakai untuk menunjukkan hasil perhitungan pada byte rendah dari suatu bilangan binary 16 bit. Jika terjadi 'bawaan' atau 'pinjaman' dari nibble bawah (low nibble) ke nibble atas (high nibble), .AF akan 'set', sebaliknya AF akan di 'reset'. Zero Flag akan 'set' kalaudalam suatu proses perhitungan di hasilkan nilai nol. Bila hasilnya bukan nol, ZF akan 'reset'. Sign Flag adalah bit yang akan mendeteksi suatu bilangan sebagai bilangan positif atau bilangan negatif. Hal ini dilakukan dengan melihat MSB dari bilangan
tersebut. Apabila MSB menunjukkan nilai '1' (set), maka bilangan itu adalah negatif, jika '0' (reset), bilangan positif. 2. Apa saja yang termasuk instruksi aritmatika, sebutkan masing-masing kegunaannya Jawab: Instruksi ADD digunakan untukmelakukan operasi penjumlahan 8 bit dan 16 bit. Instruksi SUB digunakan hanya untuk melakukan operasi pengurangan 8 bit. Instruksi ADC digunakan untuk menambahkan isi register A dengan data 8 bit yang berada pada suatu register atau data immediate atau data suatu lokasi memori dan mengikut sertakan bit Carry (C) yang ada di register F. Instruksi SBC digunakan untuk mengurangkan isi register A dengan data 8 bit yang berada pada suatu register atau data immediate atau data suatu lokasi memori dengan mengikutsertakan bit carry flag. 3. Apa saja yang termasuk instruksi operasi logika, sebutkan masing-masing kegunaannya ? Jawab: 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. Simbol operasi Logika adalah sbb :
4. Anggap memori yang berada dilokasi 40h berisi data operand 6Ah. Tentukan hasil dari memori yang beralamat di 41h, bila source program seperti dibawah ini : LD A, (40H) CPL LD (41H), A RST 08H Jawab: Hasil dari memori yang beralamat di 41h adalah 64h 5. Sample Problem : (0040) = 38 (0041) = 2B
(0042) = 63? Source Program : LD A, (40H) LD B, A LD A, (41H) ADD A, B LD (42H), A RST 08H Jawab: (0042) = 63 III.
Alat dan Bahan Training Kit MTS-80A
IV.
Prosedur Percobaan Percobaan 1 1. Buatlah program dibawah ini dengan mengkonversi terlebih dahulu kode mnemonic kedalam kode machine. LD SP, 9000H AND A LD B, 09H LD A, 0FFH INC A ADC A, B XOR A ADD A, B ADD A, 88H SCF SBC A, 33H SUB 25H RST 08H 2.
Cek listing program saudara dengan menekan tombol reset. Kemudian tekan tombol step, begitu seterusnya sampai dengan instruksi RST 08H.
3.
Isilah tabel 1 sebagai prediksi isi akumulator dan keadaan status flag register pada masing-masing instruksi yang ada.
4.
isi register A dengan 00 dan register B dengan 00 dengan menekan tombol RESET, REG, 0, 0, 0, F, F. Selanjutnya tekan lagi tombol REG, 1, 0, 0, F, F.
5.
Isi tabel 2 dari hasil percobaan yang telah saudara lakukan dengan melakukan eksekusi program step by step dengan memanfaatkan fungsi tombol STEP dan amati perubahan register dengan menekan tombol REG (menampilkan posisi Program Counter, Stack Pointer dan keadaan flag register pada saat ini) kemudan tekan tombol INC (mengecek isi register).
V.
Tabel Data Tabel 1 Alamat
Menemonic
8000 8003 8004 8006 8008 8009 800A 800B 800C 800E 8011 8013 8015
LD SP,9000 AND A LDB,09H LD A, 0FFH INC A ADC A,B XOR A ADD A,B ADD A,88H SCF SBC A,33H SUB 25H RST 08H
Prediksi Flag Z H V 1 1 1
Register A B 00 00
S 1
Register A B 00 00
Hasil Eksekusi Program Flag S Z H V 1 1 1 1
N 1
C 1
N 1
C 1
Tabel 2 Alamat
Menemonic
8000 8003 8004 8006 8008 8009 800A 800B 800C 800E 8011 8013
LD SP,9000 AND A LD B,09H LD A, 0FFH INC A ADC A,B XOR A ADD A,B ADD A,88H SCF SBC A,33H SUB 25H
8015
RST 08H
IV. Analisa Data 1. Buat tabel konversi dari kode mnemonic ke code machine sesuai listing program yang ada pada percobaan 1 ? 2. Jelaskan maksud dari listing program yang ada pada percobaan 1 dan buatkan flowchartnya ? 3. Jelaskan proses perubahan flag register dari masing-masing instruksi ?