Morlan Pardede, MT
Konversi Hexa ke BCD dan BCD ke Hexa
MODUL 4
KONVERSI BCD ke Hexa dan Hexa ke BCD
A. TUJUAN
1. Membuat program konversi bilangan BCD ke bilangan biner (Hexa)
2. Membuat program konversi bilangan Hexa ke bilangan BCD
B. Dasar Teori
1. 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 (bukan manusia) berarti hasilnya berupa bilangan biner (hexa).
Untuk 3 digit dilakukan dengan mengalikan digit bobot ratusan dengan 100, mengalikan
bobot puluhan dengan 10 dan kemudian menjumlahkan hasil kali 100 ditambah dengan hasil
kali 10 dan ditambah angka satuan.
Contoh: Untuk angka 216 dilakukan 2 x 100 + 10x1 + 6.
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 tumpukan memori dan diakhiri dengan kode CR (0DH).
BCD to Hexa
Clear Hasil
Periksa Bilangan
Tdk
CR ? Selesai
Hasil=Hasil kali 10
Hasil=Hasil+ bil.BCD
LXI SP,8140H
LXI B,8130H ;Set alamat awal bil BCD (MSD)
LXI H,0000H ;Clear Hasil
ULANG: LDAX B ;Ambil bil. BCD
CPI 0DH ;Periksa apakah karakter CR
KALI_10:PUSH B
DAD H ; Hasil dikali
MOV C,L ; Simpan hasil kali 2
MOV B,H
DAD H ; HL dikali 4
DAD H ; HL dikali 8
DAD B ; HL= HL awal dikali 10
POP B
RET
ORG 8130H
DB 06, 05, 05,03H ; Bil. BCD
DB 05, 0DH . ;
Hexa ke BCD
Tdk
Bilangan
0?
Simpan CR
(sbg akhir bil. BCD)
Selesai
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
C. Tugas
1. Dengan algoritma yang diberikan buat program konversi bilangan BCD ke Hexa dimana
digit-digit BCD-nya terdapat pada memori 8200H sampai 8204H dan hasilnya (bilangan
hexa) disimpan pada memori yang dimulai dari 8210H.
2. Dengan algoritma yang diberikan buat program konversi bilangan Hexa 16-bit yang
terdapat pada memori 8300H sampai 8301H ke bilangan BCD dimana digit-digit BCD-
nya disimpan pada memori dimulai dari alamat 8310H.
D. Percobaan.
1. Simulasikan Program 1 ( Konversi bilangan BCD ke Hexa)
2. Analisa hasil simulasi
3. Simulasikan program yang anda buat
4. Berikan kesimpulan anda
5. Simulasikan Program 2 ( Konversi bilangan Hexa ke BCD)
6. Analisa hasil simulasi
7. Simulasikan program yang anda buat
8. Berikan kesimpulan anda