Flow Program Perkalian 8-bit pada Bahasa Assembly
Berikut ini adalah flow perkalian 8-bit menggunakan Bahasa Assembly (low level language)
==========CONTOH INPUT MAKSIMUM==========
input:
0 0 0 0 f f f f 0 0 0 0 0 0 0 0
* ini artinya FF dikali dengan FF atau bisa juga disebut dengan 255 dikali dengan 255
Output:
f e 0 1 0 0 0 0 0 0 0 0 0 0 0 0
* ini artinya output menghasilkan bilangan FE01 atau 65.025
==========CONTOH INPUT SEDERHANA==========
input:
0 0 0 0 0 2 0 3 0 0 0 0 0 0 0 0
* ini artinya 2 dikali dengan 3
* angka 6 akan masuk kedalam register hasil
Output:
0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0
* ini artinya 2 dikali dengan 3 akan menghasilkan angka 6 di output
** Jika program kalian benar, maka input dan output yang dihasilkan akan seperti contoh diatas
========= FLOW PROGRAM ==========
Start:
step1:
cek x satuan. apakah ada??
> kalo tidak ada lanjut step2
> kalo ada, lanjut, cek y puluhan, apakah ada?
step2:
cek x puluhan, apakah ada??
> kalo tidak ada, finish program
> kalo ada, isi x satuan dengan x puluhan, dan pastikan x puluhan berkurang karena sudah dipinjamkan ke x satuan dan besar nilai x puluhan setara 16 di x satuan, pastikan satuan sekarang terisi menjadi 16, kalau tidak bisa, isi dengan 15 dan catat 1 sisa hutangnya di tempat lain
> setelah x satuan sudah terisi (sudah di refill), lanjut ke tahap cek y puluhan
cek_y_puluhan:
cek register y puluhan, apakah ada?
> kalo ada eksekusi dahulu y puluhan, tambahkan ke register register hasil...
> kalo tidak ada y puluhan, kita lanjut eksekusi y satuannya, lihan step3:
step3:
eksekusi y satuan:
> tambahkan y satuan ke dalam hasil... lalu, jika sudah, masuk ke tahap selanjutnya yaitu x min min
tahap x_min_min:
kurangkan x satuan dengan 1 dengan begitu itu artinya program kita sudah berjalan 1x iterasi iterasi
sesudah itu. kita masuk ke iterasi selanjutnya:
jun start
* begitu seterusnya sampai x satuan habis dan x puluhan sudah habis atau sudah nol
** dengan begitu program akan berhenti
========== CATATAN UNTUK EKSEKUSI VALUE Y KE DALAM REGISTRI HASIL==========
Pahamilah bahwa kita memiliki 4 registri hasil yang harus kita isi...
yaitu registri0 (R0) registri1 (R1) registri2 (R2) registri3 (R3)
atau kalau bisa disingkat ialah seperti ini >> 0 0 0 0
registri3 akan bertindak sebagai satuan
registri2 akan bertindak sebagai puluhan
registri1 akan bertindak sebagai ratusan
registri0 akan bertindak sebagai ribuan
Pahamilah bahwa ketika anda menambahkan nilai ke registri satuan anda harus melihat apakah registri satuan akan menghasilkan CARRY atau tidak
> Jika hasil penambahan tidak menghasilkan CARRY, maka iterasi tersebut selesai
> Jika hasil penambahan (ADD) menghasilkan CARRY, maka anda harus memindahkan CARRY ke dalam registri selanjutnya yaitu REGISTRI PULUHAN.
>> Jika REGISTRI PULUHAN sudah penuh juga, maka anda harus memindahkannya ke dalam REGISTRI RATUSAN.
>>> Jika REGISTRI RATUSAN sudah penuh juga, maka anda harus memindahkannya ke dalam REGISTRI RIBUAN.
>>>> REGISTRI RIBUAN adalah tempat penampungan hasil maksimal yang dapat kita tampung
* dan dapat saya pastikan bahwa program perkalian 8 bit ini mampu menampung semua bilangan karena bilangan maksimal yang dapat di lakukan oleh program perkalian 8 bit ini adalah FF
==========CONTOH INPUT MAKSIMUM==========
input:
0 0 0 0 f f f f 0 0 0 0 0 0 0 0
* ini artinya FF dikali dengan FF atau bisa juga disebut dengan 255 dikali dengan 255
Output:
f e 0 1 0 0 0 0 0 0 0 0 0 0 0 0
* ini artinya output menghasilkan bilangan FE01 atau 65.025
==========CONTOH INPUT SEDERHANA==========
input:
0 0 0 0 0 2 0 3 0 0 0 0 0 0 0 0
* ini artinya 2 dikali dengan 3
* angka 6 akan masuk kedalam register hasil
Output:
0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0
* ini artinya 2 dikali dengan 3 akan menghasilkan angka 6 di output
** Jika program kalian benar, maka input dan output yang dihasilkan akan seperti contoh diatas
========= FLOW PROGRAM ==========
Start:
step1:
cek x satuan. apakah ada??
> kalo tidak ada lanjut step2
> kalo ada, lanjut, cek y puluhan, apakah ada?
step2:
cek x puluhan, apakah ada??
> kalo tidak ada, finish program
> kalo ada, isi x satuan dengan x puluhan, dan pastikan x puluhan berkurang karena sudah dipinjamkan ke x satuan dan besar nilai x puluhan setara 16 di x satuan, pastikan satuan sekarang terisi menjadi 16, kalau tidak bisa, isi dengan 15 dan catat 1 sisa hutangnya di tempat lain
> setelah x satuan sudah terisi (sudah di refill), lanjut ke tahap cek y puluhan
cek_y_puluhan:
cek register y puluhan, apakah ada?
> kalo ada eksekusi dahulu y puluhan, tambahkan ke register register hasil...
> kalo tidak ada y puluhan, kita lanjut eksekusi y satuannya, lihan step3:
step3:
eksekusi y satuan:
> tambahkan y satuan ke dalam hasil... lalu, jika sudah, masuk ke tahap selanjutnya yaitu x min min
tahap x_min_min:
kurangkan x satuan dengan 1 dengan begitu itu artinya program kita sudah berjalan 1x iterasi iterasi
sesudah itu. kita masuk ke iterasi selanjutnya:
jun start
* begitu seterusnya sampai x satuan habis dan x puluhan sudah habis atau sudah nol
** dengan begitu program akan berhenti
========== CATATAN UNTUK EKSEKUSI VALUE Y KE DALAM REGISTRI HASIL==========
Pahamilah bahwa kita memiliki 4 registri hasil yang harus kita isi...
yaitu registri0 (R0) registri1 (R1) registri2 (R2) registri3 (R3)
atau kalau bisa disingkat ialah seperti ini >> 0 0 0 0
registri3 akan bertindak sebagai satuan
registri2 akan bertindak sebagai puluhan
registri1 akan bertindak sebagai ratusan
registri0 akan bertindak sebagai ribuan
Pahamilah bahwa ketika anda menambahkan nilai ke registri satuan anda harus melihat apakah registri satuan akan menghasilkan CARRY atau tidak
> Jika hasil penambahan tidak menghasilkan CARRY, maka iterasi tersebut selesai
> Jika hasil penambahan (ADD) menghasilkan CARRY, maka anda harus memindahkan CARRY ke dalam registri selanjutnya yaitu REGISTRI PULUHAN.
>> Jika REGISTRI PULUHAN sudah penuh juga, maka anda harus memindahkannya ke dalam REGISTRI RATUSAN.
>>> Jika REGISTRI RATUSAN sudah penuh juga, maka anda harus memindahkannya ke dalam REGISTRI RIBUAN.
>>>> REGISTRI RIBUAN adalah tempat penampungan hasil maksimal yang dapat kita tampung
* dan dapat saya pastikan bahwa program perkalian 8 bit ini mampu menampung semua bilangan karena bilangan maksimal yang dapat di lakukan oleh program perkalian 8 bit ini adalah FF
Mantepp
ReplyDeletemancappp :)
DeleteGoks
ReplyDeletentaph
ReplyDelete