Mikro 3
Mikro 3
A. Tujuan Percobaan 1. Mengetahui dan mengerti bagaimana operasi penambahan dan pengurangan dilaksanakan dalam suatu mikrokomputer 2. Membiasakan pemakai dengan teknik-teknik membuat program. B. Teori Dasar Dalam percobaan ini kita hanya membicarakan penambahan dan pengurangan bilangan bulat (integer) biner tak bertanda. Untuk suatu bilangan biner AND bit, cakupannya adalah (0 - > 2 -1) misalnya, jika N = 8, cakupannya adalah (0 -> 255); jika N = 16, cakupannya adalah (0 -> 65535). Jika cakupan bilangan-bilangan itu dinyatakan dalam digitdigit Heksadesimal, cakupannya adalah (0 -> FFH) dan (0-> FFFFH) dan seterusnya. Jika operasi penjumlahan lebih besar dari pada nilai maksimum yang dapat dinyatakan dalam N bit, dihasilkan Carry, carry flag di-set. Dalam operasi pengurangan, jika bilangan pengurangan lebih besar daripada bilangan yang dikurangi, dihasilkan peminjaman (borrow) dan carry flag di-Set, berarti hasilnya tidak benar. CONTOH I : Penambahan dan pengurangan bit tunggal Penambahan : 7 FH + ADH = 12 CH 01111111 7FH +)10101101 ADH ---------------------------100101100 12 CH carry <CY>
pengurangan ADH-7FH=2 EH 10101101 -) 01111111 000101110 Pinjaman (borrow) Hasil benar (CY = 0)
CONTOH II penambahan dan pengurangan tiga byte Penambahan : 6A7CBDH + 4B65ACH = B5E269H 6A 4B + 0 0 B5 CARRY 85 -69 0 1B 1 1 CARRY 43 -AC 1 97 1 96 1 CARRY 72 -BF 1 B3 0 - (borrow) B3 pinjaman Pengurangan : 854372H 69ACBFH = 7C 65 + 1 0 E2 + BD AC 0 CARRY
0 69
0 1A pinjaman
pinjaman
Pinjaman dari byte berorde paling tinggi adalah 0, jadi hasilnya adalah benar. Dalam pengurangan lebih dari satu byte (Multibyte), benar atau tidaknya hasil yang didapat tergantung dari pinjaman pada Laporan Praktek Percobaan 3
Susunan Data Yang Tersimpan Dalam Memory: Penyimpanan data multi byte dalam memory adalah sebagai berikut : byte yang berorde paling rendah disimpan dalam address yang paling rendah, byte yang berorde paling tinggi disimpan dalam address yang paling tinggi pula. Addres data multi byte biasanya dinyatakan dengan address yang l paling rendah. Misalnya, bilangan 7325 H disimpan dalam memory address A sebagai berikut : Address A 25 A+1
73
Jika address awal dari empat buah bilangan tiga byte yang tersimpan di memory adalah A, data dan address addressnya sebagai berikut : Address A A+3 A+6 A+9 A + 12 56 7C 98 43 69 AD BC O1 25 78 95 43 21 96
Merancang Program-Program Penambahan Dan Pengurangan: Data yang dipakai pada operasi penambahan / pengurangan disimpan dalam memory menurut metode diatas. Address awal dari bilangan yang ditambah/dikurangi disimpan dalam register indeks IX. Address awal dari bilangan penambahan / pengurang disimpan dalam Laporan Praktek Percobaan 3
register index IY .Data tentang jumlah biyte disimpan dalam register B .Pertama tama, nolkan carry flag dan isikan bilangan yang akan ditambah/dikurangi keaccumulator. Kemudian, pergunakan instruksi intruksi mode adressing indeks ADC<SBC> untuk operasi operasi pengurangan /penambahan .Hasilnya disimpan dalam address asal bilangan yang ditambah / dikurangi. Akhirnya, periksa carry flag untuk menentukan apakah hasilnya benar.satu-satunya perbedaan antara program penambahan/ pengurangan adalah bahwa instruksi ADC digunakan untuk operasi penambahan, sedangkan instruksi SBC digunakan untuk operasi pengurangan. Berikut ini adalah flowchart dan program operasi-operasi penambahan dan pengurangan yang dapat dipakai sebagai pembandingan. Penambahan Pengurangan
Kita dapat melihat transfer data (pada operasi penambahan) pada diagram blok berikut ini:
IX + 1 IY + 1
*** CONTOH PROGRAM GMS I *** PENAMBAHAN 3 BYTE (BILANGAN BULAT TAK BERTANDA) INPUT : ADDRESS BILANGAN YANG DITAMBAH PADA IX, ADDRESS BILANGAN YANG DITAMBAH PADA IY, OUTPUT : JUMLAH PADA ADDRESS BILANGAN YANG DITAMBAH ADD3 ADDLP : : XOR LD LD ADC LD INC INC DJNZ RET Teknik Program : Dari contoh-contoh diatas (contoh 1 dan 2), kita dapat melihat bahwa operasi penambahan/pengurangan multi byte dapat dilakukan A B,3 A,(IX) A,(IY) (IX),A IX IY ADDLP ; NOL KAN CARRY FLAG ; JUMLAH BYTE PADA B
dengan cara mengulangi operasi penambahan/ pengurangan byte tunggal, yaitu dengan operasi loop penambahan/pengurangan byte tunggal. Pada program diatas, register B dipakai sebagai penghitung loop. Jika jumlah byte adalah 4, bilangan tersebut (4) pertama-tama harus diisikan ke B. setiap selesai satu operasi loop, register B kikurangi dengan 1 operasi loop berakhir jika B sama dengan 0. instruksi DJNZ dipakai untuk operasi loncat bersyarat. Bila B sama dengan 0, program tidak lagi melaksanakan operasi jump. Karena insstruksi instruksi ADC dan SBC digunakan pada program, CY diperlukan pada tiap tiap operasi penmabahan / pengurangan. Kaerna itu, sebelum operasi penambahan / pengurangan byte pertama flag carry harus 0 (instruksi XOR A). register register indeks IX dan IY digunakan sebagai penunjuk address. Dengan penambah IX dan IY dengan satu, CPU dapat mengambil data dari memory diaddress yang dimaksud. Masukkan program penambahan diatas ke GMS-1 dan simpanlah pada tape magnetic (tape audio biasa) Gantilah instruksi terakhir RET dengan RST 38H. Masukkan datanya pada memory. Adderss awal bilangan yang ditambah adalah 1900H dan adderss awal bilangan penambah adalah 1A00H. Jalankan program dan catat hasilnya pada table berikut ini. Yang ditambah 793865 H 009543 H 954717 H Penambah ABCDEF H AB1236 H 003390 H Jawab Pemeriksaan
Gantilah instruksi ADC dengan instruksi SBC. Tentukan address awal bilangan yang dikurangi address awal bilangan pengurang. Jalankan operasi-operasi pengurangan dibawah ini dan catat hasil yang didapat.
Jawab
Pemeriksaan
Nyatakan data pada dua table diatas sebagai data 5 byte. Arahlah penghitung byte-nya dengan nilai yang sesuai dan jalankan program penambahan / pengurngannya. Tulislah sebuah program untuk menambah data 7 byte yang ada memory address 1A00H-1A06H dengan data 7 byte pada memory address 1900H-1906H, kemudian hasil yang didapat dikurangi dengan data 7 byte pada memory address 1940H-1946H. Hasil akhirnya disimpan pada memory dengan address awal 1900H. C. Alat dan Bahan Trainer Mikroprosessor Z-80 Adaptor D. Langkah Kerja 1. Input Program penambahan biner pada modul 2. a. Isi Register IX dengan data 1816 b. Isi Register IY dengan data 1819 3. Exsekusi program : Reset PC GO 4. Lihat hasilnya pada adderss 1816, 1817, 1818 5. Tentukan carry dengan cara Reg .PNC Lihat nilai pada carry Ganti data address 1816, 1817, 1818 dengan data yang ditambah pada table address 1819, 181A, 181B dengan data penambah pada table, kemudian eksekusi program. E. Hasil Percobaan 1 Buah 1 Buah
Penjumlahan Bilangan Biner Yang ditambah 793865 H 009543 H 954717 H Penambah ABCDEF H AB1236 H 003390 H Jawab Cy = 1 Cy = 0 Cy = 0 Pemeriksaan 240745 ABA779 957AA7
Pengurangan Bilangan Biner Yang dikurangi 683147 H 5935AB H 049677 H Pengurang 336700 H 5877FF H F65B79 H Jawab Cy = 0 Cy = 1 Cy = 1 Pemeriksaan 35CA46 01BEAB 0E3AFE
18 02 18 03 18 04 18 05 18 06 18 07 18 16 18 17 18 18 18 19 18 1A 18 1B IX IY
Penjumlahan
I 79 38 65 AB CE DE
II 00 95 43 AB 12 36
III 95 47 17 00 33 90
ADDRESS
18 00 18 01 18 02 18 03 18 04 18 05 18 06 18 07 18 16 18 17 18 18 18 19 18 1A 18 1B IX IY
AF 06 03 DD 7E 00 FD 9E
Pengurangan
I II 68 59 31 35 47 AB 33 58 67 77 00 FF
III 04 96 77 F6 5B 79
Pada address 1800, AF merupakan OP code dari instruksi XOR A yang berfungsi untuk mengosogkan carry flag
Pada address 2801 dan 1802 digunakan untuk menyimpan instruksi LD B, 3 yang artinya muatilah register B dengan data 3 LD A, (IX) merupakan instruksi untuk menstransfer data ada pada register index (IX) ke register A dengan OP code 793865 ADC A, (IY) merupakan instruksi untuk menstrasfer isi dari register indeks (IY) ke dalam register A dan kemudian dijumlahkan bersama carrynya. LD (IX), A merupakan instruksi untuk menstrasfer data yang berada pada register A ke hasil operasi penambahan / pengurangan ke dalam alamat memory pada register indeks INC (IX) merupakan instruksi untuk menambah data pada register IX dengan 1 DJNZ (Decrease and Jump if Nor Zero) merupakan instruksi untuk mengurangi 1 dari data pada register B sampai data menjadi 0 Pada address 1812 sampai 1815 diisi dengan data FF, di address 1816 isi dari register H ditransfer ke register D (LD D, H). Pada adderss 1817 register A diisi dengan data 38, pada address 1818 register D diisikan data 65 Pada address 1819 XOR B merupakan exekusi operasi Logic pada register B
G. Kesimpulan a. Operasi penambahan/pengurangan multi byte dapat dilakukan dengan cara mengulang operasi penambahan/pengurangan byte tunggal b. Penyimpanan data multi byte dalam memory yaitu byte yang berorde paling rendah disimpan dalam address yang paling rendah
dan byte yang berorde paling tinggi disimpan dalam address yang paling tinggi pula. c. Pada operasi penjumlahan digunakan instruksi ADC dengan terlebih dahulu menolkan register awal. Bilangan penjumlah dan yang akan dijumlah disimpan pada register indeks yaitu IX dan IY, sedangakan untuk memeriksa hasil penjumlahan ditekan (ResetPC-GO) dan untuk melihat carrynya dilihat pada register flog. d. Pada operasi pengurangan digunakan instruksi SBC dengan menyimpan bilangan yang dikurangkan dan pengurangnya pada register indeks IX dan IY.