Anda di halaman 1dari 8

Mikroprosesor Ir.

Morlan Pardede, MT
Perkalian dan Pembagian Bilangan Biner

MODUL 3
PERKALIAN DAN PEMBAGAIAN BILANGAN BINER

A. TUJUAN
1. Membuat program perkalian dua bilangan biner
2. Membuat program pembagian bilangan biner
3. Membuat program perkalian Biner dengan sign-bit

B. Dasar Teori
1. Perkalian Biner
Perkalian bilangan dapat dilakukan dengan pegulangan menjumlahkan bilangan yang
dikali sebanyak pengali, menjumlahkan hasil kali bobot biner 1 dari pengali dengan bilangan
dikali. Sebagai contoh 6 x 10 maka bobot biner 1 pengali adalah 2 dan 8.

8 4 2 1 (Bobot)
10 = 1 0 1 0 2
12
48 +
60

Mengalikan bilangan dengan 2 dapat dilakukan dengan menggeser bilangan tersebut ke kiri
satu bit. Untuk mengalikan dengan 4 dilakukan dengan menggerser bilangan terssebut dua
kali, untuk mengali 8 dengan menggeser tiga kali. Untuk mengali dengan 10 dilakukan
dengan menjumlahkan hasil kali 8 dengan hasil kali 2.
Berikut ini merupakan program mengalikan isi register HL dengan 10.
Program 1. Program Kali 10.
Label: Mnemonic Komentar
Kali10: DAD H HL=HL x 2
MOV D,H Simpan hasil kali 2
MOV E,L
DAD H HL= HL dikali 4
DAD H HL=HL dikali 8
DAD D HL= HL dikali 10
RET

Perkalian yang umum dilakukan adalah perkalian biner yaitu dengan cara mengeser dan
menjumlahkan. Bilangan pengali digeser 1 bit ke kanan dimana jika bit b0 sebelumnya (bit

7-1 POLITEKNIK NEGERI MEDAN


Mikroprosesor Ir.Morlan Pardede, MT
Perkalian dan Pembagian Bilangan Biner

Cy) logika 1 maka hasil dijumlahkan dengan bilangan dikali. Selanjutnya bilangan dikali
digerser 1 bit ke kiri dengan bit b0=0 seperti ditunjukkan gambar berikut:

PERKALIAN

Clear Hasil Kali

Periksa Pengali

Ya
1001 (9) 00? Selesai
x 1101 (13) Tdk

1001 (9) Geser Pengali ke kanan


(bit b0 masuk ke bit Cy)
00000
100100 (36)
Tdk
Cy=1 ?
1001000 (72)

1110101 (117)
Hasil=Hasil+ bil.dikali

Geser Bil. Dikali ke kiri


(BIT b0=0)

Gambar Algoritma dan Fowchart Perkalian Biner


Untuk perkalian dua buah data 8-bit maka kemungkinan hasilnya lebih 8-bit, untuk itu
tempat hasilnya harus disediakan 16-bit. Berikut diberikan program perkalian biner dimana
bilangan dikali diberi pada register A, bilangan dikali pada register E. Karena hasil 16 bit
maka penjumlahan dilakukan dengan perintah DAD. Untuk itu register D harus 00. Proses
penggeseran ke kiri satu bit dilakukan dengan proses menjumlahkan bilangan tersebut
dengan bilangan tersebut. Untuk itu isi registerDE harus dipertukarkan dengan HL.
Program 2. Perkalian Biner
;59H x 0DH=0485H
ORG 8500H
LXI D,0059H ;Set bil Dikali
MVI A,0DH ;Set bil Pengali
LXI H,0000 ;Clear Hasil
ULANG: ORA A ;Periksa bil. Pengali dan Cy=0
JZ SELESAI ;Selesai jika pengali =0
RAR ;Geser bil Pengali ke kanan dgn b7=0

7-2 POLITEKNIK NEGERI MEDAN


Mikroprosesor Ir.Morlan Pardede, MT
Perkalian dan Pembagian Bilangan Biner

JNC LMPT ;Lompat jika b0=0


DAD D ;Hasil=hasil+pengali
LMPT: XCHG ;Pengali digeser ke kiri
DAD H ;dengan operasi jumlah
XCHG
JMP ULANG ;Ulangi
SELESAI: HLT

2. Perkalian Biner dengan Sign bit


Pada penerapan perkalian tanda bilangan sangat mempengaruhi hasil apakah positip atau
negatip. Jika bilangan pengali dan dikali sama tandanya akan menghasilkan bilangan positip
dan jika berbeda tandanya hasilnya akan negatip. Berikut ini diberikan algoritma perkalian
dengan tanda dimana jika bilangan pengali maupun bilangan dikali negatip harus terlebih
dahulu diubah ke bilangan positip dengan cara mengkomplement ke-2 bilangan tersebut. Jika
hasil perkalian adalah negatip maka hasil tersebut dikomplement ke-2 untuk mendapatkan
bilangan positipnya. Berikut ini diberikan flowchart untuk perkalian biner dengan tanda.
Perkalian dgnTanda

Simpan Tanda hasil kali

Periksa Bil. Dikali

Bil. Dikali Ya
Negatipkan Bil.Dikali
negatip
?
Tdk

Periksa Bil.Pengali

Ya
Pengali
Negatipkan Pengali
Negatip
?
Tdk

Kalikan

Periksa Tanda Hasil

Hasil Kali
Ya
Negatip? Negatipkan Hasil

Tdk

Selesai

Gambar Diagram alir Perkalian Dengan Tanda

7-3 POLITEKNIK NEGERI MEDAN


Mikroprosesor Ir.Morlan Pardede, MT
Perkalian dan Pembagian Bilangan Biner

Tanda bilangan terdapat pada bit b7 dimana jika logika 1 berarti negatip dan jika logika 0
berarti positip. Untuk mendapatkan tanda hasil dapat dilakukan dengan melogik EX-OR
pengali dengan dikali dan memeriksa bit-7 dari hasil. Jika bit b7 logika 1 berarti negatip.
Pengecekan sign bit ini dapat dilakukan dengan perintah JP (Jump if Positip) atau JM (Jump
if minus). Berikut ini diberikan program perkalian biner isi register A dengan isi register E
dengan tanda dan hasilnya terdapat pada register HL.
Program 3. Perkalian dengan tanda
;Dalam BCD: 100 x-05 =-500
;64H x FBH=FE0CH
ORG 8100H
MVI A, 64H ; Set bil. Dikali 100
MVI E, 0FBH ; Set bil. Pengali 05
LXI SP,8200H
PUSH PSW ;Amankan pengali
XRA E ; Ambil tanda hasil kali
MOV B,A ;Simpan tanda hasil kali
MOV A,E ;Periksa tanda bil dikali.
ORA A ; dengan operasi OR
JP POSITIP1 ;Lompat jika positip
CMA ; Jika negatip komplement ke-2
INR A ;bil dikali
MOV E,A ;Simpan bil.dikali
POSITIP1: POP PSW ;Ambil bil. pengali
ORA A ;Periksa tanda bil pengali
JP POSITIP2 ;Lompat jika positip
CMA ;Komplement ke-2 bil pengali
INR A
POSITIP2: CALL KALI ;Kalikan
MOV A,B ; Ambil tanda hasil
ORA A
JP SELESAI ;Jika positip selesai
MOV A,H ;Jika negtip
CMA ;Hasil kali dikomplement ke-2
MOV H,A
MOV A,L
CMA
MOV L,A
INX H
SELESAI: HLT ;Selesai

7-4 POLITEKNIK NEGERI MEDAN


Mikroprosesor Ir.Morlan Pardede, MT
Perkalian dan Pembagian Bilangan Biner

KALI: LXI H,0000 ;Clear Hasil


MOV D,H ;Clear MSB bil. dikali
ULANG: ORA A ;Periksa pengali
JZ BALIK ;Jika 0 kembali
RAR ;Geser pengali ke kanan dgn bit MSB=0
JNC ULG1 ;Lompat jika bit b0=0
DAD D ;Hasil=Hasil +bil dikali
ULG1: XCHG ;Geser bil. Dikali 1 bit ke kiri
DAD H
XCHG
JMP ULANG; Ulangi
BALIK: RET ;Selesai

Catatan: Untuk melihat tanda hasil kali dilakukan dengan meng EX-Orkan pengali dengan
bil. Dikali. Sehingga jika bit b7 kedua bilangan sama maka bit b7 hasil akan 0 dan jika
berbeda bit b7 akan 1. Instruksi JP akan memeriksa bit b7 dimana jika logika 0 maka
program akan melompat. Saat operasi OR bit Cy akan logika 0 sehingga saat operasi RAR
dilakukan akan membuat bit b7 logika 0.

3. Pembagian Biner
Dengan menggeser register A ke kanan maka akan menghasilkan bilangan yang ada
pada register A tersebut dibagi dua dengan sisa bagi terdapat pada bit Cy.
Bagi4: ORA A ;Cy=0
RAR ;Geser ke kanan 1101
ORA A ;Cy=0
RAR ;Geser ke kanan 1001 1110101
1001
RET (1)
Operasi pembagaian di atas hanya berlaku jika 01011
1001
hasilnya bilangan bulat. Untuk pembagian biner (1)
00100
secara umum dilakukan dengan cara pembagian 1001 (0)
biner seperti ditunjukkan pada gambar berikut. 1001
1001 (1)
0
Gambar Proses pembagian biner

7-5 POLITEKNIK NEGERI MEDAN


Mikroprosesor Ir.Morlan Pardede, MT
Perkalian dan Pembagian Bilangan Biner

Proses di atas dilakukan dengan tahapan berikut:


PEMBAGIAN
Hasil

Pembagi
0001101 Bil.Dibagi
Set Counter=Banyak bit bil.Dibagi
Buffer
1001 0001 (1) 1110101
Bandingkan
1001 Clear Buffer
0011 Hasil=0
Bandingkan 1001
0111 Hasil=0 Geser Hasil ke kiri
Bandingkan
1001 dengan bit b0=0
1110 Hasil=0
Kurangkan
1001 - Geser bil. Dibagi ke kiri 1 bit
(bit MSB ke bit Cy)
Geser
0101 Hasil=1
1011
Geser buffer ke kiri 1 bit
Kurangkan
1001 - (bit MSB bil.dibagi ke bit b0 buffer)
Geser 0010
Hasil=1

0100 Bandingkan buffer dgn bil.


1001 Pembagi
1001 Hasil=0
Kurangkan
1001 - Tdk
Buffer
0000 Hasil=1 >?
Ya

Buffer=Buffer-Pembagi

Set bit LSB Hasil=1

Kurangi Counter

Tdk
0?

Ya

Selesai

Gambar Diagram alir Pembagian Biner

7-6 POLITEKNIK NEGERI MEDAN


Mikroprosesor Ir.Morlan Pardede, MT
Perkalian dan Pembagian Bilangan Biner

Program 4. Program Pembagian Biner


;0485H : 0DH=59H ; Dalam BCD: 1157 : 13 =89
ORG 8600H
LXI DE,0000 ;Clear Hasil
MVI A,00 ;Clear Buffer
LXI HL,0485H ;Set bil. Dibagi
MVI C,0DH ;Set bil Pembagi
MVI B,10H ;Set banyak bit bil. Dibagi (16-bit)
ULANG: XCHG ;Geser Hasil ke kiri dengan LSB =0
DAD HL ;dimana Pengeseran dilakukan dgn
XCHG ; operasi penjumlahan
DAD HL ;Geser bil. dibagi ke kiri 1 bit, MSB ke bit Cy
RAL ;Geser bufer dimana bit Cy masuk ke LSB buffer
CMP C ;Bandingkan buffer dgn pembagi
JC LMPT ;Lompat jika buffer < dari pembagi
SUB C ;Buffer= Buffer-pembagi
INR E ;Set LSB hasil =1
LMPT: DCR B ;Kurangi banyak bit bil dibagi
JNZ ULANG ;Ulangi jika belum 0
HLT

C. Percobaan
1. Percobaan perkalian Biner.
-Buka program simulator
-Masukkan program 2 (perkalian biner)
-Simulasikan Program dengan langkah-demi langkah
-Catat hasil setiap perintah pada setiap loop
-Analisa hasil program, berapa kali pengulangan (loop) yang terjadi saat program tersebut
dieksekusi.
-Berikan kesimpulan anda

2. – Buat program perkalian biner dengan tanda (Program 3)


-Simulasikan program
-Berikan analisa dari hasil program

3. Percobaan Pembagian Biner.


-Buka program simulator
-Ketikan program 4 (program pembagian Biner)
-Simulasikan dengan langkah-demi langkah

7-7 POLITEKNIK NEGERI MEDAN


Mikroprosesor Ir.Morlan Pardede, MT
Perkalian dan Pembagian Bilangan Biner

- Analisa hasil hasil program tersebut, berapa kali pengulangan (loop) terjadi saat program
tersebut dieksekusi.
- Berikan kesimpul anda.
5.- Buat program pembagian biner sesuai dengan diagram alir yang diberikan
- Simulasikan program anda tersebut
- Berikan analisa data dari hasil percobaan
- Bandingkan program yang anda buat dengan program 4 dari segi jumlah byte program dan
lamanya dieksekusi.
6. Mengapa jika pembagi lebih besar dari 80H hasil terkadang salah? (2710H : C8H)

7. Berikan kesimpulan anda

7-8 POLITEKNIK NEGERI MEDAN

Anda mungkin juga menyukai