Minggu, 27 November 2011

MIKROPROSESSOR D3

PENAMBAHAN DAN PENGURANGAN BNER
A.     Tujuan
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 AND = 8, cakupannya adalah (0 -> 255); jika AND = 16, cakupannya adalah (0 -> 65535). Jika cakupan bilangan-bilangan itu dinyatakan dalam digit-digit Heksadesimal, cakupannya adalah (0 -> FFH) dan (0 -> FFFFH) dan seterusnya. Jika operasi penjumlahan lebih besar dari pada nilai maksimum yang dapat dinyatakan dalam AND 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   1  :           Penambahan dan pengurangan bit tunggal
                           Penambahan : 7 FH + ADH = 12 CH
                                                01111111 à 7FH
                                         +)    10101101 ­­à ADH
                                         ----------------------------
                                              100101100 à 12 CH
                          
                                           carry  

                   penggurangan  7FH – ADH        pengurangan ADH-7FH=2 EH
                           01111111                                         10101101
                       -)  10101101                                   -)  01111111
                         111010010                                       000101110
                  Pinjaman                                                 Pinjaman
                  (borrow)                                                   (borrow)
                  Hasil tidak benar (CY = 1)                    Hasil benar (CY = 0)

               CONTOH  2. penambahan dan  pengurangan tiga byte
                Penambahan : 6A7CBDH  +  4B65ACH  = B5E269H
                           6A                    7C                  BD
0
 
1
 
0
 
                           4B                   65                    AC
0
 
0
 
0
 
                            +                     +                      +         ← CARRY
                                   B5                 E2                  69
                              ↑
                      CARRY          CARRY          CARRY
              Pengurangan : 854372H – 69ACBFH =
                           85                     43                   72
                         -69                   -AC                 -BF
0
 
1
 
1
 
                      0  1B                 1 97                 1 B3
1
 
1
 
0
 
                            -                      -                       -          ← Pinjaman (borrow)
                                  1A                 96                    B3
                            ↑
          pinjaman       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 byte yang berorde  paling tinggi. Jika pinjaman = 1, hasilnya tidak benar.
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 :
73
 
25
 
Address A               ← byte berorde rendah
        A + 1                ← byte berorde tinggi
Jika address awal dari empat buah bilangan tiga byte yang tersimpan di memory adalah A, data dan address –addressnya sebagai berikut :






Address
A
56





7C

987C56H



98




A + 3
43





69

AD6943H



AD




A + 6
BC





O1

2501BCH



25




A + 9
78





95

439578H



43




A + 12
21





96

…….







Merancang Program-Program Penambahan Dan Pengurangan:
Data yang dipakai pada operasi penambahan/ pengurangan disimpan dalam memory menurut metode diatas. Add­ress awal dari bilangan yang ditambah/dikurangi disimpan dalam register indeks IX. Address awal dari bilangan penambahan / pengurang disimpan dalam 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 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.
  1. *** CONTOH PROGRAM GMS – 1 ***
  2. PENAMBAHAN 3 BYTE (BILANGAN BULAT TAK BERTANDA)
  3. INTPUT          : ADDRESS BILANGAN YANG DITAMBAH PADA IX,
                                ADDRESS BILANGAN YANG DITAMBAH PADA IY, 
  1. OUTPUT        : JUMLAH PADA ADDRESS BILANGAN YANG DITAMBAH
  2. ADD3             : XOR             A                     ; NOL – KAN CARRY FLAG
  LD                 B,3                  ; JUMLAH BYTE PADA B
  1. ADDLP          : LD                 A,(IX)
  ADC             A,(IY)
  LD                 (IX),A
  INC               IX
  INC               IY
  DJNZ                        ADDLP
  RET
Teknik Program :
Dari contoh-contoh diatas (contoh 1 dan 2), kita dapat melihat bahwa operasi penambahan/pengurangan multi byte dapat dilakukan 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. (Sumber teori: Jobsheet Praktek Mikroprosesor).
Operasi penambahan untuk bilangan biner bukan desimal, dimana setiap digit desimal dianalogikan dengan 8 bit bilangan biner yang ditulis dalam bentuk 2 angka heksa. Misalnya kita ingin menjumlahkan 3F442A dengan 4DF3.
Simpanan

1

Bilangan Pertama
3F
44
2A
Bilangan Kedua

4D
F3
Bilangan Ketiga
3F
92
1D

Jika teknik diatas diperluas menjadi bentuk yang lebih umum, yaitu penjumlah N-byte bilangan biner, maka bentuk tabelnya akan seperti berikut :
Byte ke-
N
….
3
2
1
Carry
1
….

1

Bilangan Pertama
E3

3F
44
2A
Byte ke-
N
….
3
2
1
Carry
1
….

1

Bilangan Kedua

….
02
4D
F3
Bilangan Ketiga
E4
….
41
92
1D

Tidak ada komentar:

Posting Komentar