RSS
Hello! Welcome to my blog. This blog is purposefully created for you to share knowledge and experience.

Program Perkalian Pada Komputer IAS


Pada postingan saya terdahulu saya sudah mencoba untuk membuat bagaimana penjumlahan data di komputer IAS. Nah, pada kesempatan ini saya akan mencoba untuk membuat program pada komputer IAS untuk melakukan operasi perkalian data yang ada di memori alamat 0551 dengan data di memori alamat 0552. Hasil dari prkalian tersebut disimpan ke dalam memori (MSB dialamat 0556 dan LSB dialamat 0557). Kemudian menjumlahkan data LSB hasil perkalian tersebut dengan isi  memori alamat 0553. Dari hasil penjumlahan tersebut hasilnya disimpan kembali di alamat 0559. Tapi, sebelumnya perhatikan dulu apa saja register komputer IAS dan bagaimana struktur detail dari komputer IAS itu sendiri.
Register Komputer IAS.

  • Memory buffer register (MBR) : berisi data yang akan disimpan di memori, atau digunakan untuk menerima data dari memori.
  • Memory address register (MAR) : berisi alamat memori suatu data yang hendak ditulis dari MBR atau dibaca ke MBR.
  • Instruction register (IR) : berisi 8 bit kode instruksi yang hendak dieksekusi.
  • Instruction buffer register (IBR) : tempat menyimpan instruksi sementara.
  • Program counter (PC) : berisi alamat dari instruksi yang hendak diambil dari memori.
  • Accumulator (AC) dan multiplier quotient (MQ) : tempat penyimpanan sementara operand dan hasil operasi ALU.
-           
Struktur Detail Komputer IAS.

Gambar 1: Struktur Detail Komputer IAS

Program dengan bahasa komputer IAS:

  • LOAD MQ, M (0551)
Penjelasan: Instruksi untuk mentransfer isi memori alamat (0551) ke MQ. Pada instruksi ini MQ = M (0551) yang artinya MQ sekarang berisi nilai dari memori alamat (0551) yang isinya adalah A. Jadi, MQ = A.
  • MUL M (0552)
Penjelasan: Instruksi ini untuk mengaalikan M(0552) dengan MQ yang kemudian hasilnya didua tempat yaitu Most Significant Bit (MSB) atau bit yang paling berarti yang letaknya paling kiri yang mempunyai harga tempat paling besar disimpan di AC dan Least Significant Bit (LSB) atau bit yang kurang berarti yang letaknya paling kanan yang mempunyai harga tempat paling kecil disimpan di MQ. Jadi, pada instruksi ini AC = MSB (A*B), sedangkan MQ = LSB (A*B).
  • STOR M (0556)
Penjelasan: Instruksi ini digunakan untuk mentransfer isi AC ke memori alamat (0556). Jadi, pada instruksi ini M(0556) = AC = MSB (A*B)
  • LOAD MQ
Penjelasan: Instruksi ini digunakan untuk mentransfer  isi register MQ ke AC. Jadi, pada instruksi ini AC = MQ = LSB (A*B)
  • STOR M (0557)
Penjelasan: Instruksi ini digunakan untuk mentransfer isi AC ke memori alamat (0557). Jadi, pada instruksi ini M(0557) = AC = LSB (A*B)
  • LOAD M (0557)
Penjelasan: Instruksi ini digunakan untuk mentransfer isi memori alamat (0557) ke AC. Pada instruksi ini AC = M (0557) yang artinya AC sekarang berisi nilai dari memori alamat (0557) yang isinya adalah LSB (A*B). Jadi, AC = LSB (A*B).
  • ADD M (0553)
Penjelasan: Instruksi ini digugakan untuk menjumlahkan isi memori alamat M (0553) dengan AC, yang kemudian hasil dari penjumlahan itu akan disimpan di AC. Jadi, pada instruksi ini AC = AC + C, => AC = LSB (A*B) + C.
  •  STOR M (0559)
Penjelasan: Instruksi ini digunakan untuk mentransfer isi dari AC ke memori alamat (0559). Jadi, pada instruksi ini M(0559) = AC = LSB (A*B) + C.
Jadi, begitulah program dengan bahasa komputer IAS untuk kasus operasi di atas. Untuk lebih jelasnya kasus operasi di atas dapat digambarkan peta memorinya yaitu untuk memperlihatkan dimana program dan data diletakkan. OK, Langsung saja gambaran peta memorinya dapat dilihat pada Gambar 2 dibawah ini.

Gambar 2: Peta Memori
Kemudian biar lebih mudah lagi untuk memahami bagaimana fungsi komputer, pada kasus diatas terdapat dua langkah untuk pengolahan instruksi dalam bentuk yang paling sederhana yaitu prosesor membaca instruksi dari memori, satu persatu setiap waktu (Fetch) dan eksekusi setiap instruksi (Execute). Nah, eksekusi suatu program merupakan pengulangan proses fetch dan execute intruksi saja. Untuk lebih jelasnya bagaimana urutan instruction cycle yaitu fetch cycle dan execution cycle bisa dilihat pada penjelasan berikut ini.
Urutan instruction cycle  fetch cycle dan execution cycle:
Ø  FETCH 1
·     PC = 0011
·     PC -> MAR, yang artinya MAR = PC = 0011
·  M(MAR) = M(0011) -> MBR, yang artinya isi dari memori alamat (0011) ditransfer ke MBR, yang berisi instruksi – instruksi yang dapat digambarkan sebagai berikut
   MBR (20:39) -> IBR, artinya instruksi yang berada di MBR(20:39) disimpan sementara di IBR, jadi pada instruksi ini IBR = MBR(20:39) = MUL M (0552)
·  MBR (0:7) -> IR, artinya instruksi yang berada di MBR (0:7) yang terdiri atas 8 bit code ditransfer ke IR yang hendak dieksekusi. Sehingga, IR = MBR (0:7) = LOAD MQ, M
·    MBR (8:19) -> MAR, artinya alamat yang ada di MBR (8:19) dibawa ke MAR yang hendak ditulis dari MBR atau dibaca ke MBR. Sehingga MAR = MBR (8:19) = M (0551)

Ø  EXECUTE 1
·    M(0551) -> MBR, artinya pada instruksi ini, isi dari M(0551) di transfer ke MBR. Sehingga, MBR = M(0551) = A
·  Karena instruksi yang dieksekusi adalah LOAD MQ, M (0551), Maka MQ = M(0551), artinya isi dari M(0551) akan ditransfer ke MQ. Sehingga, MQ = M (0551) = A

Ø  FETCH 2
·   IBR (0:7) -> IR, artinya upcode yang sebelumnya tersimpan di IBR ditransfer ke IR untuk dieksekusi. Jadi, IR = IBR (0:7) = MUL
·    IBR (8:19) -> MAR, artinya alamat memori yang sebelumnya tersimpan di IBR ditransfer ke MAR. Sehingga, MAR = M(0101).
·    PC = PC + 1, untuk pindah ke alamat memori selanjutnya. Sehingga, PC = 0011 + 1 = 0012

Ø  EXECUTE 2
·     M(0552) -> MBR, artinya nilai yang ada di alamat M(0101) ditransfer ke MBR. Jadi, MBR = M (0552) = B
·     Karena instruksi yang dieksekusi adalah MUL, maka (MQ * M(0552)) = (A * B) dan AC = MSB (A * B), sedangkan MQ = LSB (A * B).

Ø  FETCH 3
·     PC = 0012
·     PC -> MAR, yang artinya MAR = PC = 0012
·   M(MAR) = M(0012) -> MBR, yang artinya isi dari memori alamat (0012) ditransfer ke MBR, yang berisi instruksi – instruksi yang dapat digambarkan sebagai berikut.

·    MBR (20:39) -> IBR, artinya instruksi yang berada di MBR(20:39) disimpan sementara di IBR, jadi pada instruksi ini IBR = MBR(20:39) = LOAD MQ
·    MBR (0:7) -> IR, artinya instruksi yang berada di MBR (0:7) yang terdiri atas 8 bit code ditransfer ke IR yang hendak dieksekusi. Sehingga, IR = MBR (0:7) = STOR
·     MBR (8:19) -> MAR, artinya alamat yang ada di MBR (8:19) dibawa ke MAR yang hendak ditulis dari MBR atau dibaca ke MBR. Sehingga MAR = MBR (8:19) = M (0556)

Ø  EXECUTE 3
·     M(0556) -> MBR, artinya pada instruksi ini, isi dari M(0556) di transfer ke MBR. Sehingga, MBR = M(0556) = MSB (A * B)
·     Karena instruksi yang dieksekusi adalah STOR M (0556), Maka MQ = M (0556), artinya isidari M(0556) akan ditransfer ke AC. Sehingga, AC = M (0556) = MSB (A * B)

Ø  FETCH 4
·      IBR (0:7) -> IR, artinya upcode yang sebelumnya tersimpan di IBR ditransfer ke IR untuk dieksekusi. Jadi, IR = IBR (0:7) = LOAD
·     IBR (8:19) -> MAR, artinya alamat memori yang sebelumnya tersimpan di IBR ditransfer ke MAR. Sehingga, MAR = MQ.
·     PC = PC + 1, untuk pindah ke alamat memori selanjutnya. Sehingga, PC = 0012 + 1 = 0013

Ø  EXECUTE 4
·     MQ -> MBR, artinya isi register MQ ditransfer ke MBR. Jadi, MBR = MQ = LSB (A * B)
·     Karena instruksi yang dieksekusi adalah LOAD, maka AC =  LSB (A * B)

Ø  FETCH 5
·         PC = 0013
·         PC -> MAR, yang artinya MAR = PC = 0013
·      M(MAR) = M(0013) -> MBR, yang artinya isi dari memori alamat (0013) ditransfer ke MBR, yang berisi instruksi – instruksi yang dapat digambarkan sebagai berikut.
·     MBR (20:39) -> IBR, artinya instruksi yang berada di MBR(20:39) disimpan sementara di IBR, jadi pada instruksi ini IBR = MBR(20:39) = LOAD M (0557)
·     MBR (0:7) -> IR, artinya instruksi yang berada di MBR (0:7) yang terdiri atas 8 bit code ditransfer ke IR yang hendak dieksekusi. Sehingga, IR = MBR (0:7) = STOR
·    MBR (8:19) -> MAR, artinya alamat yang ada di MBR (8:19) dibawa ke MAR yang hendak ditulis dari MBR atau dibaca ke MBR. Sehingga MAR = MBR (8:19) = M (0557)

Ø  EXECUTE 5
·     M(0557) -> MBR, artinya pada instruksi ini, isi dari M(0557) di transfer ke MBR. Sehingga,  MBR = M(0557) = LSB (A * B)
·   Karena instruksi yang dieksekusi adalah STROR, Maka isi dari AC akan di transfer ke memori alamat  (0557), Sehingga M(0557) = AC = LSB (A * B)

Ø  FETCH 6
·      IBR (0:7) -> IR, artinya upcode yang sebelumnya tersimpan di IBR ditransfer ke IR untuk dieksekusi. Jadi, IR = IBR (0:7) = LOAD
·     IBR (8:19) -> MAR, artinya alamat memori yang sebelumnya tersimpan di IBR ditransfer ke MAR. Sehingga, MAR = M(0557).
·    PC = PC + 1, untuk pindah ke alamat memori selanjutnya. Sehingga, PC = 0013 + 1 = 0014

Ø  EXECUTE 6
·    M(0557) -> MBR, artinya isi memori alamat M(0557) ditransfer ke MBR. Jadi, MBR = M(0557) = LSB (A * B)
·      Karena instruksi yang dieksekusi adalah LOAD, maka AC =  LSB (A * B)

Ø  FETCH 7
·         PC = 0014
·         PC -> MAR, yang artinya MAR = PC = 0014
·     M(MAR) = M(0014) -> MBR, yang artinya isi dari memori alamat (0014) ditransfer ke MBR, yang berisi instruksi – instruksi yang dapat digambarkan sebagai berikut.
·     MBR (20:39) -> IBR, artinya instruksi yang berada di MBR(20:39) disimpan sementara di IBR, jadi pada instruksi ini IBR = MBR(20:39) = STOR M(0559)
·     MBR (0:7) -> IR, artinya instruksi yang berada di MBR (0:7) yang terdiri atas 8 bit code ditransfer ke IR yang hendak dieksekusi. Sehingga, IR = MBR (0:7) = ADD
·     MBR (8:19) -> MAR, artinya alamat yang ada di MBR (8:19) dibawa ke MAR yang hendak ditulis dari MBR atau dibaca ke MBR. Sehingga MAR = MBR (8:19) = M(0553)

Ø  EXECUTE 7
·     M(0553) -> MBR, artinya pada instruksi ini, isi dari M(0553) di transfer ke MBR. Sehingga, MBR = M(0553) = C
·    Karena instruksi yang dieksekusi adalah ADD M(0553), Maka memori alamat M(0553) dijumlahkan dengan isi AC dan menyimpan hasilnya di AC. Sehingga, AC = C + LSB (A * B)

Ø  FETCH 8
·      IBR (0:7) -> IR, artinya upcode yang sebelumnya tersimpan di IBR ditransfer ke IR untuk dieksekusi. Jadi, IR = IBR (0:7) = STOR
·     IBR (8:19) -> MAR, artinya alamat memori yang sebelumnya tersimpan di IBR ditransfer ke MAR. Sehingga, MAR = M(0559).
Ø  EXECUTE 8
·    M(0559) -> MBR, artinya isi memori alamat M(0559) ditransfer ke MBR. Jadi, MBR = M(0557) = LSB (A * B)
·   Karena instruksi yang dieksekusi adalah STOR, maka isi AC akan ditransfert ke memori alamat M(0559). Sehingga, M(0559) = C + LSB (A * B).

Jadi, seperti itu lah urutan instruction cycle yaitu fetch cycle dan execution cycle dari kasus permasalahan di atas. Semoga bermanfaat bagi teman-teman sekalian, tidak menutup kemungkinan kalau ada kekurangan atau kesalahan dalam penjelasan tadi, mohon kritik dan sarannya yang membangun untuk penjelasan dan penulisan selanjutnya

0 komentar:

 
Copyright 2009 Made for you. All rights reserved.