Anda di halaman 1dari 10

Laporan Sementara

MK. Praktek Mikroprosessor

PERCOBAAN VI
ROUTINE PEMBAGIAN BINER

OLEH :
HASMIRA
200205500006
S1

JURUSAN PENDIDIKAN TEKNIK ELEKTRONIKA


FAKULTAS TEKNIK
UNIVERSITAS NEGERI MAKASSAR
2022
PERCOBAAN VI
ROUTINE PEMBAGIAN BINER

Tanggal percobaan: 31 Maret 2022


A. TUJUAN PERCOBAAN
1. Mengerti bagaimana menulis subroutine pembagian biner untuk sebuah
mikrokomputer
2. Membiasakan pemakai dengan teknik-teknik membuat program

B. TEORI DASAR
Pembagian Biner Dengan Perhitungan Secara Manual:
Contoh berikut ini dipakai untuk menggambarkan prosedur pembagian biner
secara terperinci
Bagilah 11101101 dengan 00010100.
A. Tulislah bilangan yang akan dibagi di sebelah kanan, bilangan pembagi di
sebelah kiri, dan letakkan hasilnya di atas bilangan yang dibagi.

 Hasil (jawaban)

11101101  Bilangan yang dibagi (237)

00010100  Bilangan pembagi (20)

B. Geser bilangan yang dibagi dan hasilnya (jawabannya) ke kiri 1bit.

0  Hasil (jawaban)

11101101  Bilangan yang dibagi

00010100  Bilangan pembagi

Untuk membandingkan antara bilangan yang dibagi dengan pembagi, letakkan

tujuh buah nol dibelakang bilangan 120 pembagi pada kolom di bawah bilangan
yang dibagi. Dengan mudah kita dapat melihat bahwa bilangan yang dibagi lebih

kecil dari bilangan pembagi. Karena itu, letakkan nol di kolom hasil (jawaban).

C. Lihatlah apakah bilangan yang dibagi masih lebih kecil dari bilangan

pembaginya. Jika ternyata bilangan yang dibagi masih I.ebih I<ecil dari

bilangar). pembagi, leta-kkan '0" pada kolom hasil (jawaban). Jika sebaliknya,

"1" pada kolom jawaban, dan bilangan yang dibagi dikurangi dengan

pembaginya. Dalam contoh kita ini, bilangan yang dibagi dengan hasilnya harus

digeser ke kiri 5 bit sebelum “1” dapat diletakkan pada jawaban. Jadi empat

buah "0' dan satu buah -”1” diletakkan pada kolom jawaban dengan cara sebagai

berikut:

00001  Hasil (jawaban) Jika yang di bagi cukup

Besar,"1" di letakkan pada

111011101  Bilangan yang dibagi hasil

00010100  Bilangan pembagi

D. Kurangi bilangan yang dibagi dengan pembagi. Perbedaannya menjadi bilangan

yang dibagi.

00001  Hasil (jawaban)

11101101  Bilangan yang dibagi setelah pengurangan.

00010100  Bilangan pembagi


E. Bilangan yang dibagi dan hasilnya di geser kekiri 2 bit, lalu “1” diletakkan pada

kolom jawaban.

 Hasil (jawaban)
0000101
 Bilangan yang dibagi.
01001101
 Bilangan pembagi
00010100

F. Kurangi bilangan yang dibaoi dengan pembaginya. Perbedaan akan menjadi

bilangan yang dibagi.

0000101  Hasil (jawaban)

00100101  Bilangan yang dibagi setelah pengurangan.

00010100  Bilangan pembagi

G. Bilangan yang dibagi dan jawabannya digeser ke kiri 1 bi.t lagi. Karena bilangan

yang dibagi lebih besar dari pembagi, letakkan “1” pada kolom hasil.

00001011  Hasil (jawaban)

00100101  Bilangan yang dibagi.

00010100  Bilangan pembagi

H. Kurangi bilangan yang dibagi dengan bilangan pembagi, sisa pembagian

diletakkan pada posisi bilangan yang di-bagi.

00001011  Hasil (jawaban)

00010001  Bilangan yang dibagi (17).

00010100  Bilangan pembagi


I. Jika sisa tidak sama dengan nol, proses pembagian dapat dilanjutkan, tetapi

hasilnya berisi pecaban.

Merancang Program Pembagian:

Untuk algoritma di atas, dibutuhkan tiga lokasi memory untuk menyimpan

bilangan yang dibagi, bilangan pembagi dan hasilnya.

CONTOH:

Tulislah sebuah program untuk membagi data 16 bit di pasangan

register DE dengan data 16 bit pada pasangan register BC. Hasilnya,harus

disimpan pada pasangan register DE dan sisanya pada pasangah register HL.

PEMECAHAN:

Penuniukan register telah diberikan dalam, uraian di atas. Pasangan

register HL dapat dipakai sebagai register untuk mengeriakan pengurangan

arithmetik 16 bit. Geser data 16 bit yang ada di DE ke kiri I bit ke pasangan

register HL. Bandingkan HL dengan BC. Jika HL lebih besar dari BC,,

kurangi HL dengan BC dan carry flag secara otomatis akan di-set meniadi 1.

Jika sebaliknya, tidak akan ada operasi pengurangan dan carry flag akan

menjadi 0. Karena bit register DE yang paling kanan sekarang meniadi

kosong, carry flag dipindahkan ke posisi ini.


Flowchart dan program dalam bahasa assembly dituliskan di bawah ini:

START

Penghitung A =16

Register untuk mengerjakan pengurangan (reg.HL) = 0

Carry  0

Hubungkan HL dan DE secara berurutan,


Lalu geser ke kiri 1 bit

Bandingkan HE, dengan BC. Jika HL lebih


besar dari BC, kura.ngi HL dengan BC.
Jika 5ebaliknya tidak ada pengurangan

Jika ada pengurangan, CARRY = 1. Jika sebaliknya,


CARRY = 0. Pindahkan CARRY ke DE bit paling kanan

AA-1

Simpan hasilnya

Selesai
Gambar 6.1 Flow Chart pengurangan biner
LOC O CODE STMT SOURCE STATEMENT
1 ; *** CONTOH PROGRAM GMS-I 008 ***
2 ; ROUTINE PEMBAGIAN 16 BIT
3 ; INPUT : YANG DIBAGI PADA 'DE'
4 ; : PEMBAGI PADA 'BC'
5 ; OUTPUT :HASIL PADA IHLI
6 ; : SISA PADA 'DE'
7 ; PERUBAHAN REG. :AF,DE,HL
8
0000 AF 9 DIV16 XOR A ; NOL-KAN CARRY FLAG
0001 67 10 LD H,A
0002 6F 11 LD L,A ;HL=O
0003 3EI0 12 LD A,16 ;A=16, LOOP COUNTER
13
14 DVO ;HL & DE 4 BYTE ROTASI KE KIRI 1 BIT
0005 CB13 15 RL E ;GESER KE KIRI, SIMPAN
; SEBAGIAN DI BIT 0
16
0007 CB12 17 RL D
0009 ED6A 18 ADC HL,HL ; PUTAR HL KE KIRI
19
20 ; JIKA HL > BC, KURANGI HL
DENGAN BC
000B ED42 21 SBC HL,BC ; HL = HL - BC
000D 3001 22 JR NC,DV1
000F 09 23 ADD HL,BC ; JIKA NEGATIF,SIMPAN HL
24
0010 3F 25 DV1 CCF ; HASIL PERHITUNGAN
; SETARA DI CARRY
; FALG
0011 3D 26 DEC A
0012 20F1 27 JR NZ , DV0
28
0014 EB 29 EX DE,HL
0015 ED6A 30 ADC HL,HL ;SIMPANBIT TER
; AKHIR HASILNYA
0017 C9 31 RET

1. Statement 10 dan 11 dapat diganti dengan instruksi LD HL 0. Tetapi instruksi ini

memerlukan memory sebanyak 3 byte dan waktu pelaksanaannya adalah 10 clock

cycle. Pada contoh di atas, digunakan LD H,A dan LD L, A (A di-nol-kan pada

statement 9). Instruksi tersebut membutuhkan memory 2 byte saja dan dapat

dilaksanakan dalam waktu 8 clock cycle.

2. Instruksi-instruksi penambahan dan pengurangan dapat digunakan untuk

operasi-operasi geser kiri" atau rotasi". Dalam contoh ini, instruksi ADC HL,HL,

sama dengan merotasikan data 16 bit pada pasangan HL ke kiri I bit (Bit yang

dipindahkan ke r-arry flag berasal. dari register D bit paling kiri). Fungsi

instruksi-instruksi berikut ini digambarkan di sebelah kanan.

ADD A,A ; Geser register A ke kiri 1 bit; atau kalikan A

dengan 2 ; dengan 2

ADC A,A ;Rotasikan A ke kiri 1 bit.

ADD HL,HL ;Geser HL ke kiri 1bit; ataU kalikan dengan 2

ADC HL,HL ;Rotasikan HL ke kiri 1 bit.

ADD IX,IX ;Geser IX ke kiri I bit; a'tau kal ikan dengan 2

ADD IY,IY ;Geser IY ke kiri I bit; atau kalikan dengan 2

(sumber teori: job sheet mikroprosessor)


Operasi pembagian bilangan desimal yang kita lakukan pada kertas dapat

kita terapkan untuk operasi pembagian bilangan biner pada sistem digital. Dari

operasi pembagian bilangan integer, akan dihasilkan 2 bilangan, yaitu Hasil Bagi

dan Sisa Bagi. Kita hanya perlu merinci langkah-langkah proses kemudian

menerapkannya pada sistem digital. Berikut ini adalah contoh pembagian

bilangan biner.

022

8 179

000

179

160

019

016

003

Gambar 6. 2 Contoh Pembagian bilangan desimal.

Dari gambar di atas kita bisa melihat bahwa Hasil Bagi = 022 dan Sisa

Bagi = 003. Meskipun kelihatannya benar, cara penulisan di atas kurang

informatif sehingga masih sulit untuk diterapkan pada bilangan biner.

(sumber:pksm.mercubuana.ac.id/new/elearning/.../14014-9-336133365497. doc)

J. ALAT DAN BAHAN


1. Trainer mikroprosessor Z-80

2. Adaptor 9V

3. Modul microprocessor

K. LANGKAH KERJA

1. Memasukkan program pada table, dan simpanblah pada tape audio

2. Mengganti instruksi terakhir (RET) pada subroutine pembagian diatas

dengan RST 38H dan menjalankannya. Mencatat hasilnya pada tabel 6.2.

Tabel 6.1
Tabel Objek kode program pembagian biner
Address Object Code Source Statement
1800 AF XOR A
1801 67 LD H,A
1802 6F LD L,A
1803 3E LD A,16
1804 10
1805 CB RL E
1806 13
1807 CB RL D
1808 12
1809 ED ADC HL, HL
180A 6A
180B ED SBC HL, BC
180C 42
180D 30 JR NC, DV1
180E 01
180F 09 ADD HL, BC
1810 3F
1811 3D CCF
1812 20
1813 F1 JR NZ
1814 EB
1815 ED ADC HL, HL
1816 6A
1817 C9
1818 FF RST 38H

Anda mungkin juga menyukai