P. 1
Aritmatika

Aritmatika

|Views: 17|Likes:
Published by Dewi Sekar Putih

More info:

Published by: Dewi Sekar Putih on Mar 21, 2013
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

12/12/2013

pdf

text

original

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

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 .Pengurangan terhadap kelipatan pembagi berbobot tertinggi Kelipatan pembagi berbobot tertinggi adalah sebagai berikut: .Contoh: . maka hal ini dapat dilakukan dengan: . . 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. 7 6 5 4 3 2 1 0 0010 1000 Bilangan biner 0101 dapat dikurangi dengan bilangan pembagi sebanyak sekali.Apabila sebuah pointer digeser satu per satu dari bagian MSB ke kanan. Di belakang bit ketiga masih ada 3 buah bit lagi yaitu bit 2. 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. oleh karena itu kelipatan pembagi adalah 1 x pembagi atau 0011.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.Pada bilangan yang akan dibagi 40 atau 28H atau 0010 1000 biner dengan pembagi 0011 biner maka kelipatan pembagi .

Saat sisa dari pembagian masih >= bilangan pembagi. hal ini dapat dilakukan dengan: . proses pengurangan pada memori sisa bagi juga berlangsung pada step 6 dan step 8. - - Penjumlahan hasil bagi dengan hasil bagi sebelumnya setiap kali terjadi pengurangan dengan terhadap kelipatan pembagi berbobot tertinggi terjadi Dalam mikrokontroler. Pada step-step tersebut isi memori sisa bagi dikurangi dengan kelipatan pembagi berbobot tertinggi 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. hal ini disebabkan karena: i. ii. Contohnya pada step 6.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. 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 dapat dilakukan dengan melakukan pengurangan terhadap bilangan pembagi setiap kali ditemukan isi memori sisa bagi >= bilangan pembagi. Seperti yang tampak pada contoh di atas. proses pengurangan terhadap kelipatan pembagi berbobot tertinggi terus diulang hingga ditemukan sisa dari pembagian < bilangan pembagi. 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. maka Sisa Pembagian tersebut harus selalu dikurangi dengan kelipatan pembagi berbobot tertinggi.

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. 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. step 6 dan step 8. Seperti yang terlihat pada gambar 1. 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. 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 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. namun pada saat itu isi memori hasil bagi hanyalah 0000 0000 saja sehingga proses pergeseran tidak mengubah isi memori tersebut.- Menggeser ke kiri isi memori hasil bagi sebanyak 8 x bila bilangan yang diproses hanya menempati area 8 bit. 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. proses pengurangan sisa bagi (karena memori sisa bagi >= bilangan pembagi) terjadi pada step 5.

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.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. Perkalian Proses perkalian dilakukan dengan menggunakan mengalikan bilangan yang akan dikali dengan masing.

di mana ekivalen dengan pointer menunjuk ke bit yang bukan 0 (gambar 4).Proses dilakukan sebanyak jumlah bit dari bilangan yang diproses.Setiap kali carry flag = 1. proses perkalian dapat dilakukan dengan: . sedangkan pergeseran ke kiri bilangan yang dikali tetap dilakukan dengan menggeser ke kiri isi memori bilangan yang akan dikali. . .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? .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.Menggeser ke kanan bilangan pengali beserta carry . Oleh karena itu. maka jumlahkan bilangan yang dikali dengan hasil kali .Geser kiri bilangan yang akan dikali baik terjadi atau tidak terjadi carry.

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

#Pembagi 0017 11 3A =003A ACALL Perbandingan 0019 40 06 =0021 JC JanganDikurangi skip! .A INC R0 INC R1 =0047 DJNZ R2.@R0 SUBB A.#HasilBagi 0024 11 29 =0029 ACALL GeserKiri1X 0026 DB E2 =000A DJNZ R3.000F 78 0C MOV R0.LoopPembagian 0028 22 RET 0029 GeserKiri1X: 0029 7A 03 MOV R2. 0013 78 0C MOV R0.#0 INC R0 =0034 DJNZ R2.LoopPengurangan RET Perkalian: SisaBagi-Pembagi? SisaBagi<Pembagi. 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 .#Pembagi 001F 11 44 =0044 ACALL Pengurangan SisaBagi:=SisaBagi-Pembagi 0021 JanganDikurangi: 0021 B3 CPL C 0022 78 09 MOV R0.#SizeX LoopPengurangan: MOV A.@R0 SUBB A.#SisaBagi 0011 11 29 =0029 ACALL GeserKiri1X .@R1 INC R1 INC R0 =003D DJNZ R2.LoopPerbandingan RET Pengurangan: CLR C MOV R2.#SisaBagi 001D 79 06 MOV R1.#SizeX LoopHapus: MOV @R0.#SisaBagi 0015 79 06 MOV R1.LoopHapus RET Perbandingan: CLR C MOV R2.#SizeX 002B LeftShift: 002B E6 MOV A.@R1 MOV @R0.@R0 002C 33 RLC A 002D F6 MOV @R0.#SizeX LoopPerbandingan: 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. 001B 78 0C MOV R0.A 002E 08 INC R0 002F DA FA =002B DJNZ R2.

A DEC R0 =005A DJNZ R2.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.#Pengali 1 MOV R2.#SizeX LoopPenambahan: MOV A.LoopPerkalian RET Penambahan: CLR C MOV R2.#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.#Operand =0070 ACALL Penambahan JanganDitambah: CLR C MOV R0.A INC R0 INC R1 =0073 DJNZ R2.#HasilKali ACALL HapusNilai MOV R3.@R0 RRC A 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.#HasilKali MOV R1.#SizeX GeserKanan: MOV A.@R1 MOV @R0.@R0 ADDC A.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->