Anda di halaman 1dari 18

LAPORAN PRAKTIKUM MIKROKONTROLLER DAN INTERFACE

PERKALIAN BINER,PEMBAGIAN BINER,KONVERSI BCD KE


HEXA & HEXA KE BCD

DISUSUN OLEH :
NAMA : MICHAEL SITORUS
NIM : 220506203
KELAS : TK 4C

POLITEKNIK NEGERI MEDAN


JURUSAN TEKNIK ELEKTRO
PROGRAM STUDI TEKNIK TELEKOMUNIKASI
2024

LEMBAR PENGESAHAN
No. Percobaan : 01/Mikroprosesor/LMP/TK-4C/2024
Judul : Perkalian Biner,Pembagian Biner,Konversi BCD ke
Hexa & Hexa ke BCD
Tanggal Percobaan : 15 Februari 2024
Tanggal Pengumpulan: 22 Februari 2024
Nama : Michael Sitorus
NIM : 2205062035
Kelas : TK-4C
Kelompok :2
Nama Partner : 1. Agusta Yono Tumangger
2. Tio Rida Simamora
3. Vanya Dwi Jayanti Br.Tarigan
Instruktur : 1. Ir. Morlan Pardede, MT.
2. Nicodemus Hutabarat, ST., MT.

Instruktur 1 Instruktur 2

Ir. Morlan Pardede, MT. Nicodemus Hutabarat, ST., MT.

Praktikan

Michael Sitorus

DAFTAR ISI
2
PERKALIAN BINER,PEMBAGIAN BINER,
KONVERSI HEXA KE BCD & BCD KE HEXA
A.TUJUAN
Perkalian Biner:

1.Memahami konsep dasar perkalian dalam sistem bilangan biner.

2.Memahami algoritma dan implementasi perkalian biner menggunakan operasi bit pada level register
dan carry flag.

3.Mengerti bagaimana proses perkalian dilakukan pada tingkat bit dan register dalam mikroprosesor.

4.Melatih kemampuan dalam menulis kode assembly untuk melakukan operasi perkalian biner.

Pembagian Biner:

1.Memahami konsep dasar pembagian dalam sistem bilangan biner.

2.Memahami algoritma dan implementasi pembagian biner menggunakan operasi bit pada level register
dan carry flag.

3.Mengerti bagaimana proses pembagian dilakukan pada tingkat bit dan register dalam mikroprosesor.

4.Melatih kemampuan dalam menulis kode assembly untuk melakukan operasi pembagian biner.

Konversi BCD ke Heksadesimal & Heksadesimal ke BCD:

1.Memahami perbedaan antara sistem bilangan BCD dan heksadesimal.

2.Mengerti algoritma konversi antara BCD dan heksadesimal.

3.Melatih kemampuan dalam menulis kode assembly untuk melakukan konversi antara BCD dan
heksadesimal.

4.Memahami bagaimana representasi data berubah ketika dilakukan konversi antara BCD dan
heksadesimal.

B.DASAR TEORI
A. Perkalian Biner
Perkalian bilangan dapat dilakukan dengan pegulangan menjumlahkan bilangan yang dikali
sebanyak pengali atau menjumlahkan hasil kali bobot logika 1 dari biner pengali dengan bilangan
dikali. Contoh 3x 10 dilakukan dengan:
a. 10+10+10=30
b. Bobot biner logika 1 dari pengali (1010 ) adalah 2 dan 8.
2

Untuk mengalikan dua suatu bilangan dapat dilakukan dengan menggeser bilangan tersebut ke
kiri satu bit.
Sebagai contoh bilangan 10 dibagi 2: 1010 digeser menjadi 0101 atau 5
(10) 2 2 (10).

Untuk mengalikan 4(empat) dilakukan dengan menggerser bilangan tersebut dua kali ke kiri,
untuk mengalikan 8(delapan) dengan menggeser tiga kali ke kiri. Untuk mengali dengan 10 dilakukan
dengan menjumlahkan hasil kali 8 dengan hasil kali 2. Untuk membagi dua suatu bilangan (hasilnya
bilangan bulat) dapat dilakukan dengan menggeser bilangan tersebut ke kanan 1 bit. Berikut ini
diberikan program mengalikan isi register HL dengan 10.

Kali 10: DAD H ; HL x 2


MOV D,H ; Simpan hasil kali 2
MOV E,L
DAD H ; nilai awal HL x 4
DAD H ; nilai awal HL x 8
DAD D ; nilai awal HLx8 ditambah HL awal x2 = HLx10
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 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:

4
Gambar 1. Algoritma dan Fowchart Perkalian Biner

Perkalian dua buah data 8-bit akan menghasilkan data 8-bit atau lebih (16-bit) , untuk itu tempat
data hasil kali harus disediakan 16-bit. Berikut diberikan program perkalian biner dimana bilangan
pengali terdapat pada register A, bilangan dikali terdapat pada register E. Karena hasilnya
kemungkinan 16-bit maka penjumlahan dilakukan dengan perintah penjumlahan 16-bit yaitu DAD D
(HL=HL+DE), untuk itu pada saat awal register D diberi nilai 00. Untuk mempermudah proses
penggeseran bilangan dikali ke kiri satu bit dilakukan dengan proses menjumlahkan bilangan tersebut
dengan bilangan tersebut. Hal ini dapat dilakukan dengan DAD H dimana sebelumnya bilangan yang
akan digeser diberikan ke register HL. Untuk mempermudah penggeseran tersebut dapat dilakukan
dengan XCHG dan perintah DAD H.
Program 1. Perkalian Biner
;59 x 0D =0485
H H H

ORG 8500H
LXI D,0059 ;Set bil Dikali
H

MVI A,0D H ;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
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
5
B. 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
ORA A ;Cy=0
RAR ;Geser ke kanan
RET

Operasi pembagaian di atas hanya berlaku jika hasilnya bilangan bulat. Untuk pembagian biner secara
umum dilakukan dengan cara pembagian biner seperti ditunjukkan pada gambar berikut.

Gambar 3. Diagram alir Pembagian Biner

6
Program 2. Program Pembagian Biner
;0485H : 0DH=59 ;
H Dalam BCD: 1157 : 13 =89
(10) (10) (10)

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. Konvesi BCD ke Biner (Hexa)
Mikroprosesor bekerja dengan bilangan biner untuk itu data yang dalam bentuk desimal harus
diubah ke bentuk bilangan biner atau (hexa). Jika bilangan BCD berada antara 0 sampai 9
pengkonversian bilangan BCD ke bilangan biner mudah dilakukan karena tidak ada konversi. Tetapi
jika bilangan lebih besar dari 9 (berada antara A sampai F) konversi akan sulit dilakukan. Konversi
bilangan BCD ke biner yang umum dilakukan untuk bilangan BCD dua digit adalah mengalikan digit
puluhannya dengan 10 dan kemudian menambahkannya dengan angka satuan. Karena yang melakukan
operasi aritmatik ini adalah mikroprosesor (berbasis biner) berarti hasilnya berupa bilangan biner atau
hexa.Untuk bilangan 3-digit dilakukan dengan mengalikan angka bobot ratusan dengan 100, mengalikan
angka bobot puluhan dengan 10 dan kemudian menjumlahkan hasil kali 100 dengan hasil kali 10 dan
ditambah angka satuan.
Contoh: Untuk angka 216 dilakukan 2 x 100 + 10x1 + 6.
Algoritma konversi BCD ke biner (Hexa)
Dari uraian konversi BCD ke biner di atas maka dapat dibuat algoritma konversi BCD ke Biner.
Dimulai dengan memberikan hasil dengan 0 dan mengambil digit MSB dari bilangan BCD. Mengalikan
hasil dengan 10 dan kemudian menambahkannya dengan digit BCD. Proses ini diulangi hingga semua
angka BCD dikali 10 dan ditambahkan dengan angka BCDnya seperti ditunjukkan pada proses berikut:
Proses perkalian dan penjumlahan dilakukan prosesor secara biner sehingga hasilnya adalah biner atau
hexa yaitu 7D1H.
Sesuai dengan algoritma di atas berikut ini diberikan flowchart untuk mengkonversi bilangan
BCD yang terdapat pada sekelompok memori dimana alamat awal diisi dengan nilai MSD dan akhir
bilangan ditandai dengan kode CR (0DH).

7
Gambar 4. Diagram Alir Konversi Bilangan BCD ke Hexa
Berikut ini diberikan program mengkonversi bilangan BCD dimana digit-digitnya terdapat pada memori
yang diawali alamat 8130H (MSD) dan akhir digit ditandai dengan karakter CR(Enter).
Program 3. Konversi BCD ke Hexa
ORG 8100H
BCD_Ke_Hexa:
LXI SP,8140H
LXI B,8130H ;Set alamat awal bil BCD (MSD)
LXI H,0000H ;Clear Hasil
ULANG: LDAX B ;Ambil digit bil. BCD
CPI 0DH ;Periksa apakah karakter CR
JZ SELESAI ;Jika CR selesai
CALL KALI_10 ;Hasil dikali 10
MVI D,00
MOV E,A
DAD D ;Hasil + bil. BCD
INX B ;Naikkan alamat data
JMP ULANG ;Ulangi
SELESAI: HLT ;Selesai
KALI_10:PUSH B
DAD H ; Hasil dikali
MOV C,L ; Simpan hasil kali 2
MOV B,H
DAD H ; Hasil dikali 4
DAD H ; Hasil dikali 8
DAD B ; Hasil= Hasil kali 8 + hasil dikali 2=Hasil awal x10
POP B
RET
8
ORG 8130H
DB 06, 03, 04,03H ; Bil. BCD 6343510
DB 05, 0DH ;

D. Konvesi Biner(Hexa) ke BCD


Semua operasi dalam mikroprosesor adalah biner, sedangkan kita biasanya bekerja dalam bentuk
desimal. Sehingga untuk mempermudah pembacaan bilangan biner (Hexa) hasil operasi mikroprosesor
tersebut harus diubah ke dalam bentuk BCD. Konversi bilangan biner ke bilangan BCD yang umum
dilakukan adalah dengan membagi bilangan biner (hexa) tersebut dengan 10 dan sisanya merupakan
digit bilangan BCD. Hasilnya dibagi 10 lagi dan sisanya merupakan digit BCD, proses ini diulangi
hingga hasil bagi sama dengan 0 seperti ditunjukkan berikut ini.

Gambar 5. Diagram Alir Konversi Hexa ke BCD


Program 4. Konversi Bilangan Hexa ke bilangan BCD
ORG 8000H
LXI B,8200H ;Set alamat awal tempat hasil digit BCD
LXI H,1271H ;Set bilangan Hexa
LXI SP,8210H
ULANG: CALL BAGI-10 ;Isi HL dibagi 10 dan hasil pada DE sisa pada reg.A
STAX B ;Simpan sisa bagi sbg digit BCD

9
INX B ;Naikkan alamat digit BCD
XCHG ;Hasil bagi menjadi bil. Hexa
MOV A,L ;Periksa bil. Hexa
ORA H ; apakah 0000
JNZ ULANG ; Jika belum 0000 ulangi
MVI A,0DH ;Simpan CR sbg tanda akhir bil. BCD
STAX B
HLT

BAGI-10: PUSH B
LXI D,0000 ;Clear hasil bagi
MVI A,00 ;buffer
MVI C,0AH ;set pembagi 10
MVI B,10H ;Set loop=banyak geser 16 kali(banyak bit bil.dibagi)
ULANG1: DAD HL ;Geser bil dibagi ke kiri
RAL ;geser buffer ke kiri shg MSB dibagi ke LSB buffer
XCHG ;Geser hasil ke kiri dengan bit LSB =0
DAD HL
XCHG
CMP C ;Bandingkan buffer dengan pembagi
JC LMPT ;Lompat jika buffer lebih kecil
SUB C ;Jika buffer > atau= dengan pembagi kurangkan buffer
INR E ;dengan pembagi dan bit LSB hasil=1
LMPT: DCR B ;Kurangi banyak loop
JNZ ULANG1 ;Ulangi jika belum semua bit pembagi digeser ke buffer
POP B
RET ;Kembali

10
C.PERCOBAAN
1. Percobaan perkalian Biner.
-Buka program simulator
-Ketik program 1 (perkalian biner 59 x 0D =0485 ) pada simulator
H H H

-Simulasikan Program dengan langkah-demi langkah


-Catat hasil setiap perintah pada setiap loop
-Analisa hasil program
- Berapa kali terjadi pengulangan (loop) ?
- Berikan Kesimpulan dari program 1

2. Percobaan perkalian Biner dengan tanda plus/minus


-Ketik Program 2 pada simulator
-Simulasikan program
-Berikan analisa dari hasil program
-Ubah Program 2 dengan memberikan bilangan pengali menjadi -15 (10) dan bilangan yang dikali
menjadi -9 (10).

- Simulasikan dan berikan analisa dari hasil program


- Berikan kesimpulan dari program 2

3. Percobaan Pembagian Biner.


-Ketik program 3 (program pembagian Biner) pada simulator
-Simulasikan dengan langkah-demi langkah
-Analisa hasil program tersebut, berapa kali pengulangan (loop) terjadi saat program 3 tersebut
dieksekusi.
-Mengapa jika pembagi lebih besar dari 80H hasil terkadang salah? (2710H : C8H)
- Berikan kesimpulan dari program 3.

4. Percobaan.
- Simulasikan Program 4 (Konversi bilangan BCD ke Hexa)
Analisa hasil percobaan.
Berapa kali terjadi loop (pengulangan)
Pada saat kapan program berhenti
- Ubah bilangan BCD menjadi 500010 dan simulasikan.
- Berikan kesimpulan dari program 4.

5. Simulasikan Program 5 ( Konversi bilangan Hexa ke BCD)


- Analisa hasil percobaan
-Berapa kali terjadi loop
-Pada saat kapan program berhenti

6. Ubah nilai Hexa menjadi AFC8H dan simulasikan

7. Berikan kesimpulan dari program 5.

11
D.HASIL PERCOBAAN

Program 1

• Instruksi Program 1

12
• Program Sebelum Eksekusi

13
• Program Setelah Eksekusi

14
Program 2

• Instruksi Program 2

15
• Program Sebelum Eksekusi

• Program Setelah Eksekusi

16
Program 3
• Instruksi Program 3

Anda mungkin juga menyukai