LOGIKA ARITMATIKA PADA SISTEM BINER

1. Pembagian Proses pembagian pada sistem biner menggunakan proses pembagian berekor yaitu sebagai berikut: - Kurangi bilangan yang dibagi dengan kelipatan pembagi yang berbobot tertinggi - Jumlah kelipatan x bobot yang merupakan hasil bagin dijumlahkan dengan hasil bagin-1 - Bila sisa bagi (bilangan yang dibagi – kelipatan pembagi berbobot tertinggi) >= pembagi, lakukan step 1 dan 2 hingga diperoleh kelipatan pembagi berbobot tertinggi < pembagi - Hasil Bagi dan sisa bagi telah ditemukan
Bilangan pembagi

1x101 + 3x100 3 40 30 10 9 1 (a)

Bilangan yg dibagi kelipatan pembagi x bobot tertinggi yg paling mendekati bilangan yg dibagi Sisa bagi1 kelipatan pembagi x bobot tertinggi yg paling mendekati Sisa bagi 1 Sisa bagi2

23
Bilangan pembagi

22

20

(1 x 1000) + (1 x 100) + (1 x 1) 0011 0010 1000 0001 1000 0001 0000 0000 1100 0000 0100 0000 0011 0000 0001 (b)
Bilangan yg dibagi kelipatan pembagi x bobot tertinggi yg paling mendekati bilangan yg dibagi Sisa bagi 1 kelipatan pembagi x bobot tertinggi yg paling mendekati Sisa bagi1 kelipatan pembagi x bobot tertinggi yg paling mendekati Sisa bagi2

Sisa bagi 2

Sisa bagi 3

Perbedaan antara proses desimal dengan biner adalah bobot bilangannya, bila pada proses desimal bobot bilangan adalah merupakan kepangkatan dari 10, maka pada proses biner, bobot bilangan adalah merupakan kepangkatan dari 2. Pada proses pembagian di atas terdapat dua buah proses yaitu - Pengurangan terhadap kelipatan pembagi berbobot tertinggi - Penjumlahan hasil bagi dengan hasil bagi sebelumnya setiap kali terjadi pengurangan dengan terhadap kelipatan pembagi berbobot tertinggi terjadi

Pengurangan terhadap kelipatan pembagi berbobot tertinggi Kelipatan pembagi berbobot tertinggi adalah sebagai berikut: . bit 1 dan bit 0 oleh karena itu bobot dari bilangan adalah kepangkatan 3 dari dasar bilangan atau 23 Di sini telah ditemukan bahwa kelipatan pembagi berbobot tertinggi untuk bilangan 0010 1000 biner dengan pembagi 0011 biner adalah 0011 x 1000 = 0011000 atau 3 x 23 = 24 - Untuk melakukan proses pengurangan antara bilangan yang dibagi dengan kelipatan pembagi berbobot tertinggi pada mikrokontroler. . Di belakang bit ketiga masih ada 3 buah bit lagi yaitu bit 2.Apabila sebuah pointer digeser satu per satu dari bagian MSB ke kanan.Mengurangi isi memori sisa bagi dengan bilangan pembagi saat ditemukan isi memori sisa bagi >= bilangan pembagi .Isi memori sisa bagi adalah merupakan pengurangan dari bilangan yang dibagi dengan kelipatan pembagi berbobot tertinggi . maka hal ini dapat dilakukan dengan: . oleh karena itu kelipatan pembagi adalah 1 x pembagi atau 0011. 7 6 5 4 3 2 1 0 0010 1000 Bilangan biner 0101 dapat dikurangi dengan bilangan pembagi sebanyak sekali.Menggeser ke kiri bilangan yang dibagi ke suatu memori tertentu yang selanjutnya digunakan untuk menyimpan sisa bagi sebanyak 8 kali bila bilangan yang diproses hanya menempati area 8 bit.Contoh: . maka akan ditemukan sebuah bilangan yang >= pembagi saat pointer menunjuk bit ke 3 yaitu 00101 biner yang merupakan bilangan terhitung dari MSB hingga bit 3.Pada bilangan yang akan dibagi 40 atau 28H atau 0010 1000 biner dengan pembagi 0011 biner maka kelipatan pembagi .

Hal ini dapat dilakukan dengan melakukan pengurangan terhadap bilangan pembagi setiap kali ditemukan isi memori sisa bagi >= bilangan pembagi. maka Sisa Pembagian tersebut harus selalu dikurangi dengan kelipatan pembagi berbobot tertinggi. Saat sisa dari pembagian masih >= bilangan pembagi. hal ini dapat dilakukan dengan: . ii. Seperti yang tampak pada contoh di atas. proses pengurangan pada memori sisa bagi juga berlangsung pada step 6 dan step 8.0010 1000 : 0011 Bilangan yg dibagi 1 2 3 4 5 6 7 8 Sisa Bagi 0101 0000 1010 0000 0100 0000 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001 0000 0010 0000 0101 >= pembagi 0000 0010 0000 0101 0000 0011 0000 0100 0000 0011 0000 0100 0000 0011 0000 0100 >= pembagi 0000 0001 0000 0010 0000 0100 >= pembagi 0000 0001 Gambar 1 Proses pengurangan yang terjadi pada sistem pembagian berekor Pada proses di atas. isi memori sisa bagi dikurangi dengan 0011 x 0100 atau 3 x 22 di mana 3 adalah kelipatan pembagi dan 22 adalah bobot tertinggi dari kelipatan pembagi yang diperoleh dengan sisa bagi yang ada saat itu. bila setelah ditemukan isi memori sisa bagi >= bilangan pembagi (0011) yang pertama kali pergeseran terus dilakukan tanpa melakukan pengurangan dengan pembagi pada step-step berikutnya maka. Pada step-step tersebut isi memori sisa bagi dikurangi dengan kelipatan pembagi berbobot tertinggi saat itu. Contohnya pada step 6. proses pengurangan terhadap kelipatan pembagi berbobot tertinggi terus diulang hingga ditemukan sisa dari pembagian < bilangan pembagi. - - Penjumlahan hasil bagi dengan hasil bagi sebelumnya setiap kali terjadi pengurangan dengan terhadap kelipatan pembagi berbobot tertinggi terjadi Dalam mikrokontroler. Pergeseran yang dilakukan pada step-step berikutnya adalah merupakan perkalian hasil pada step i dengan bobot tertinggi yaitu dalam contoh di atas adalah 23 Namun pada sistem pembagian berekor. proses ini sudah merupakan pengurangan bilangan yang dibagi dengan kelipatan pembagi berbobot tertinggi. Pada saat isi memori sisa bagi dikurangi dengan pembagi maka proses pengurangan antara bilangan yang dibagi dengan kelipatan pembagi telah dilakukan. hal ini disebabkan karena: i.

step 6 dan step 8.- Menggeser ke kiri isi memori hasil bagi sebanyak 8 x bila bilangan yang diproses hanya menempati area 8 bit. Seperti yang terlihat pada gambar 1. maka hanya pada step-step tersebut saja terjadi increment dan pergeseran ke kiri sedangkan pada step 7 hanya dilakukan pergeseran ke kiri seperti pada gambar 2. namun pada saat itu isi memori hasil bagi hanyalah 0000 0000 saja sehingga proses pergeseran tidak mengubah isi memori tersebut. hal ini ekivalen dengan penambahan 1 x 100 atau 1 x 22 Pada step 5 terlihat terdapat penambahan angka 1 dan selanjutnya angka tersebut terus bergeser ke kiri sebanyak 0x atau tidak bergeser hingga akhir step. hal ini ekivalen dengan penambahan 1 x 1 atau 1 x 20 Maka total penjumlahan hasil bagi adalah 1 x 1000 + 1 x 100 + 1 x 1 = 1011 biner Alur Program dalam Mikrokontroler . Menambah satu (increment) memori hasil bagi setiap kali ditemukan isi memori sisa bagi >= bilangan pembagi. Pada step 5 terlihat terdapat penambahan angka 1 dan selanjutnya angka tersebut terus bergeser ke kiri sebanyak 3x hingga akhir step. hal ini ekivalen dengan penambahan 1 x 1000 atau 1 x 23 Pada step 6 terlihat terdapat penambahan angka 1 dan selanjutnya angka tersebut terus bergeser ke kiri sebanyak 2x hingga akhir step. proses pengurangan sisa bagi (karena memori sisa bagi >= bilangan pembagi) terjadi pada step 5. Terjadi pengurangan sisa bagi maka hasil bagi + 1 dan geser kiri Tidak terjadi pengurangan sisa bagi maka hasil bagi Terjadi pengurangan geser kiri sisa bagi maka hasil bagi + 1 dan geser kiri Terjadi pengurangan sisa bagi maka hasil bagi + 1 dan geser kiri 5 6 7 8 0000 0001 0000 0010 0000 0101 0000 1011 Gambar 2 Penjumlahan Hasil Bagi Pada step 1 hingga 4 sebetulnya juga terdapat proses pergeseran ke kiri.

Desimal Hexa Biner 30 3 x 1E 3 x 0001 1101 0011 x 0001 1101 x 10 + 0001 1101 x 1 biner atau 30 x 21 + 30 x 20 Gambar 3 Proses perkalian .masing bobot dari pengali. Perkalian Proses perkalian dilakukan dengan menggunakan mengalikan bilangan yang akan dikali dengan masing.R3=Size*8 Size = ukuran bit dari bilangan yang dioperasikan Hasil Bagi=0 Sisa Bagi = 0 Operand adalah bilangan yang dibagi Operand Geser Kiri Sisa Bagi Geser Kiri Sisa Bagi < Pembagi? No Sisa Bagi=sisa Bagi-Pembagi Pengurangan sisa bagi dengan kelipatan pembagi berbobot tertinggi dilakukan Yes Increment Hasil Bagi Increment Hasil bagi dilakukan Geser Kiri Hasil Bagi R3=0? Proses selesai 2.

Oleh karena itu. di mana ekivalen dengan pointer menunjuk ke bit yang bukan 0 (gambar 4). maka jumlahkan bilangan yang dikali dengan hasil kali . proses perkalian dapat dilakukan dengan: .Hasil perkalian akan tersimpan di memori hasil kali R3=Size*8 Geser Kanan Pengali Ada Carry? No HasilKali=Operand + HasilKali Geser Kiri Operand R3=0? .Geser kiri bilangan yang akan dikali baik terjadi atau tidak terjadi carry.Setiap kali carry flag = 1.Menggeser ke kanan bilangan pengali beserta carry .0001 1101 0011 Isi bit yg ditunjuk tidak 0 Hasil Kali = Hasil kali + 0001 1101 0011 1010 0011 Isi bit yg ditunjuk tidak 0 Hasil Kali = Hasil kali + 0011 1010 atau 21 desimal X 0001 1101 biner Gambar 4 Proses logika perkalian Pada gambar di atas tampak sebuah pointer pada bilangan pengali bergeser ke kiri sedangkan bilangan yang akan dikali bergeser ke kiri saat step kedua (untuk mengali dengan 21 ) Pada mikrokontroler pergeseran ke kiri pointer pada bilangan pengali dapat dilakukan dengan menggeser ke kanan bilangan pengali beserta carry flag. . sedangkan pergeseran ke kiri bilangan yang dikali tetap dilakukan dengan menggeser ke kiri isi memori bilangan yang akan dikali.Proses dilakukan sebanyak jumlah bit dari bilangan yang diproses. .

VARIABEL 0000 Operand: DS SizeX dikurang/ditambah 0003 Operand2: DS SizeX pengurang/penambah 0006 Pembagi: DS SizeX 0009 HasilBagi: DS SizeX 000C SisaBagi: DS SizeX (hanya digunakan pada .stts.R0 pada Operand dan R1 pada Operand2 .Sisa pembagian .Bilangan yang .2) **************** RUTIN-RUTIN ARIMATIKA DAN KONVERSI ************* .Subroutine penambahan & pengurangan .Panggil Subroutine Lihat Hasil .Lokasi pengali = .Bilangan .Operand 2 berfungsi sebagai nilai pengurang pada subroutine .RUTIN-RUTIN ARITMATIKA Pembagian: 78 09 MOV R0.Subroutine pembagian/perkalian ..Lokasi hasil kali .#SisaBagi 11 32 =0032 ACALL HapusNilai . . 0008 7B 18 MOV R3.#SizeX*8 000A LoopPembagian: 000A C3 CLR C 000B 78 00 MOV R0.Subroutine melihat hasil .#HasilBagi 11 32 =0032 ACALL HapusNilai 78 0C MOV R0.Isi hasil kali/hasil bagi dengan bilangan pengali/pembagi .#Operand 000D 11 29 =0029 ACALL GeserKiri1X 0000 0000 0002 0004 0006 .. .Set R0 pada digit terbesar dari memori yang dilihat . . .Aritmatik Operasi .Hasil terdapat pada bagian yg ditunjuk oleh hasil kali/hasil bagi 0000 0000 0003=SizeX 4 byte 0000=Lokasi_Titik .edu dan diassembly oleh Software ALDS 3.Cara Penggunaan Subroutine .Isi Operand dan Operand 2 . . .Isi operand dengan bilangan yang akan dibagi/dikali . pengurangan .CODE ORG * . .Bilangan pembagi .Panggil subroutine penambahan/pengurangan .Listing Program (diambil dari http://alds.Hasil terdapat pada lokasi operand . .DATA ORG * EQU 3 EQU 0 . . .Subroutine konversi bilangan dasar) 0006=Pengali EQU Pembagi lokasi pembagi 0009=HasilKali EQU HasilBagi = lokasi hasil bagi 0000 0000 . . .Panggil Subroutine perkalian/pembagian .Hasil bagi ..

LoopPerbandingan RET Pengurangan: CLR C MOV R2.#SizeX LoopPengurangan: MOV A.#0 INC R0 =0034 DJNZ R2.LoopHapus RET Perbandingan: CLR C MOV R2.#SizeX 002B LeftShift: 002B E6 MOV A.LeftShift 0031 22 RET 0032 0032 0034 0034 0036 0037 0039 003A 003A 003B 003D 003D 003E 003F 0040 0041 0043 0044 0044 0045 0047 0047 0048 0049 004A 004B 004C 004E 004F HapusNilai: MOV R2.#SisaBagi 001D 79 06 MOV R1.#Pembagi 0017 11 3A =003A ACALL Perbandingan 0019 40 06 =0021 JC JanganDikurangi skip! .#HasilBagi 0024 11 29 =0029 ACALL GeserKiri1X 0026 DB E2 =000A DJNZ R3.LoopPengurangan RET Perkalian: SisaBagi-Pembagi? SisaBagi<Pembagi.@R0 002C 33 RLC A 002D F6 MOV @R0.A 002E 08 INC R0 002F DA FA =002B DJNZ R2.#SizeX LoopPerbandingan: MOV A. 0013 78 0C MOV R0.#SisaBagi 0011 11 29 =0029 ACALL GeserKiri1X .@R1 MOV @R0.@R0 SUBB A.LoopPembagian 0028 22 RET 0029 GeserKiri1X: 0029 7A 03 MOV R2.@R0 SUBB A.A INC R0 INC R1 =0047 DJNZ R2.#SisaBagi 0015 79 06 MOV R1.000F 78 0C MOV R0. 001B 78 0C MOV R0.#SizeX LoopHapus: MOV @R0.@R1 INC R1 INC R0 =003D DJNZ R2.#Pembagi 001F 11 44 =0044 ACALL Pengurangan SisaBagi:=SisaBagi-Pembagi 0021 JanganDikurangi: 0021 B3 CPL C 0022 78 09 MOV R0. Simpan hasil 7A 03 76 00 08 DA FB 22 C3 7A 03 E6 97 09 08 DA FA 22 C3 7A 03 E6 97 F6 08 09 DA F9 22 .

#Pengali 1 MOV R2.#Operand =0070 ACALL Penambahan JanganDitambah: CLR C MOV R0.A DEC R0 =005A DJNZ R2.#HasilKali MOV R1.A INC R0 INC R1 =0073 DJNZ R2.@R0 ADDC A.LoopPerkalian RET Penambahan: CLR C MOV R2.#SizeX GeserKanan: MOV A.#SizeX LoopPenambahan: MOV A.LoopPenambahan RET C3 78 00 11 29 DB E6 22 C3 7A 03 E6 37 F6 08 09 DA F9 22 .GeserKanan =0068 JNC JanganDitambah MOV R0.#HasilKali ACALL HapusNilai MOV R3.@R1 MOV @R0.@R0 RRC A MOV @R0.#Operand =0029 ACALL GeserKiri1X =0055 DJNZ R3.004F 78 09 0051 11 32 0053 7B 18 0055 0055 0056 0058 005A 005A 005B 005C 005D 005E 0060 0062 0064 0066 0068 0068 0069 006B 006D 006F 0070 0070 0071 0073 0073 0074 0075 0076 0077 0078 007A =0032 MOV R0.#SizeX*8 C3 78 08 7A 03 E6 13 F6 18 DA 50 78 79 11 FA 06 09 00 70 LoopPerkalian: CLR C MOV R0.

Sign up to vote on this title
UsefulNot useful