85
ARSITEKTUR KOMPUTER Nama : Fajar Juniarto NIM : 2009420010 Jurusan / Smt : T. Elektro / VIII FAKULTAS TEKNIK UNIVERSITAS MUHAMMADIYAH JAKARRTA 2013

ARSITEKTUR KOMPUTER.pdf

Embed Size (px)

Citation preview

Page 1: ARSITEKTUR KOMPUTER.pdf

ARSITEKTUR KOMPUTER

Nama : Fajar Juniarto

NIM : 2009420010

Jurusan / Smt : T. Elektro / VIII

FAKULTAS TEKNIK

UNIVERSITAS MUHAMMADIYAH JAKARRTA

2013

Page 2: ARSITEKTUR KOMPUTER.pdf

SAP-1

Komputer SAP (Simple-As Possible; artinya sederhana mungkin) telah dirancang untuk anda sebagai seorang pemula dalam bidang ini. Tujuan utama perancangan komputer SAP adalah untuk memperkenalkan semua gagasan penting dibalik operasi komputer tanpa membenamkan anda kedalam kerumitan yang tidak perlu. Meskipun demikian, sebuah komputer sederhana seperti SAP sudah mengandung banyak konsep yang lanjut. Untuk menghindarkan beban pemahaman yang terlampau banyak sekaligus, kita akan mengkaji secara tiga generasi yang berbeda dari komputer SAP.

SAP-1 merupakan tahap pertama dalam evolusi kearah pengembangan komputer-komputer modern. Sekalipun masih terhitung primitif, pemahaman SAP-1 sudah merupakan suatu langkah besar bagi seorang pemula. Jadi dalam bahan yang disajikan dalam bab ini, kuasai SAP-1, baik arsitekturnya, cara pemrogramannya, maupun rangkaiannya. Setelah ini, anda akan siap untuk mempelajari komputer SAP-2. 10-1 ARSITEKTUR Gambar 10-1 memperlihatkan arsitektur (struktur) dari SAP-1, sebuah komputer berorganisasi-bus. Semua keluaran register menuju bus W merupakan saklar tiga-keadaan, yang memungkinkan transfer data secara teratur. Semua keluaran register yang lain hanya memiliki dua keadaan; keluaran-keluaran ini secara kontinu menggerakkan kotak-kotak yang disambungkan kepadanya.

Susunan pada Gambar 10-1 menonjolkan fungsi register-register yang dipakai dalam SAP-1. Karena itu, tidak ada usaha untuk menempatkan semua rangkaian pengendali dalam satu blok yang disebut untuk kendali, ataupun meletakkan semua rangkaian-rangkaian masukan-keluaran di dalam blok lain yang disebut unit I/O, dsb.

Kebanyakan register dari Gambar 10-1 sudah pernah dikenal dari contoh dan pembahasan sebelumnya. Berikut ini adalah uraian singkat dari setiap kotak diagram, dan penjelasan yang terinci akan diberikan kemudian.

Page 3: ARSITEKTUR KOMPUTER.pdf

Gambar 10-1 Arsitektur SAP-1 Pencacah Program Program disimpan pada bagian awal dari memori dengan instruksi pertama pada alamat biner 0000, intruksi kedua pada alamat 0001, instruksi ketiga pada alamat 0010, dan seterusnya. Pencacah program, yang merupakan bagian dari unit kendali, mencacah dari 0000 sampai 1111. Tugasnya adalah mengirimkan ke memori alamat dari instruksi berikutnya yang akan diambil dan dilaksanakan. Hal ini dilaksanakan sebagai berikut.

Page 4: ARSITEKTUR KOMPUTER.pdf

Pencacah program direset ke 0000 setiap kali sebelum komputer dijalankan. Ketika komputer mulai bekerja, pencacah program mengirimkan alamat 0000 ke memori. Kemudian mencacah program meningkatkan angka cacahannya menjadi 0001. Setelah instruksi pertama diambil dan dilaksanakan, pencacah program mengirimkan alamat 0001 ke memori. Pencacah program kembali meningkatkan angka cacahannya. Sesudah instruksi kedua diambil dan dieksekusi, pencacah program mengirimkan alamat 0010 ke memori. Dengan demikian, pencacah program dapat menentukan instuksi berikutnya yang akan diambil dan dilaksanakan.

Pencacah program di sini dapat dibayangkan seperti seseorang yang memakai jarinya untuk menunjuk kepada suatu daftar instruksi ini harus dilaksanakan pertama, itu kedua, itu ketiga, dan seterusnya. Itu sebabnya mengapa pencacah program kadang-kadang disebut penunjuk (pointer): pencacah itu menunjuk kepada suatu alamat tertentu dalam memori yang menyimpan isi penting pada alamat tsb. Masukan dan MAR Di bawah pencacah program adalah blok masukan dan MAR. Disini sudah termasuk register saklar untuk alamat dan data seperti dibahas dalam Pasal 9-4. Register-register saklar ini, yang merupakan bagian dari unit masukan, memungkinkan pengiriman 4 bit alamat dan 8 bit data kepada RAM. Ingatlah bahwa instruksi dan kata-data dituliskan ke dalam Ram sebelum komputer bekerja. Memory address register (disingkat MAR: artinya register alamat memori) adalah bagian dari memori SAR-1. Selama komputer bekerja, alamat dalam pencacah program ditahan (latched) pada MAR. Sejenak kemudian, MAR mengirimkan alamat 4 bit ini ke dalam RAM, dimana operasi membaca dilaksanakan. RAM Kotak Ram dalam gambar merupakan sebuah RAM TTL statik 16 x 8. Sebagaimana dibahas dalam Pasal 9-4, kita dapat memprogram RAM dengan register saklar alamat dan register saklar data. Melalui cara ini kita dapat memasukkan program dan data ke dalam memori sebelum komputer bekerja. Selama komputer beroperasi, RAM menerima alamat 4-bit dari MAR dan operasi membaca dilaksanakan. Dalam proses ini, instruksi dan kata-data yang tersimpan dala RAM ditempatkan pada bus W untuk digunakan oleh beberapa bagian lain dari komputer. Register Instruksi Register instruksi merupakan bagian dari unit kendali. Untuk mengambil sebuah instruksi dari memori, komputer melakukan operasi membaca memori. Dalam operasi ini isi dari lokasi memori yang ditunjuk alamatnya ditempatkan pada bus W. Pada waktu yang sama, register instruksi disiapkan untuk pengisian pada tepi positif dari sinyal detak (clock) berikutnya. Isi register instruksi dibagi menjadi dua nibble. Nibble bagian atas merupakan keluaran dua-keadaan yang langsung dikirimkan kepada blok “ pengendali-pengurut”. Nibble bagian bawah adalah keluaran tiga-keadaan yang dapat dibaca (ditempatkan) pada bus W bilamana diperlukan.

Page 5: ARSITEKTUR KOMPUTER.pdf

Pengendali-Pengurut Blok terbawah di bagian kiri berisi pengendali-pengurut (controller-sequencer) sebelum komputer bekerja, sinyal-sinyal CLR dan CLR masing-masing dikirimkan ke pencanah program dan register instruksi. Sebagai akibatnya, pencacah program direset ke 0000 dan bersamaan ini instruksi terakhir dalam register instruksi dihapus.

Sebuah sinyal detak CLK dikirimkan ke semua register bufer; sinyal ini mensinkronkan operasi komputer, yang menjamin bahwa setiap langkah operasi akan terjadi sebagaimana mestinya. Dengan kata lain, semua transfer dalam regiter terjadi pada tepi positif dari sinyal detak CLK yang sama. Perhatikan bahwa sinyal CLK juga memasuki pencacah program. Data 12-bit yang berasal dari pengendali-pengurut membentuk suatu kata-pengendalian komputer (seperti seorang pengawas yang memberitahu tentang apa yang harus dikerjakan). 12 kawat yang menyalurkan kata-kendali itu disebut bus kendali (control bus). Kata kendali mempunyai format sbb: CON = CpEp L M CE L 1 E 1 L AEA SuEu L B L o

Kata ini menentukan bagaimana register-register harus bereaksi terhadap tepi positif sinyal detak berikutnya. Misalnya, Ep tinggi dan L M rendah berarti bahwa isi pencacah program ditahan di dalam MAP pada tepi positif berikutnya. Sebagai contoh yang lain, CE dan L A yang rendah berrati kata RAM yang telah ditunjuk alamatnya akan ditransfer ke akumulator pada tepi positif berikutnya dari lonceng. Kelak kita akan mempelajari diagram pewaktuan yang bersangkutan untuk melihat tepatnya kapan dan bagaimana transfer data ini dilakukan. Akumulator Akumulator (A) adalah sebuah register buffer yang menyimpan jawaban sementara (tahap menengah, intermediate) selama komputer beroperasi. Dalam Gambar 10-1 diperlihatkan bahwa akumulator mempunyai dua macam keluaran. Keluaran dua keadaan secara langsung diteruskan ke bagian penjumlahan-pengurang. Keluaran tiga-keadaan dikirimkan kepada bus W. Karena itu kata 8-bit dari akumulator secara terus menerus menggerakkan rangkaian penjumlah-pengurangan; dan kata yang sama juga muncul pada bus W bilamana EA tinggi. Penjumlah- Pengurang SAP-1 menggunakan sebuah penjumlah-pengurang komplemen-2. Bila Su berharga rendah, maka keluaran jumlah dari penjumlah-pengurang dalam Gambar 10-1 adalah: S = A + B

Page 6: ARSITEKTUR KOMPUTER.pdf

Apalagi Su tinggi, keluarannya berupa selisih A = A + B’ (ingat kembali bahwa komplemen-2 ekivalen dengan perubahan tanda dalam bilangan desimal) Rangkaian penjumah-pengurang bersifat asinkron (tidak diatur oleh sinyal detak); ini berarti isi keluarannya akan berubah bila terjadinya perubahan pada kata-kata masukan. Bilamana Eu tinggi, isi yang bersangkutan akan muncul pada bus W. Register B Register B adalah register bufer yang lain diantara register-register bufer yang ada. Register ini digunakan dalam operasi aritmetik. Sinyal L B yang rendah dan tepi positif dari sinyal detak akan mengisikan kata pada bus W ke dalam register B. Keluaran dua-keadaan dari register B kemudian menggerakkan penjumlah-pengurang, memasukkan bilangan yang akan dijumlahkan dengan atau dikurangkan dari isi akumulator. Register Keluaran Dalam Contoh 8-1 telah dibahas cara kerja register keluaran. Pada akhir operasi komputer, akumulator berisi jawaban dari persoalan yang diselesaikan. Pada saat ini, kita perlu memindahkan jawaban yang bersangkutan ke “dunia luar”. Untuk keperluan inilah register keluaran dipergunakan. Apabila EA tinggi dan L 0 rendah tepi positif sinyal detak berikutnya akan memasukkan kata dari akumulator ke dalam register keluaran. Register keluaran sering disebut bandar keluaran (output port) karena data yang telah diproses dapat meninggalkan komputer melalui register ini. Dalam mikrokomputer, bandar-bandar keluaran dihubungkan dengan rangkaian perantara (interface circuits) yang menggerakkan alat-alat periferal seperti: printer, tabung sinar-katoda (CRT), teletypewriter, dan sebagainya. (Rangkaian perantara menyiapkan data untuk menggerakkan setiap alat). Peraga Biner Peraga biner adalah suatu barisan yang terdiri dari 8 buah LED. Oleh karena setiap LED dihubungkan dengan sebuah flip-flop dari bandar keluaran, maka peraga biner akan menyajikan isi bandar keluaran, kita dapat melihat jawaban itu dalam bentuk biner. Rangkuman Unit kendali SAP-1 mengandung pencacah program, register instruksi, dan pengendali-pengurut yang menghasilkan kata kendali, sinyal-sinyal CLEAR, dan sinyal detak. ALU SAP-1 terdiri dari sebuh akumulator, sebuah penjumlah-pengurang, dan sebuah register B. Memori SAP-1 memiliki MAR dan sebuah RAM

Page 7: ARSITEKTUR KOMPUTER.pdf

16 x 8. Unit I/O mengandung saklar pemrograman masukan, bandar keluaran, dan peraga biner. 10-2 PERANGKAT INSTRUKSI Komputer merupakan timbunan perangkat-keras yang tak berguna sebelum diprogram operasinya. Ini berarti bahwa sebelum operasi komputer dimulai, instruksi-instruksi harus dimasukkan langkah demi langkah ke dalam memori. Sebelum dapat memprogram sebuah komputer, kita harus mempelajari dahulu perangkat instruksi (instruction set) dari komputer yang bersangkutan, yaitu operasi-operasi dasar yang dapat dilaksanakan. Perangkat instruksi komputer SAP-1 adalah sebagai berikut. LDA Sebagaimana telah disebutkan dalam Bab 9, kata-kata dalam memori dapat diberi lambang R0 R1, R2 dan setetusnya. Artinya, R0 disimpan pada alamat 0H, R1 disimpan pada alamat 1H, R2 disimpan pada alamat 2H, dan seterusnya. LDA merupakan singkatan dari “load the accumulator” (artinya = isilah akumulator). Instruksi LDA yang lengkap mengandung alamat heksadesimal dari data yang hendak diisikan. Sebagai contoh: LDA 8H, artinya: isilah akukulator dengan isi dari lokasi memori 8H”. Umpamanya R8 = 0000 0010 Maka eksekusi instruksi LDA 8H menghasilkan; A = 0000 0010 Begitu pula LDA AH berarti: “isilah akumulator dengan isi dari lokasi memori AH”, LDA FH, berarti “isilah akumulator dengan isi dari lokasi memori FH”, dan sebagainya. ADD Add adalah instruksi lain dari SAP-1. Instruksi ADD yang lengkap mengandung alamat dari kata yang hendak ditambahkan. Misalnya, ADD 9H berarti “tambahkan isi dari lokasi memori 9H pada isi akumolator.”, hasil penjumlahan ini akan menggantikan isi akumulator semula. Ikutilah contoh berikut ini. Kita umpamakan dalam akumulator tersimpan bilangan desimal 2, dan bilangan 3 desimal menempati lokasi memori 9H. Maka: A = 0000 0010 R9 = 0000 0011 Selama pelaksanaan instruksi ADD 9H akan berlangsung operasi sebagai berikut. Pertama, R9 disisikan ke dalam register B sehingga: B = 0000 0011 Dan pada waktu yang bersamaan, bagian penjumlah-pengurangan melakukan penjumlahan dari A dan B, menghasilkan jumlah SUM = 0000 0101 Kedua, hasil jumlahan ini diisikan ke dalam akumulator, sehingga A = 0000 0101

Page 8: ARSITEKTUR KOMPUTER.pdf

Urutan langkah operasi diatas digunakan untuk semua instruksi ADD; kata Ram yang dialamatkan akan masuk ke dalam register B dan keluaran dari penjumlah-pengurang memasuki akumulator. Dengan demikian, eksekusi instruksi ADD 9H adalah operasi menambahkan R9 pada isi akumulator, dan eksekusi instruksi ADD H berupa operasi menambahkan RF pada isi akumulator, dan sebagainya. SUB Instruksi SAP-1 yang lain lagi adalah SUB. Instruksi SUB yang lengkap disertai alamat dari kata yang hendak dikurangkan. Sebagai contoh, SUB CH berarti “kurangkan isi lokasi memori CH dari isi akumulator”, jawaban selisih yang diberikan oleh bagian penjumlah-pengurang kemudian menggantikan isi akumulator semula. Sebagai contoh yang kongkret; misalkan isi akumulator adalah angka desimal 7 dan lokasi memori CH berisi bilangan desimal 3. Maka A = 0000 0111 Rc = 0000 0011 Pelaksanaan instruksi SUB CH berlangsung sebagai berikut; Pertama, Rc diisikan ke dalam register B untuk memperoleh: B = 0000 0011 Pada waktu hampir bersamaan, bagian penjumlah-pengurang dari A dan B menghasilkan selisih:

DIFF = 0000 0100 Kedua, hasil pengurangan ini disimpan dalam akumulator, sehingga isinya menjadi A = 0000 0100 Urutan langkah operasi seperti di atas dipakai oleh semua instruksi SUB; kata RAM yang dialamatkan akan masuk keregister B dan keluaran dari penjumlah-pengurang masuk ke dalam akumulator. Jadi, eksekusi dari insrtuksi SUB CH adalah mengurangkan Rc dari isi akumulator, eksekusi dari instruksi SUB EH adalah mengurangkan RE dari isi akumulator, dan demikian seterusnya. Out Instruksi OUT memberitahu kepada komputer SAP-1 untuk memindahkan isi akumulator ke bandar keluaran. Sesudah instruksi OUT dilaksanakan, kita dapat melihat jawaban dari persoalan yang sedang diselesaikannya. Instruksi OUT ini sudah dalam bentuk yang lengkap; kita tidak perlu menyebutkan alamat tertentu dalam menggunakan OUT sebab instruksi ini tidak berhubungan dengan data di dalam memori. HLT HLT adalah singkatan dari “halt” (berhenti), Instruksi ini memberitahu kepada komputer untuk berhenti memproses data. HLT menandai akhir suatu program, serupa dengan tanda titik di akhir sebuah kalimat. Kita harus menggunakan instruksi HLT pada akhir setiap program SAP-1; jika tidak, kita akan mendapatkan sampah komputer (jawaban yang tak memiliki arti disebabkan proses yang lepas kendali).

Page 9: ARSITEKTUR KOMPUTER.pdf

TABEL 10-1. PERANGKAT INSTRUKSI SAP-1

Mnemonik Operasi

LDA Isikan data RAM ke dalam akumulator

ADD Tambahkan data RAM pada akumulator

SUB Kurangkan data RAM dari akumulator OUT Isikan data akumulator ke dalam register

keluaran HLT Hentikan pemrosesan

Instruksi HLT sudah merupakan bentuk instruksi yang lengkap; kita tidak perlu menyertakan kata RAM bilamana menggunakan HLT, sebab instruksi tersebut tidak melibatkan memori. Instruksi Rujukan Memori LDA, ADD, dan SUB disebut instruksi-instruksi rujukan memori (memory-reference instructions) karena semua instruksi yang bersangkutan menggunakan data yang tersimpan dalam memori OUT dan HLT, di pihak lain, bukan instruksi-instruksi rujukan-memori karena mereka tidak melibatkan data yang ada di dalam memori. Mnemonik LDA, ADD, SUB, OUT, dan HLT adalah perangkat instruksi bagi SAP-1. instruksi-instruksi singkat seperti ini disebut mnemonik (mnemonic, artinya pembantu ingatan). Mnemonik sangat popular dalam pekerjaan komputer karena singkatan-singkatan tersebut. Meningkatkan kita kepada operasi yang akan berlangsung pada waktu instruksi dilaksanakan. Tabel 10-1 merangkumkan perangkat instruksi SAP-1.

8080 dan 8085 8080 adalah mikroprosesor pertama yang dipakai secara luas. Mikroprosesor ini memiliki 72 instruksi. Versi yang telah dikembangkan dari 8080 adalah mikroprosesor 8085, dengan perangkat instruksi yang pada dasarnya sama. Untuk membusat SAP menjadi komputer yang berguna secara praktis, instruksi-instruksi SAP harus dibuat kompatibel ke atas dengan perangkat instruksi 8080/ 8085. Dengan kata lain, instruksi SAP-1: LDA, ADD, SUB, OUT dan HLT adalah instruksi-instruksi 8080/8085. Demikian pula, instruksi-instruksi SAP-2 dan SAP-3 akan merupakan bagian dari perangkat instruksi 8080/8085. Pemahaman instruksi SAP akan membuat anda siap untuk mempelajari 8080 dan 8085, dua jenis mikroprosesor yang sangat populer. Sekali anda memahami perangkat instruksi 8080/8085, anda dapat beralih kepada mikroprosesor yang lain.

Page 10: ARSITEKTUR KOMPUTER.pdf

CONTOH 10-1 Berikut ini adalah sebuah program SAP-1 dalam bentuk mnemonik. Alamat Mnemonik OH LDA 9H 1 H ADD AH 2 H ADD BH 3 H SUB CH 4 H OUT 5 H HLT Data dalam memori dengan alamat selanjutnya adalah Alamat Data 6 H FFH 7 H FFH 8 H FFH 9 H 01H AH 02H BH 03H CH 04H DH FFH EH FFH FH FFH Apa yang dilakukam oleh setiap instruksi ? JAWABAN ____________________________________ Program tersebut terdapat dalam bagian memori yang rendah , yaitu terletak pada lokasi dengan alamat 0H sampai 5H. Pelaksanaan instruksi pertama adalah mengisi akumulator dengan isi dari lokasi memori 9H, dengan ini isi akumulator menjadi : A = 01H Instruksi kedua adalah menambahkan isi lokasi memori AH pada isi akumulator untuk memperoleh isi akumulator yang baru yaitu : A = 01H +02H = 03H Begitu pula pelaksanaan instruksi yang ketiga akan menambahkan isi lokasi memori BH pada akumulator sehingga : A = 03H + 03H = 06H Instruksi SUB akan mengurangkan isi lokasi memori CH untuk menghasilkan ; A = 06H – 04H = 02H

Page 11: ARSITEKTUR KOMPUTER.pdf

TABEL 10-2. KODE OPERASI SAP-1

Mnemonik Kode Operasi

LDA 0000

ADD 0001

SUB 0100

OUT 1110

HLT 1111

Instruksi OUT memindahkan isi akumulator kepada bandar keluaran, dengan demikian peraga biner menyajikan angka 0000 0010 Instruksi HLT menghentikan pemrosesan data. _______________________________________ 10 –3 PEMROGAMAN SAP – 1 Untuk memasukkan instruksi dan kata-data kedalam memori SAP-1 kita harus menggunakan kode tertentu yang dapat ditafsirkan oleh komputer. Tabel 10–2 memperlihatkan kode yang dipakai dalam SAP-1. Bilangan 0000 mewakiliki LDA, 0001 untuk ADD, 0010 untuk SUB, 1110 untuk OUT, dan 1111 untuk HLT. Karena kode-kode ini memberitahu kepada komputer tentang operasi yang harus dilaksanakan. Maka kode yang bersangkutan disebut kode operasi (operation code) ; disingkat opcode).

Seperti telah dibahas sebelumnya, saklar-saklar alamat dan data dari gambar 9–7 memungkinkan pemrograman memori SAP-1. Berdasarkan rancangan rangkaian, saklar-saklar tersebut menghasilkan logika 1 untuk posisi keatas (U) dan logika 0 untuk posisi Ke bawah (D). Dalam peprograman saklar data dilaksanakan dengan satu instruksi, kode operasi yang akan diberikan sebagai nibble bagian atas, dan operand (pelengkap instruksi ) sebagai nibble bagian bawah. Sebagai contoh, misalkan kita akan menyimpan instruksi sebagai Berikut : alamat dengan instruksi :

Alamat Instruksi 0H LDA FH 1H ADD EH 2H HLT

Page 12: ARSITEKTUR KOMPUTER.pdf

Pertama, ubahlah setiap instruksi kedalam bentuk biner : LDA FH = 0000 1111

ADD EH = 0001 1110 HLT = 1111 XXXX Dalam instruksi pertama, 0000 adalah kode operasi untuk LDA, dan 1111 adalah ekivalen biner dari FH. Dalam instruksi kedua, 0001 adalah kode operasi untuk ADD, dan 1110 adalah ekivalen biner dari EH. Dalam instruksi ketiga, 1111 adalah kode operasi untuk HLT, dan XX adalah nibble yang tak diperdulikan karena HLT bukan instruksi rujukan – memori. Selanjutnya , susunlah saklar-saklat alamat dan data sebagai berikut : Alamat Data DDDD DDDD UUUU DDDU DDDU UUUD DDUD UUUU XXXX Setiap kali setelah selesai menyusun suatu alamat dan kata- data, tekanlah tombol “tulis” (write). Karena D menyimpan biner 0 dan U menyimpan biner 1, tiga lokasi memori yang pertama sekarang mempunyai isi : Alamat Data

0000 0000 1111 0001 0001 1110 0010 1111 XXXX

Suatu hal lagi yang perlu diketahui dalam penyusunan program adalah bahwa bahasa asembli (assembly language) menyangkut tata cara penulisan program dan mnemonik, sedangkan bahasa mesin (macine language) menyangkut tata cara penulisan dengan bilangan 0 dan 1, Contoh yang berikut, akan memperjelas perbedaan antara kedua bahasa tersebut. _________________________________ CONTOH 10-2 Terjemahkan program dari Contoh 10-1 ke dalam bahasa mesin SAP-1. JAWABAN _________________________________________________________ Program dari contoh 10-1 adalah

Alamat Instruksi 0H LDA 9H 1H ADD AH 2H ADD BH 3H SUB CH 4H OUT 5H HLT

Page 13: ARSITEKTUR KOMPUTER.pdf

Program diatas tertulis dalam Bahasa asembli. Untuk memperoleh program dalam bahasa mesin, kita harus memterjemahkannya kedalam bentuk deretan 0 dan 1 sebagai berikut : Alamat Instruksi

0000 0000 1001 0001 0001 1010 0010 0001 1011

0011 0010 1100 0100 1110 XXXX 0101 1111 XXXX Kini program tersebut sudah tertulis dalam bentuk bahasa mesin. Suatu program seperti contoh diatas yang ditulis dalam bahasa mesin disebut program obyek (obyect program). Program semula yang dituliskan dengan mnemonik-mnemonik disebut program sumber (source program ). Dalam SAP-1, operator harus menterjemahkan program sumber kedalam program obyek pada waktu pemrograman saklar-saklar alamat dan data. Perhatikan bahwa empat MSB dari sebuah instruksi bahasa mesin SAP-1 memberikan spesifikasi tentang operasinya, dan empat SLB dari instruksi itu memberikan alamat yang bersangkutan. Kadang-kadang MSB itu disebut sebagai medan instruksi (instruction field) dan LSB yang bersangkutan disebut sebagai medan alamat (address field), secara simbolik.

Instruksi = XXXX XXXX

Medan instruksi Medan Alamat ____________________________________________ CONTOH 10-3 Bagaimana cara memprogram SAP-1 untuk menyelesaikan persoalan aritmetik ini ? 16 + 20 + 24 – 32 Bilangan ini diberikan dalam bentuk desimal. JAWABAN _________________________________________________ Suatu cara penyelesaiannya adalah menggunakan program dari contoh terdahulu, yaitu program menyimpan data (16,20,24,32) pada lokasi memori 9H sampai CH. Dengan bantuan lampiran 1, kita dapat mengubah data desimal kedalam data heksa-desimal untuk mendapatkan versi bahasa asembli :

Page 14: ARSITEKTUR KOMPUTER.pdf

Alamat Isi 0H LDA 9H 1H ADD AH 2H ADD BH 3H SUB CH 4H OUT 5H HLT 6H XX 7H XX 8H XX 9H 10H AH 14H BH 18H CH 20H Dalam bahasa mesin data-data ini menjadi :

Alamat Isi 0000 0000 1001 0001 0001 1010 0010 0001 1011 0011 0010 1100 0100 1110 XXXX 0101 1111 XXXX 0110 XXXX XXXX 1000 XXXX XXXX 1001 0001 0000 1010 0001 0100 1011 0001 1000 1100 0010 0000

Perhatikan disini bahwa penyimpanan program mendahulu penyimpanan kata-kata data. Program menempati lokasi memori yang lebih rendah dan data menempati lokasi yang lebih tinggi. Hal ini penting dalam SAP-1 karena pencacah program menunjuk ke alamat 0000 untuk instruksi pertama, alamat 0001 untuk instruksi kedua, dan seterusnya.

CONTOH 10-4 Tuliskan program pada Contoh 10-3 dalam bentuk ringkas heksadesimal.

Page 15: ARSITEKTUR KOMPUTER.pdf

Jawaban Alamat Isi 0H 09H 1H 1AH 2H 1BH 3H 2CH 4H EXH 5H FXH 6H XXH 7H XXH 8H XXH 9H 10H AH 14H BH 18H CH 20H

Program dan data dalam versi ini masih dianggap sebagai bahasa mesin. Dal hal ini data negatif didisikan dalam bentuk komplemen-2. Misalnya, -03H dimasukkan sebagai FDH

10-4 SIKLUS PENGAMBILAN (FETCH CYCLE)

Unit kendali adalah kunci dari pengoperasian komputer secara otomatik. Unit kendali membangkitkan atau mengeluarkan kata-kata kendali untuk mengambil dan melaksanakan setiap instruksi. Pada waktu suatu instruksi diambil dan dilaksanakan, komputer akan melewati beberapa keadaan pewaktuan (timing state: disingkat T state = keadaan T), yaitu periode-periode waktu pada saat mana terjadi perubahan isi-isi register. Berikut ini akan kita pelajari lebih lanjut arti keadaan T tersebut.

Pencacah Putar (Lingkar) Kita telah membicarakan pencacah putar SAP-1 (lihat diagram skematik dalam gambar 8-16). Gambar 10-2a melukiskan simbol pencacah lingkar dengan keluaran.

T = T6T5T4T3T2T1 Pada permulaan operasi komputer kata lingkar T menunjukkan pulsa detak yang berturut-turut menghasilkan kata-kata lingkar:

T = 000010 T = 000100 T = 001000 T = 010000

T = 100000

Page 16: ARSITEKTUR KOMPUTER.pdf

Gambar 10-2 Pencacah Lingkar (a) simbol (b) Diagram Pewaktuan

Kemudian pencacah lingkar direset menjadi 000001, dan siklus yang sama akan berulang. Setiap kata lingkar merepresentasikan satu keadaan T Gambar 10-2b memperlihatkan pulsa-pulsa pewaktuan yang dikeluarkan oleh pencacah lingkar. Keadaan T1 berawal pada suatu tepi negatif pulsa detak dan berakhir pada tepi negatif yang berikutnya. Selama keadaan T ini, bit keluarkan T1 dari pencacah lingkar merupakan tingkat logika tinggi. Keadaan-keadaan Y yang selanjutnya berturut-turut T2 tinggi, disusul T3 tinggi, kemudian T4 tinggi, dan seterusnya. Sebagaimana dapat kita lihat, pencacah putar menghasilkan enam keadaan T. Setiap instruksi diambil dan dilaksanakan selama enam keadaan T ini. Perhatikan bahwa tepi CLK yang positif terjadi dipertengahan setiap keadaan T. Pentingnya hal ini akan dibicarakan kemudian.

Keadaan Alamat

Keadaan T1 disebut keadaan alamat (address State) karena alamat didalam pencacah program (PC ) dipindahkan kepada register alamat memori (MAR) selama keadaan ini. Gambar 10-3A memperlihatkan bagian-bagian komputer yang aktif selama keadaan T1 (bagian aktif digambarkan terang, dan bagian tidak aktif gelap).

Page 17: ARSITEKTUR KOMPUTER.pdf

Gambar 10-3 Siklus Pengambilan (a) Keadaan T1 (b) Keadaan T2 (c) Keadaan T3

Selama keadaan alamat Ep dan Lm merupakan bit-bit yang aktif ; sedangkan semua bit kendali yang lain tidak aktif. Ini berarti selama keadaan bagian pengendali – pengurut (CON) mengeluarkan kata kendali berbentuk

CON = Cp Ep L M CE L 1 E 1 L A EA Su Eu L B L o = 0 1 0 1 1 1 0 0 0 0 1 1

Selama keadaan ini

Keadaan Penambahan

Gambar 10-3b memperlihatkan bagian-bagian aktif dari SAP-1 selama keadaan T2. Keadaan ini disebut keadaan penambahan (increment state) karena hitungan pada encacaph program ditingkatkan (ditambah) selama periode ini. Selama keadaan penambahan bagian pengendali-pengurut menghasilkan sebuah kata-kendali berbentuk :

CON = Cp Ep L M CE L 1 E 1 L A EA Su Eu L B L o = 1 0 1 1 1 1 1 0 0 0 1 1

Terlihat disini bahwa CP adalah bit yang aktif

Keadaan Memori

Keadaan T3 disebut keadaan memori (memory state) karena instruksi pada RAM dengan alamat yang ditunjuk dipindahkan dari memori keregister instruksi. Gambar 10 –3c melukiskan bagian-bagian aktif dari SAP-1 selama keadaan memori ini. Selama keadaan ini bit-bit kendali yang aktif hanyalah CE dan L1, dan kata yang dikeluarkan oleh bagian pengendali- pengurut adalah

CON = Cp Ep L M CE L 1 E 1 L A EA Su Eu L B L o = 0 0 1 0 0 1 1 0 0 0 1 1

Page 18: ARSITEKTUR KOMPUTER.pdf

Siklus pengambilan

Keadaan-keadaan alamat, penambahan, dan memori disebut siklus pengambilan/ penjemputan (Fetch cycle) dari SAP-1. Selama keadaan alamat, EP dan L M aktif ini berarti pencacah program mengaktifkan MAR melalui bus W. Dalam gambar 10-2b, tepi positif sinyal detak muncul pada pertengahan keadaan alamat; peristiwa ini digunakan untuk mengisi MAR dengan isi PC. CP adalah satu-satunya bit kendali yang aktif selama keadaan penambahan. Pencacah program diaktifkan guna mencacah tepi positif pulsa detak. Dipertengahan keadaan penambahan, tepi positif sinyal detak diterima pencacah program dan ini meningkatkan cacahan dengan 1 angka . Dalam keadaan memori, bit-bit CE dan L 1 yang aktif. Dengan ini, kata RAM dengan alamat yang ditentukan mengaktifkan register instruksi bus W. Pada pertengahan keadaan memori, sebuah tepi positif sinyal detak akan mengisi register instruksi dengan kata RAM tadi.

10-5 SIKLUS EKSEKUSI (PELAKSANAAN)

Tiga keadaan berikutnya (T4, T5, dan T6) merupakan siklus eksekusi dari SAP-1. Transfer-transfer register yang terjadi selama siklus eksekusi bergantung pada macam instruksi yang sedang dieksekusi. Misalny, LDA 9H memerlukan operasi transfer register yang berbeda daripada ADD BH. Apa yang diuraikan berikut ini adalah rutin kendali (control routine), artinya rangkaian langkah kendali bagi instruksi-instruksi SAP-1 yang berbeda.

Rutin LDA

Demi kejelasan pembahasan, kita mengandaikan bahwa register intruksi (IR) telah diisi dengan instruksi LDA 9H:

IR = 0000 1001 Selama keadan T4, medan instruksi 0000 dikirim ke dalam pengendali-pengurut yang melakukan pendekodean; sedangkan medan alamat 1001 diisikan ke dalam MAR, Gambar 10-4a memperlihatkan bagian-bagian yang aktif dari SAP-1 selama keadaan T4. Perlu dicatat bahwa E1 dan LM1 adalah bit-bit yang aktif; dan bit-bit kendali yang lain tidak aktif.

Page 19: ARSITEKTUR KOMPUTER.pdf

Gambar 10-4 Rutin LDA (a) Keadaan T4 (b) Keadaan T5 (c) Keadaan T6

Selama keadaan T5 bit-bit CEdan LA menjadi aktif. Ini berarti kata data yang telah dilamatkan dalam memori akan diisi kedalam akumulator pada tepi positif pulsa detak yang berikutnya (lihat gambar 10-4b). T6 adalah keadaan tanpa operasi (no-operation; disingkat Nop). Selama keadaan eksekusi yang ketiga ini semua register dalam kondisi tidak aktif (gambar 10-4c). Ini berarti bahwa bagian pengendali-pengurut mengeluarkan kata dengan bit-bit yang bersesuaian dengan keadaan tidak aktif. Keadaan T6 dari rutin LDA adalah keadaan Nop.

Gambar 10-5 Diagram Pewaktuan Siklus Pengambilan LDA Gambar 10-5 memperlihatkan diagram pewaktuan untuk rutin pengambilan

dan rutin LDA. Selama keadaan T1, Ep dan L M menjadi aktif : dan tepi positif detak pada pertengahan keadaan ini akan memindahkan alamat didalam pencacah program

Page 20: ARSITEKTUR KOMPUTER.pdf

kedalam MAR. Selama keadaan T2, CP yang aktif dan hitungan pada pencacah program dinaikkan Pada waktu tibanya tepi positif. Selama keadaan T3, CEdan L 1 yang aktif; ketika muncul tepi positif dari sinyal pewaktu, kata RAM yang ditunjuk alamatnya dipindahkan ke register instruksi. Eksekusi LDA dimulai dengan keadaan T4, dimana L M dan E 1 yang aktif . Pada tepi positif detak, medan alamat didalam register instruksi dipindahkan ke MAR. Selama keadaan T5, CEdan L A menjadi aktif; ini berarti kata data RAM dengan alamat yang ditentukan itu ditransfer kepada akumulator pada tepi positif detak. Sebagaimana diketahui keadaan T6 dari rutin LDA adalah keadaan nop.

Rutin ADD

Umpamakan bahwa pada akhir siklus pengambilan register instruksi berisi kata ADD BH.

IR = 0001 1011

Selama keadaan T4 medan instruksi memasuki pengendali-pengurut dan medan alamat berpindah ke MAR (lihat gambar 10-6a). Dalam keadaan ini E 1 dan L M yang aktif .

Gambar 10-6 Rutin ADD dan SUB (a) Keadaan T4 (b) Keadaan T5 (c) Keadaan T6

Bit-bit kendali CE dan L B menjadi aktif selama keadaan T5. Ini memungkinkan kata RAM yang telah ditunjuk alamatnya itu untuk mempersiapkan register B (gambar 10-6b). Seperti biasa, pengisian terjadi pada pertengahan keadaan ketika tepi positif detak memasuki saluran-saluran CLK dari register B. Selama keadaan T6, Eu dan L A yang menjadi aktif. Dengan ini, bagian penjumlah-pengurang (Add/Sub) mempersiapkan akumulator (lihat gambar 10-6c). Pada pertengah keadaan ini, tepi positif detak mengisikan hasil jumlahan kedalam akumulator.

Page 21: ARSITEKTUR KOMPUTER.pdf

Kebetulan waktu siap (set up time) dan waktu tunda propagasi dalam rangkaian mempunyai harga yang tepat mencegah terjadinya keadaan pacu pada akumulator selama keadaan eksekusi terakhir. Bilamana tepi positif sinyal detak muncul dalam keadaan gambar 10-6c, maka isi akumulator akan berubah dan menyebabkan isi penjumlah-pengurang mengalami perubahan pula. Isi yang baru ini akan beredar kembali kemasukan akumulator, akan tetapi isi itu tidak akan tiba disana sebelum berlalunya dua kali waktu tunda propagasi sesudah munculnya tepi positif dari pulsa detak (satu waktu tunda propagasi pada akumulator dan satu lagi terjadi pada penjumlah-pengurang). Saat tibanya isi baru itu sudah terlalu terlembat untuk mempersiapkan akumulator. Akibatnya, akumulator terhindar dari keadaan pacu (yaitu pengisian lebih dari sekali pada tepi pulsa detak yang sama). Gambar 10-7 memperlihatkan diagram pewaktuan untuk siklus pengambilan dan rutin ADD. Rutin pengambilan ini serupa dengan yang telah dibahas sebelumnya; keadaan T1 mengisikan alamat PC kedalam MAR; keadaan T2 menaikkan hitungan pencacah program; keadaan T3 mengirimkan instruksi dari lokasi menuju ke register instruksi.

Gambar 10-9 Diagram Pewaktuan untuk Rutin ADD

Page 22: ARSITEKTUR KOMPUTER.pdf

Selama keadaan T4, c1 dan L M menjadi aktif. Pada tepi pulsa detak berikutnya, medan alamat didalam register instruksi berpindah ke MAR. Selama keadaan T5 CE, dan L B yang aktif. Oleh karena itu, kata RAM yang dialamatkan itu, diisikan kedalam register B dipertengahan keadaan ini. Selama keadaan T6 E U dan LA menjadi aktif, dan pada waktu tibanya tepi poositif, hasil jumlahan dari penjumlah-pengurang didalam akumulator.

Rutin SUB

Rutin Sub serupa dengan rutin ADD. Gambar 10-6a dan b melukiskan bagian-bagian yang aktif dari SAP-1 selama keadaan T4 dan T5. Selamna keadaan T6 , SU yang tinggi disalurkan kepada bagian penjumlah-pengurang dari gambar 10-6c. Diagram pewaktuan yang bersangkutan hampir identik dengan gambar 10-7. Bayangkan bahwa SU rendah selama keadaan T1 sampai T5 dan SU menjadi tinggi selama keadaan T6.

Rutin Out

Andaikan bahwa register instruksi berisi instruksi OUT pada akhir sebuah siklus pengambilan. Maka medan instruksi akan memasuki pengendali-pengurut guna pendekodeannya. Kemudian pengendali-pengurut mengeluarkan kata-kendali yang diperlukan mengeluarkan isi akumulator ke register keluaran.

Gambar 10-8 Keadaan T4 instruksi OUT

Gambar 10-8 memperlihatkan bagian-bagian aktif dari SAP=1 selama eksekusi dari sebuah instruksi out. Sehubungan dengan EA dan L O yang aktif, tepi

Page 23: ARSITEKTUR KOMPUTER.pdf

positif berikutnya dari sinyal detak akan memindahkan isi akumlator ke register keluaran selama keluaran T4. Pada keadaan T5 dan T6 tidak terjadi operasi (nop). Dalam gambar 10-9 ditunjukkan diagram pewaktuan untuk rutin pengambilan dan rutin OUT. Sekali lagi, siklus pengambilannya sama : keadaan alamat, keadaan penambahan dan keadaan memori. Selama keadaan T4, EA dan L O aktif ; dan kata akumulator dipindahkan keregister keluaran pada waktu tibanya tepi positif dari pulsa detak.

Gambar 10-9 Diagram Pewaktuan untuk Rutin OUT

HLT

instruksi HLT tidak membutuhkan rutin kendali karena tidak sebuahpun register terlihat dalam eksekusi dalam eksekusi instruksi bersangkutan. Bilamana IR berisi :

IR = 1111 XXXX

Page 24: ARSITEKTUR KOMPUTER.pdf

Medan instruksi 1111 akan memberi tahu pengendali-pengurut untuk menghentikan pemrosesan data. Pengendali-pengurut memberhentikan operasi komputer dengan menghentikan detak (rangkaiannya akan dibahas kemudian.

Siklus mesin dan siklus instruksi

SAP-1 memiliki enam keadaan T (tiga untuk pengambilan dan tiga untuk eksekusi). Enam keadaan tersebut dinamakan satu siklus mesin (lihat gambar 10-10a). Komputer membutuhkan satu siklus mesin untuk mengambil dan melaksanakan setiap instruksi. Pendetak SAP-1 berprekuensi KHz yang ekivalen dengan periode 1 ms. Dengan demikian, satu siklus mesin SAP-1 memerlukan waktu 6 ms. Mesin SAP-1 memerlukan waktu 6 ms.

Gambar 10-10. (a) Siklus Instruksi SAP-1 (b) Siklus Instruksi untuk Dua siklus Mesin

SAP-2 agak berbeda dari SAP-1 karena beberapa dari instruksinya memerlukan lebih dari satu siklus mesin untuk pengambilan dan eksekusinya gambar 10-10b memperlihatkan diagram pewaktuan bagi instruksi yang memerlukan dua siklus mesin. Tiga keadaan T yang pertama adalah siklus pengambilan ; namun untuk eksekusinya diperlukan sembilan keadaan T berikutnya. Ini disebabkan oleh karena instruksi dua-siklus mesin lebih rumit sehingga memerlukan keadaan T ekstra untuk menyelesaikan eksekusinya. Jumlah keadaan T yang diperlukan guna mengambil dan melaksanakan sebuah instruksi dinamakan siklus instruksi (instruktion cycle) . Dalam SAP-1, siklus instruksi sama dengan siklus mesin. Dalam SAP-2 dan mikrokomputer yang lain, siklus instruksi bisa sama dengan dua siklus mesin atau lebih, seperti ditunjukkan pada gambar 10-10b. Siklus instruksi untuk 8080 dan 8085 memerlukan satu sampai lima sikklus mesin (ini akan dibahas lebih lanjut kemudian).

Page 25: ARSITEKTUR KOMPUTER.pdf

_________________________________________

CONTOH 10-5 Pedoman pemrograman 8080/8085 menyebutkan bahwa komputer memerlukan tiga belas keadaan T guna mengambil dan melaksanakan instruksi LDA. Jika detak sistem berfrekuensi 2,5 MHz, berapa lama siklus instruksi itu ?

JAWABAN _________________________________________ Periode detak sama dengan Jadi, setiap keadaan T berlangsung selama 400 ns. Karena dibutuhkan tigabelas keadaan T untuk mengambil dan melaksanakan intruksi LDA, maka siklus instruksi berlangsung selama

13 x 400 ns = 5.200 ns = 5,2 s

_________________________________________

Contoh 10-6

Gambar 10-11 memperlihatkan enam keadaan T dari SAP-1. Tepi positif dari pulsa detak muncul pada pertengahan setiap keadaan T. Mengapa hal ini penting ? JAWABAN ____________________________________

SAP-1 adalah sebuah komputer berorganisasi – bus (tipe yang umum dewasa ini ). Ini memungkinkan register-registernya untuk berkomunikasi melalui bus-W. Akan tetapi pengisian yang dapat diandalkan dari sebuah register hanya terjadi bilamana waktu siap (set up time) dan waktu tahan (hold time) memenuhi syarat tertentu. Menunggu setengah siklus sebelum melakukan pengisian register sudah memenuhi syarat bagi waktu siap; dan menunggu setengah siklus sesudah pengisian register memenuhi pula syarat bagi waktu tahannyanya. Inilah sebabnya mengapa positif dari pulsa detak dirancang supaya tiba tepat pada pertengahan set up siklus T (gambar 10-11)

T = 1 = 1 = 400 ns f 2,5 MHz

Page 26: ARSITEKTUR KOMPUTER.pdf

Gambar 10-11. Tepi-tepi Positip Pulsa Detak (Pertengahan Periode Detak) Selain itu masih terdapat alasan lain bagi penundaan selama setengah siklus

sebelum pengisian suatu register. Pada waktu masukan ENABLE dari suatu register yang mengirimkan data sedang aktif, tiba-tiba isi register ini terdampar di bus W. kapasitansi sesat (liar) dan induktansi mendahulu yang timbul akan mencegah saluran bus dari tercapainya tingkat tegangan yang tepat secara sesaat. Dalam perkataan lain, pada bus W terjadi keadaan transien dan harus menunggu sampai berakhirnya proses transien ini untuk menjamin keabsahan data pada waktu pengisian. Penundaan setengah siklus seblum me masukkan tepi positif pulsa pendetakan memberi kesempatan kepada data untuk mencapai keadaan mantap sebelum diisikan.

10-6 MIKRO PROGRAM SAP-1

Kita sebentar lagi akan melakukan analisis dari diagram skematiks dari komputer SAP-1, akan tetapi sebelumnya eksekusi dari instruksi-instruksi SAP-1 perlu dirangkumkan dalam sebuah tabel yang rapi yang dinamakn mikro program.

Mikroinstruksi

Pengendali-pengurut mengirimkan kata-kata kendali dengan laju satu kata dalam setiap keadaan T atau satu siklus detak. Kata-kata ini merupakan pengarahan kepada komputer tentang operasi yang harus dilakukan oleh bagian lain dari komputer. Karena masing-masing kata-kata kendali itu menimbulkan satu langkah kecil dalam pemrosesan data, maka setiap kata kendali disebut suatu mikroinstruksi. Bila kita lihat kembali diagram blok SAP-1 (gambar 10-1), kita dapat membayangkan adanya suatu arus lunak dari sederet mikro instruksi yang mengalir keluar dari pengendali-pengurut menuju kerangkaian-rangkaian SAP-1 yang lain.

Makroinstruksi

Instruksi-instruksi yang pernah kita pergunakan dalam pemrogaman (LDA. ADD. SUB,….) kadang-kadang disebut makroinstruksi untuk membedakannya dari mikroinstruksi. Setiap makroinstruksi SAP-1 tersusun dari mikroinstruksi. Setiap makroinstruksi SAP=1 tersusun dari tiga mikroinstruksi. Misalnya makroinstruksi LDA terdiri dari tiga macam mikroinstruksi seperti tercantum dalam tabel 10-3. Guna

Page 27: ARSITEKTUR KOMPUTER.pdf

menyederhanakan bentuk mikroinstruksi itu kita dapat menggunakan bentuk heksadesimal sebagaimana terlihat pada tabel 10-4

Tabel 10-3 Makro Keadaan Cp Ep L M CE L 1 E 1 L A EA SU EU L B L O Yang aktif

LDA T4 0 0 0 1 1 0 1 0 0 0 1 1 L M, E 1 T5 0 0 1 0 1 1 0 0 0 0 1 1 CE, L A T6 0 0 1 1 1 1 1 0 0 0 1 1 Tidak ada

Tabel 10-4

Tabel 10-5 Mikroprogram SAP-1

Mikro program SAP-1 disajikan dalam tabel 10-5 yang merupakan daftar dari setiap makro instruksi dan mikroinstruksi-mikroinstruksi yang diperlukan bagi pelaksanaannya. Tabel ini merangkum rutin-rutin eksekusi untuk instruksi SAP-1. Tabel yang sama dapat pula dipakai bagi perangkat instruksi tingkat lebih lanjut.

Page 28: ARSITEKTUR KOMPUTER.pdf

Tabel 10-7. ROM ALAMAT

Alamat Isi Rutin 0000 0011 LDA 0001 0110 ADD 0010 1001 SUB 0011 XXXX Tidak ada 0100 XXXX Tidak ada 0101 XXXX Tidak ada 0110 XXXX Tidak ada 0111 XXXX Tidak ada 1000 XXXX Tidak ada 1001 XXXX Tidak ada 1010 XXXX Tidak ada 1011 XXXX Tidak ada 1100 XXXX Tidak ada 1101 XXXX Tidak ada 1110 1100 OUT 1111 XXXX Tidak ada

TABEL 10-6. ROM KENDALI SAP-1

Alamat Isi Rutin Bit aktif 0H 5E3H Fetch Ep, L M 1H BE3H Cp 2H 263H CE, L 1 3H 1A3H LDA L M, E 1 4H 2C3H CE, L A 5H 3E3H Tidak ada 6H 1A3H ADD L M, E 1 7H 2E1H CE, L B 8H 3C7H L A, E u 9H 1A3H SUB L M, E 1 AH 2E1H CE, L B BH 3CFH L A, S u, E u CH 3F2H OUT E u, L o DH 3E3H Tidak ada EH 3E3H Tidak ada FH X X Tidak dipakai

CON = Cp Ep L M CE L 1 E 1 L A EA Su Eu L B L o

Page 29: ARSITEKTUR KOMPUTER.pdf

10-7 DIAGRAM SKEMATIK SAP-1

Dalam pasal ini kita akan mengkaji diagram skematik lengkap dari SAP-1. Gambar 10-12 sampai 10-15 memperlihatkan semua serpih, semua rangkaian, dan sinyal-sinyal yang terjadi didalamnya. Anda harus menggunakan gambar-gambar ini dalam mengikuti seluruh pembahasan selanjutnya. Lampiran 3 memberikan penjelasan tambahan untuk beberapa serpih yang lebih rumit.

Pencacah Program

Serpih-serpih C1, C2 dan C3 dari gambar 10-12 adalah pencacah program. Serpih C1, yaitu IC 74LS5107, adalah flip-flop JK majikan–budak berjumlah rangkap yang menghasilkan 2 - bit alamat bagian atas. Serpih C2, yaitu IC 74LS107 yang lain, menghasilkan 2 - bit alamat bagian bawah. Serpih C3 yaitu IC 74LS126, adalah susunan empat saklar tiga – keadaan yang normalnya terbuka; saklar ini berfungsi sebagai keluaran – keadaan dari pencacah program. Pada awal operasi komputer, CLR yang rendah mengosongkan (mereset) pencacah program menjadi 0000. Selama keadaan T1 , EP yang tinggi akan menempatkan alamat pada bus W. Selama keadaan T2 CP yang tinggi dikirimkan kepencacah program untuk menambaha cacahannya ketika merima tepi negatif sinyal CLK (ekivalen dengan tepi positif CLK) pada pertengahan keadaan T2 ini. Pencacah program berada pada kondisi tidak aktif selama keadaan T3 sampai T6.

MAR

Serpih C4, atau IC 74LS173, adalah sebuah register bufer 4 bit yang berfungsi sebagai MAR. Keluaran tiga-keadaan diubah menjadi menjadi keluaran dua-keadaan dengan mengetanahkan penyemat 1 dan 2. Keluaran dari MAR tidak perlu mempunyai modus tiga-keadaan mengingat keluaran MAR ini tidak disambungkan ke bus W.

Multiplekser 2-ke-1 Serpih C5 yang merupakan ID 74LS157 adalah sebuah multiplekser nibble 2-ke-1. Nibble sebelah kiri (penyemat 14, 11, 5,2) berasal dari register saklar alamat (S1). Nibble sebelah kanan (penyemat 13, 10, 6, 3) berasal dari MAR. Saklar RUN-PROG (S2) memilih nibble yang akan diteruskan kepada keluaran serpih C5. Apabila S2 pada posisi PROG maka pemilihan jatuh pada nibble yang berasal dari register saklar alamat. Apabila S2 pada posisi RUN, nibble yang terpilih adalah yang keluar dari MAR.

Page 30: ARSITEKTUR KOMPUTER.pdf

Gambar 10-12 . Pencacah Program, Memori dan Register Instruksi

Page 31: ARSITEKTUR KOMPUTER.pdf

Gambar 10-13. Register A dan B, Penjumlah-Pengurang dan Rangkaian Keluaran

Page 32: ARSITEKTUR KOMPUTER.pdf

RAM 16 x 8

Serpih C6 dan C7 adalah IC 74189. Setiap serpih merupakan sebuah RAM statik 16 x 4. Bersama-sama, kedua serpih menghasilkan sebuah memori baca-tulis (read-write memory; RAM) 18 x 8. S3 adalah register saklar data (8-bit), dan S4 merupakan saklar baca-tulis (saklar tombol-tekan). Untuk memprogram memori, S2 dipasang pada posisi PROG; yang akan membuat masukan CE rendah (penyemat 2). Saklar data dan alamat kemudian diatur supaya memberikan kata-data dan kata alamat yang benar. Dengan menekan sejenak tombol dari saklar baca-tulis akan dihasilkan WE yang rendah (penyemat 3) dan pengisian memori. Sesudah program dan data berada di dalam memori, saklar RUN-PROG (S2) dipindahkan ke posisi RUN untuk mempersiapkan operasi komputer.

Register Instruksi

Serpih C8 dan C9 adalah IC 74LS173. Setiap serpih merupakan sebuah register bufer tiga-keadaan dengan 4-bit. Dua serpih ini berfungsi sebagai register instruksi. Dengan menghubungkan ke tanah penyemat 1 dan 2 dari C8, keluaran tiga-keadaan akan diubah menjadi keluaran dua-keadaan, I1 I6 I5 I4. Nibble ini akan diteruskan kepada dekoder instruksi di dalam pengendali-pengurut. Sinyal E1 mengendalikan keluaran C9, yaitu nibble bagian bawah dari register instruksi. Bilamana E 1 menjadi rendah, nibble ini akan ditempatkan pada bus W.

Akumulator

Serpih C10 dan C11 yang merupakan IC74LS173, adalah akumulator (lihat Gambar 10-3). Penyemat 1 dan 2 pada kedua serpih itu diketanahkan untuk memperoleh keluaran dua-keadaan yang berhubungan dengan rangkaian penjumlah-pengurang. Serpih C12 dan C13 adalah IC 74LS126; saklar tiga–keadaan ini menempatkan isi akumulator pada bus W apabila EA tinggi

Penjumlah-Pengurang

Serpih C14 dan C15 adalah 1C 74LS86. gerbang EXCLUSIVE – OR ini merupakan pembalik (inverter) terkendali. Apabila SU menjadi rendah, isi dari register B akan dikeluarkan. Bilamana SU tinggi yang dikeluarkan adalah komplement – 1 dari isi register, dan angka 1 ditambahkan pada LSB untuk memperoleh komplement - 2.

Serpih C16 dan C17 adalah 1C 74LS83, dan masing-masing merupakan sebuah penjumlah-penuh 4-bit yang disusun menjadi rangkaian penjumlah atau pengurang 8-bit. Serpih C18 dan C19 yang merupakan 1C 74LS126, mengubah jawaban 8-bit ini menjadi keluaran tiga-keadaan untuk menjalankan bus W.

Page 33: ARSITEKTUR KOMPUTER.pdf

Register B dan register Keluaran

Serpih-serpih C20 dan C21 yang merupakan 1C 74LS173, bersama-sama membentuk register B. Register ini mengandung data yang akan dijumlahkan atau dikurangkan dengan isi akumulator. Penyemat 1 dan 2 pada kedua serpih diketanahkan untuk menghasilkan keluaran dua – keadaan yang dihubungkan dengan rangkaian penjumlah data pengurang. Serpih-serpih C22 dan C23 adalah 1C 74LS173 dan membentuk register keluaran, yang berfungsi mengeluarkan peraga biner untuk menyajikan data yang telah diproses.

Debounser (Peredam Pelantingan) Clear – Start

Pada Gambar 10-14 debounser “clear-start” menghasilkan dua keluaran : CLR untuk register instruksi dan CLR untuk pencacah program serta pencacah lingkar. CLR juga disalurkan kepada C29, yaitu flip-flop yang mengaktifkan detak. S5 merupakan sebuah saklar tombol-tekan. Apabila ditekan, kedudukan saklar berpindah keposisi CLEAR, dan membangkitkan sinyal CLR tinggi dan CLR rendah. Bila S5 dilepaskan, kedudukan saklar kembali ke posisi START, menghasilkan CLR rendah dan CLR tinggi. Perhatikan bahwa separuh dari isi serpih C24 digunakan dalam rangkaian debounser clear – start dan separuh yang lain digunakan dalam rangkaian debounser langkah-tunggal (single – step). Serpih C24 adalah 1C 7400, yaitu kemasan empat gerbang NAND 2- masukan.

Debounser Langkah- Tunggal

SAP-1 dapat beroperasi dalam dua ragam yaitu ragam manual dan ragam, otomatik. Dalam ragam manual, kita menekan dan melepaskan tombol S6 guna membangkitkan satu pulsa detak. Bilamana S6 ditekan, CLK menjadi tinggi : dan ketika dilepaskan, CLK menjadi rendah. Dengan katalain debounser langkah- tunggal dari Gambar 10-14 membangkitkan satu keadaan T pada saat kita menekan dan melepaskan tombol. Ini memungkinkan kita untuk menelusuri melalui keadaan-keadaan T yang berbeda selama melakukan trouble shooting mencari sumber kesulitan dan mengatasinya atau debuging (mengidentifikasi kesalahan dalam program mengidentifikasikan perangkat lunak/perangkat keras/trouble shoot..

Debounser Manual – Auto

Saklar S7 adalah sebuah saklar single-pole double Throw (disingkat SPDT) yang dapat bertahan pada posisi MANUAL atau pada posisi AUTO. Dalam posisi

Page 34: ARSITEKTUR KOMPUTER.pdf

MANUAL, tombol langkah-tunggal (single step) yang aktif. Bilamana

Gambar 10-14. Rangkaian-Rangkaian Catu Daya, Detak dan Clear

saklar dalam Posisi AUTO komputer akan beroperasi Secara otomatik. Dua dari gerbang NAND dalam serpih (C26 digunakan untuk menghindari efek pelantingan (bouncing) pada saklar MANUAL – AUTO. Dua gerbang NAND lainnya dari C26 merupakan bagian dari rangkaian NAND-NAND yang mengemudikan detak langkah–tunggal atau detak otomatik untuk memberikan keluaran CLK dan CLK.

Bufer Detak

Keluaran pada penyemat 11 dari C26 menggerakkan bufer-detak (clock buffers). Seperti dapat dilihat daslam Gambar 10-14, dua buah imverter digunakan untuk menghasilkan keluaran CLK dan sebuah inverter untuk keluaran CLK. Tidak seperti kebanyakan Serpih-serpih yang lain, C27 adalah 1C standar TTL dan bukan piranti Schottky daya rendah (lihat daftar komponen SAP-1, Lampiran 4). Penggunaan standar TTL disebabkan oleh keperluan untuk menggerakkan 20 beban TTL Schottky daya – rendah, sebagaimana ditunjukkan dalam Tabel 4-5.

Page 35: ARSITEKTUR KOMPUTER.pdf

Jika anda memeriksa lembaran data 74LS107 dan 74LS173 mengenai arus masukan, anda dapat menghitung jumlah beban TTL Schottky daya- rendah (LS) pada sinyal detak dan sinyal kosong (clear) sebagai berikut.

CLK = 19 beban LS CLK = 2 beban LS CLR = 1 beban LS CLR = 20 beban LS

Ini berarti sinyal-sinyal keluar CLK dan CLK dari C24 (standar TTL) cukup memadai untuk menggerakkan beban-beban TTL Schottky daya rendah . Demikian pula sinyal-sinyal keluaran CLR dan CLR dari C24 (standar TTL) dapat menggerakkan beban-bebannya.

Rangkaian Detak Dan Catu Daya

Serpih C28 adalah sebuah pewaktu (timer) 555. 1C ini mengeluarkan gelombang persegi berprekuensi 2 kHz dengan siklus kerja (duty cycle) 75 persen. Sebagaimana dibahas sebelumnya flip-flop yang menghdiupkan detak (start-the clock flip-flop), C29, membagi frekuensi sinyal tersebut menjadi 1 kHz dan menurunkan siklus kerjanya menjadi 50 persen. Rangkaian catu daya (power supply), terdiri dari sebuah penyearah jembatan gelombang penuh (full- wave bridge rectifier) dengan sebuah penapis (filter) kapasitor. Tegangan dc yang melalui kapasitor 1000 F ini berharga sekitar 20 V. Serpih C30, sebuah 1C LM340T-5,adalah sebuah regulator tegangan yang menghasilkan keluaran stabil + 5V.

Dekoder Instruksi

Serpih C31 yang merupakan sebuah inverter heks, menghasilkan sinyal komplemen dari bit-bit kode-operasi, I 7 I6 I5 I4 (lihat Gambar 10-15). Lalu, serpih C32, C33 dan C34 menterjemahkan kode – operasi menjadi lima sinyal keluaran : LDA, ADD, SUB, OUT dan HLT. Pelu diingat bahwa hanya satu diantara sinyal-sinyal ini yang menjadi aktif pada sesuatu saat. (HLT aktif – rendah, dan yang lain aktif – tinggi).

Page 36: ARSITEKTUR KOMPUTER.pdf

Gambar 10-15. Dekoder Instruksi, Pencacah Lingkar dan Matriks Kendali

Page 37: ARSITEKTUR KOMPUTER.pdf

Pada waktu instruksi HLT berada pada register instruksi, bit-bit I7I6 I5I4 berharga 1111 dari HLT rendah. Sinyal ini kembali memasuki C25 (detak langkah – tunggal ) dan C29 (detak otomatik). Baik dalam ragam MANUAL maupun ragam AUTO, detak akan berhenti sebagai akibatnya dan Operasi komputerpun akan berakhir.

Pencacah Lingkar

Pencacah lingkar, kadang-kadang disebut Pula pencacah keadaan (state counter) , tersusun dari tiga buah serpih, C36.C37 dan C38, setiap serpih adalah 1C 74LS107, yang tak lain adalah sebuah flip-flop JK majikan – budak. Pencacah ini dapat direset dengan menekan tombol kosong – mulai (S5). Flip-flop Q0 diberi pembalik sehingga keluaran Q (C38, penyemat 6) menggerakkan masukan J dari flip-flop Q1 (C38,penyemat 1). Sebagai akibatnya, keluaran I1 merupakan tingkat logika tinggi pada saat awalnya. Sinyal CLK menggerakkan Suatu masukan aktif-rendah. Ini berarti tepi negatif sinyal CLK akan mengawali setiap keadaan T. Setengah siklus kemudian, tepi positif dari sinyal CLK akan menyebabkan pengisian register sebagaimana telah dijelaskan sebelumnya.

Matriks Kendali

Sinyal-sinyal LDA, ADD, SUB dan OUT yang berasal dari dekoder instruksi menggerakkan matriks kendali (control matrix) yang terdiri dari C39 sampai C48. Pada waktu yang sama, sinyal-sinyal dari pencacah lingkar, yaitu T1 sampai T6, akan menggerakkan matriks tersebut (rangkaian yang menerima dua kelompok bit dari sumber yang berbeda) Matriks ini menghasil sinyal CON yang berupa mikroinstruksi yang memberitahu komputer tentang apa yang harus dikerjakan.

Dalam Gambar 10-15 pertama-tama T1 yang menjadi tinggi, kemudian T2, lalu T3, dan seterusnya. Analisis matriks kendali ini dapat diikuti sebagai berikut. T1 yang tinggi menghasilkan Ep rendah dan L M rendah (keadaan alamat); T2 yang tinggi menghasilkan Cp tinggi (keadaan penambahan); dan T3 yang tinggi menghasilkan CE rendah dan L 1 rendah (keadaan memori). Jadi tiga keadaan T yang pertama merupakan siklus pengambilan di dalam SAP-1. Dalam rotasi ringkas, kata-kata CON bagi siklus pengambilan adalah

___________________________________ Keadaan CON Bit-bit aktif ___________________________________ T1 5E3H Ep, L M T2 BE3H CP T3 263H CE, L 1 ___________________________________

Page 38: ARSITEKTUR KOMPUTER.pdf

Selama keadaan eksekusi, T4 dan T6 menjadi tinggi secara berurutan. Pada waktu yang sama, hanya satu di antara sinyal-sinyal yang telah didekode (LDA sampai OUT) itu berada dalam keadaan tinggi. Karena itu, matriks kendali secara otomatik mengarahkan bit-bit aktif menuju ke saluran kendali keluaran yang tepat. Misalnya, pada waktu LDA tinggi, gerbang-gerbang NAND 2-masukan yang aktif hanyalah terdiri dari gerbang pertama, gerbang keempat, gerbang ketujuh, dan gerbang kesepuluh. Bilamana T4 tinggi, gerbang NAND pertama dan ketujuh akan diaktifkan, dan ini menghasilkan L M rendah dan E 1 rendah (mengisi MAR dengan medan alamat). Pada waktu T5 tinggi, gerbang NAND keempat dan kesepuluh diaktifkan ini menghasilkan CE rendah dan L A rendah (mengisikan data RAM ke dalam akumulator). Misalnya, ketika T6 menjadi tinggi, tidak ada satupun diantara bit-bit kendali yang aktif (nop). Anda harus menganalisis operasi matriks kendali selama keadaan eksekusi dari kemungkinan-kemungkinan yang lain; yaitu ADD, SUB, dan OUT yang tinggi. Dengan demikian, anda akan menyetujui bahwa matriks kendali dapat membangkitkan mikroinstruksi ADD, SUB, dan OUT yang diperlihatkan pada Tabel 10-5 (mikroprogram SAP-1).

Operasi

Setiap kali sebelum komputer bekerja, operator memasukkan program dan data ke dalam memori SAP-1. Program tersebut menempati lokasi-lokasi memeori yang rendah (awal) dan data disimpan pada lokasi-lokasi memori yang berikutnya (lebih tinggi). Selanjutnya, operator menekan dan melepaskan kembali tombol- CLEAR. Sebagai akibatnya, sinyal CLK dan sinyal CLK akan menggerakkan semua register dan pencacah. Mikroinstruksi yang dikeluarkan oleh pengendali-pengendali akan menentukan langkah-langkah yang harus dilaksanakan pada setiap tepi CLK yang positif. Siklus mesin dalam SAP-1 selalu dimulai dengan siklus pengambilan. Siklus pengambilan meliputi keadaan-keadaan T1, T2, dan T3, masing-masing merupakan keadaan alamat, keadaan penambahan dan keadaan memori. Pada akhir siklus pengambilan, instruksi disimpan dalam register instruksi. Sesudah medan instruksi didekode, matriks kendali secara otomatis membangkitkan rutin eksekusi yang tepat. Di akhir siklus eksekusi, pencacah lingkar ( putar) mengalami reset dan selanjutnya dimulai siklus mesin yang berikutnya. Pemrosessan data akan berakhir bilamana instruksi HLT diisikan ke dalam register instruksi.

10-8 PANGADAAN MIKROPROGRAM

Matriks kendali dari Gambar 10-15 merupakan suatu cara membangkitkan mikroinstruksi yang dibutuhkan dalam setiap siklus eksekusi. Dengan perangkat intruksi yang lebih besar, matriks kendali menjadi sangat rumit dan memerlukan ratusan bahkan ribuan gerbang logika. Demikianlah, mengapa pengendalian secara perangkat-keras (gerbang-gerbang matriks disambungkan bersama) ini memaksa para perancang mencari alternatif lain untuk menghasilkan kata-kata kendali yang menjalankan komputer.

Page 39: ARSITEKTUR KOMPUTER.pdf

Cara yang dikenal dengan sebutan mikroprogramming merupakan alternatif tersebut. Gagasan dasar dari cara ini adalah menyimpan mikroprogram dalam sebuah ROM, dan bukan membangkitkankannya dengan sebuah matriks kendali. Pendekatan ini telah menyederhanakan penyusunan rangkaian pengendali-pengurut.

Penyimpanan Mikroprogram

Dengan memberi alamat dan menyertakan rutin pengambilan. Kita dapat menyusun sebuah tabel lengkap dari mikroinstruksi SAP-1 (Tabel 10-6). Mikroinstruksi ini dapat disimpan di dalam sebuah ROM kendali lengkap dengan rutin pengambilan pada alamat 0H sampai 5H, rutin ADD pada alamat 6H sampai 8H, rutin SUB pada alamat 9H sampai BH, dan rutin OUT pada alamat CH sampai EH. Untuk mengakses yang manapun, kita perlu memberikan alamat yang tepat. Misalnya, untuk mendapatkan rutin ADD, kita harus memberikan alamat 6H, 7H, 8H. Untuk mendapatkan rutin OUT, harus diberikan alamnat CH, DH, dan EH. Dengan ini, dalam mengakses suatu rutin siperlukan tiga langkah sbb: 1. Mengetahui alamat awal dari rutin yang dimaksud 2. Menelusuri dengan tepat semua alamat dari rutin itu 3. Memberikan alamat kepada ROM kendali. ROM Alamat Gambar 10-16 memperlihatkan bagaimana melakukan mikroprogramming bagi komputer SAP-1. Dalam sistem ini terdapat sebuah ROM alamat, sebuah pencacah yang dapat direset, dan sebuah ROM kendali. ROM alamat mengandung alamat awal dari setiap rutin dalam Tabel 10-6. Dengan kata lain, ROM alamar berisi semua data dalam Tabel 10-7. Sebagaimana terlihat, alamat awal dari rutin LDA adalah 0011, alamat awal dari rutin ADD adalah 0110, dan sebagainya. Bilamana bit-bit kode operasi I7 I6 I5 I4 menggerakkan ROM maka alamat awal dari rutin akan dibangkitkan sebagai contoh, jika instruksi ADD sedang dilaksanakan, maka I7 I6 I5 I4 menunjukkan kata 0001, Ini merupakan masukan kepada ROM alamat, dan keluaran ROM ini adalah 0110.

Page 40: ARSITEKTUR KOMPUTER.pdf

Gambar 10-16. Kendali SAP-1 yang dibuat dengan “Micro Programming” Pencacah yang dapat dipreset Apabila T3 tinggi, masukan LOAD dari pencacah Dapat dipreset menjadi tinggi dan pencacah akan mengisikan alamat awal yang berasal dari ROM alamat. Selama keadaan-keadaan T yang lain pencacah melakukan pencacahan . Mula-mula sinyal CLR tinggi yang berasal dari debounser kosong-mulai (clear- start) dideferensiasi menjadi paku tegangan positif yang tajam dan sinyal ini akan mereset pencacah. Pada waktu komputer mulai bekerja keluaran pencacah menunjukkan :0000 selama keadaan T1 0001 selama keadaan T2 , dan 0010 selama keadaan T3, setiap kali berlangsung siklus pengambilan, hal yang serupa akan terulang karena selalu akan dikeluarkan kata-kata 0000, 0001, dan 0010 dari pencacah selama keadaan T1, T2, T3. Kode operasi (op code) dalam register instruksi mengendalikan siklus eksekusi. Jika instruksi ADD telah diambil, bit-bit I7 I6 I5 I4 = 0001. Bit-bit kode operasi ini menggerakkan ROM alamat, menghasilkan keluaran 0110 (Tabel 10-7). Alamat awal ini merupakan masukan ke pencacah pre-setabel ( yang dapat dipreset). Ketika T3 menjadi tinggi, tepi pulsa datak negatif yang berikutnya akan mengisikan 0110 kedalam pencacah presetabel tersebut. Pencacah kini dalam kondisi preset, dan pencacahan dapat memulai lagi dari alamat rutin ADD. Keluaran pencacah menunjukkan angka 0110 selama keadaan T4, 0111 selama keadaan T5 dan 1000 selama keadaan T6 . Pada waktu dimulainya keadaan T1, tepi awal dari sinyal T1 didiferensiasi menjadi paku tegangan positif tajam yang akan mereset pencacah pada 0000 : yaitu alamat awal dari sikllus pengambilan. Selanjutnya siklus mesin yang baru akan dimulai lagi.

Page 41: ARSITEKTUR KOMPUTER.pdf

ROM Kendali ROM kendali menyimpan mikroinstruksi SAP-1. Selama berlangsung siklus pengambilan. ROM ini menerima alamat 0000, 0001 dan 0010. Karena itu, keluarannya adalah SE3H BE3H 263H Mikroinstruksi yang tertera dalam tabel 10-6 ini menghasilkan keadaan alamat, keadaan penambahan dan keadaan memori. Selama sebuah instruksi ADD dilaksanakan ROM kendali menerima alamat 0110, 0111 dan 1000 selama siklus eksekusi. Ini menghasilkan keluaran : 1A3H 2E1H

3C7H

Mikroinstruksi diatas melaksanakan operasi penjumlahan sebagaimana telah dibahas sebelumnya. Sebagai contoh yang lain, kita umpamakan instruksi OUT yang dilaksanakan. Maka kode operasi yang bersangkutan adalah 1110 sedangkan alamat awalnya adalah 1110 (Tabel 10-7). Selama siklus eksekusi berlangsung, keluaran pencacah adalah 1100, 1101 dan 1110. Sebagai akibatnya keluaran ROM kendali adalah 3F2H, 3E3H, dan 3E3H (Tabel 10-6). Rutin ini memindahkan isi akumulator kepintu keluaran. Siklus Mesin Variabel Mikro instruksi 3E3H dalam Tabel 10-6 menyatakan nop, dan ini muncul satu kali dalam rutin LBA dan dua kali dalam rutin OUT. Kadang nop ini dipakai dalam SAP-1 untuk mendapatkan satu siklus mesin yang tetap (fixed machine cycle) bagi semua instruksi . Dengan kata lain setiap siklus mesin memerlukan tepat enam keadaan T untuk jenis instruksi apapun. Bagi beberapa komputer adanya sebuah siklus mesin yang tetap mendatangkan keuntungan. Akan tetapi, bilamana kecepatan yang diutamakan, adanya keadaan nop akan memboroskan waktu, dan karena itu dapat dihilangkan. Satu cara mempercepat operasi komputer SAP-1 adalah dengan melompati (melewati ) setiap keadaan T yang mengandung nop. Kita dapat menghapuskan keadaan nop melalui perancangan ulang dari rangkaian Gambar 10-16 Ini akan dapat mempersingkat siklus mesin dari instruksi LDA menjadi lima keadaan (T1, T2, T4 dan T5). Dan siklus instruksi OUT menjadi empat keadaan T (T1, T2, T3, dan T4).

Page 42: ARSITEKTUR KOMPUTER.pdf

Gambar 10-17. Siklus Mesin Variabel

Page 43: ARSITEKTUR KOMPUTER.pdf

Gambar 10-17 memperlihatkan suatu cara menyusun siklus mesin variabel (Variabel mashine cycle: siklusmesin yang dapat diubah-ubah/ diatur). Untuk intruksi LDA, operasi tetap sama dari T1 sampai T5. Ketika keadaan T6 dimulai, ROM kendali menghasilkan keluaran 3E3H (mikroinstruksi nop). Gerbang NAND dengan segera akan mendeteksi keadaan nop ini dan menghasilkan sinyal keluaran NOP. Sinyal NOP ini diumpanbalikkan ke pencacah lingkar melalui sebuah gerbang AND, seperti ditunjukkan oleh gambar 10-18. Sinyal ini mereset pencacah lingkar kepada keadaan T1, dan dengan demikian siklus mesin yang baru akan dimulai kembali. Operasi di atas telah mengurangi siklus mesin instruksi LDA dari enam keadaan menjadi lima keadaan.

Gambar 10-18. Pada instruksi OUT, nop yang pertama terjadi dalam keadaan T5. Dalam hal ini, sesaat setelah keadaan T5 dimulai, ROM kendali menghasilkan keluaran 3E3H, yang segera akan dideteksi oleh gerbang NAND. Sinyal NOP yang rendah dari NAND tersebut. Kemudian mereset pencacah program kembali ke kedaan T1. Dengan cara ini kita telah mengurangi siklus mesin instruksi OUT dari enam keadaan menjadi empat keadaan. Siklus mesin variabel biasa dipakai dalam mikroprosesor. Dalam 8085, sebagai contoh, siklus mesin mengambil dua sampai enam keadaan T karena semua keadaan nop yang tidak diinginkan dapat diabaikan. Keuntungan Satu keuntungan dari mikroprogramming adalah penghapusan bagian dekoder instruksi dan matriks kendali; kedua bagian ini menjadi sangat kompleks bagi perangkat instruksi yang lebih luas. Dengan kata lain, jauh lebih mudah menyimpan mikroinstruksi di dalam sebuah ROM daripada membuat rangkaian dekoder instruksi dan matriks kendali. Lagi pula, sekali anda merangkaiakan sebuah dekoder instruksi dengan matriks kendali, hanya ada satu cara untuk mengubah perangkat instruksiitu yaitu dengan mengubah sambungan-sambungan rangkaian ini. Pekerjaan tersebut tidak diperlukan dengan kendali yang dimikroprogramkan; apa yang harus dilakukan adalah mengubah ROM kendali dan ROM alamat-awal. Ini merupakan keuntungan besar jika anda mencoba memperbaiki peralatan yang telah dijual sebelumnya.

Page 44: ARSITEKTUR KOMPUTER.pdf

Rangkuman Sebagai kesimpulan dapat diutarakan bahwa kebanyakan komputer dewasa ini telah dirancang dengan menggunakan kendali yang dimikroprogram sebagai pengganti sistem kendali perangkat-keras Tabel pemikroprograman dan rangkaian-rangkaian yang bersangkutan dari komputer dewasa ini jauh lebih kompleks daripada yang berlaku untuk SAP-1, akan tetapi gagasan pokoknya tetap sama. Mikroinstruksi disimpan di dalam sebuah ROM kendali dan diakses dengan memberikan alamat mikroinstruksi yang diinginkan.

Page 45: ARSITEKTUR KOMPUTER.pdf

DAFTAR ISTILAH Akumulator Tempat dimana jawaban-jawaban operasi aritmetik dan logika

disimpan. Kadang-kadang disebut register A. Bahasa asembli Mnemonik yang dipakai dalam penulisan sebuah program Bahasa mesin Deretan “kata” terdiri dari 0 dan 1 yang dipakai dalam sebuah

program. Keadaan alamat keadaan T1. Selama keadaan ini, alamat didalam pencacah

program dipindahkan ke MAR. Instruksi acuan (rujukan ) memori. Sebuah instruksi yang memerlukan operasi

memori kedua untuk mengakses data. Keadaan memori Keadaan T3. Selama keadaan ini, instruksi didalam memori

dipindahkan keregister instruksi. Keadaan penambahan Keadaan T2 selama keadaan ini, sehingga pencacah program

dinaikkan atau (ditambahkan). Kode operasi (opcode). Bagian instruksi yang memberitahu komputer tentang

operasi yang harus dilaksanakan LDA. Mnemonik dari instruksi mengisi (load) akumulator. Makroinstruksi Salah satu instruksi didalam perangkat instruksi. MAR Memory address register (register alamat memori). Register ini

menerima alamat data yang hendak diakses didalam memori. MAR memberikan alamat ini ke memori

Mikroinstruksi Kata - kendali yang berasal dari pengendali – pengurut. Ini merupakan langkah terkecil dam pemrosesan data.

Nop No operation (tanpa operasi) . Suatu keadaan tanpa kejadian apapun.

Pencacah program Register yang mencacah dalam bilangan biner. Isinya merupakan alamat instruksi berikutnya yang harus diambil dari memori.

Perangkat instruksi Kumpulan semua instruksi yang dimengerti yang ditanggapi oleh komputer.

Program obyek Program yang yang dituliskan dalam bahasa mesin. Program sumber Program yang ditulis dalam bentuk Mnemonik RAM Random access memory nama yang lebih baik adalah memori

baca-tulis. RAM menyimpan program dan data yang dibutuhkan untuk operasi komputer register B Register pembantu yang menyimpan data untuk dijumlahkan pada atau dikurangkan isi akumulator.

Register instruksi Register yang menerima instruksi dari memori. Register keluaran Register ini menerima data yang telah diproses dari akumulator

dan menggerakkan peraga keluaran dari SAP-1. Disebut juga bandar keluaran.

Siklus instruksi seluruh keadaan yang diperlukan guna mengambil dan mengeksekusi sebuah instruksi.

Siklus mesin Semua keadaan yang dibangkitkan oleh pencacah putar (lingkar) Siklus pengambilan Bagian pertama dari siklus instruksi. Selama siklus

pengambilan, alamat dikirim ke memori dan angka pencacah program ditingkatkan, dan instruksi dipindahkan dari memori ke register instruksi.

Page 46: ARSITEKTUR KOMPUTER.pdf

Gambar 10-20. Skematik Lengkap SAP-1 (a)

Page 47: ARSITEKTUR KOMPUTER.pdf

Gambar 10-21. Skematik Lengkap SAP-1 (b)

Page 48: ARSITEKTUR KOMPUTER.pdf

Gambar 10-22. Skematik Lengkap SAP-1 (c)

Page 49: ARSITEKTUR KOMPUTER.pdf

Gambar 10-23. Skematik Lengkap SAP-1 (d)

Page 50: ARSITEKTUR KOMPUTER.pdf

SAP-2

SAP-1 merupakan sebuah komputer karena sistem ini dapat menyimpan program dan data sebelum memulai perhitungannya, dan kemudian secara otomatis melaksanakan instruksi-instruksi program tanpa campur-tangan manusia. Namun demikian SAP-1 merupakan mesin hitung yang masih primitif. Membandingkan komputer SAP-1 dengan komputer modern, ibarat membandingkan manusia Neanderthal (salah satu jenis menusia puba) dengan manusia modern. Ada sesuatu yang tidak terdapat dalam komputer SAP-1, tetapi justru terdapat setiap komputer modern. SAP-1 merupakan tahap berikutnya dalam evolusi ke komputer modern karena SAP-2 telah dilengkapi dengan instruksi-instruksi jump ( lompat). Instruksi yang baru ini akan memaksa komputer mengulangi atau melompati bagian dari sebuah program. Sebagaimana akan anda temukan, instruksi lompat ini telah membuka duania baru dalam kemampuan perhitungan. 11-1 REGISTER DUA-ARAH Untuk mengurangi kapasitas kawat penyambungan dalam SAP-2, kita akan menggunakan hanya sekelompok kawat antara setiap register dan bus. Gagasan ini diperlihatkan pada Gambar 11-1a. Penyemat-penyemat masukan dan keluaran diberi hubungan singkat (short); hanya sekelompok kawat yang dihubungkan dengan bus. Apakah hubungan singkat pada penyemat-penyemat masukan dan keluaran tersebut akan menimbulkan kesulitan? Tidak. Selama komputer beroperasi,salah satu dari saluran-saluran LOAD atau ENABLE mungkin menjadi aktif, tetapi tidak pernah kedua-duanya pada suatu saat yang sama. LOAD yang aktif berarti bahwa sebuah kata biner mengalir dari bus menuju ke register dan selama operasi pengisian, saluran keluaran berada dalam keadaan mengambang. Di pihak lain, ENABLE yang aktif berarti bahwa sebuah bus, dan dalam hal ini, saluran masukan yang berada dalam keadaan mengembang. Pabrik-pabrik IC dapat menyambungkan secara internal penyemat-penyemat masukan dengan penyemat-penyemat keluaran dari sebuah register tiga-keadaan, Hal ini tidak hanya mengurangi kapasitansi kawat-kawat penyambungan, tetapi juga mengurangi jumlah penyemat I/O. Contohnya, dalam Gmbar 11-1b hanya terdapat empat buah penyemat I/O dan bukan delapan penyemat seperti dalam pembahasan yang lalu. Gambar 11-1c memperlihatkan simbol bagi sebuah register tigs-keadaan dengan penyemat-penyemat masukan dan keluaran yang tersambung secara internal. Tanda panah di kedua ujun saluran menunjukkan bahwa lintasan bersifat dua-arah (bidirectional); artinya data dapat berpindah secara bolak-balik. 11-2 ARSITEKTUR Arsitektur SAP-2 dilukiskan oleh Gambar 11-2. Semua keluaran register ke bus W berupa saklar tiga-keadaan. Keluaran yang tidak dihubungkan dengan bus bersifat dus-keadaan. Sebagaimana sebelumnya, pengendali-pengurut mengirimkan sinyal-sinyal kendali (tidak dilukiskan) kepada setiap register. Sinyal-sinyal kendali ini akan mengisi, mengaktifkan, atau mempersiapkan register untuk tepi pulsa pawaktu positif yag berikutnya. Uraian singkat dari masing-masing kotak dalam gambar arsitektur SAP-2 akan diberikan berikut ini.

Page 51: ARSITEKTUR KOMPUTER.pdf

Gambar 11-1. Register dua arah Bandar Masukan SAP-2 mempunyai dua buah bandar masukan, bernomor 1 dan 2. Enkoder papan tombol (keyboard) heksadesimal dihubungkan dengan bandar I untuk memasukkan instruksi dan data heksadesimal melalui bandar ini. Perhatikan bahwa enkoder papan tombol heksadesimal mengirimkan sebuah sinyal READY ke bit 0 dari bandar 2. Sinyal ini menunjukkan kapan data di bandar I telah menjadi absah (valid). Perhatikan pula bahwa sinyal SERIAL IN memasuki penyemat 7 dari bandar 2. Dalam pembahasan kemudian akan diberikan suatu contoh yang memperlihatkan bagaimana cara mengubah data masukan seri menjadi data masukan parelel. Pencacah Program Kini, pencacah program memiliki saluran 16-bit, dan karena itu dapat mencacah dari

PC = 0000 0000 0000 0000 Sampai

PC = 1111 1111 1111 1111

Ini ekivalen dengan 0000H sampai FFFFH, atau 0 sampai 65.536 desimal.

Page 52: ARSITEKTUR KOMPUTER.pdf

Sinyal CLR yang rendah akan mereset PC sebelum setiap operasi komputer. Dengan demikian peorosesan data selalu dimulai dengan instruksi yang disimpan dalam lokasi memori 0000H.

MAR dan Memori Selama siklus pengambilan, MAR menerima alamat 16-bit dari pencacah program. Keluaran dua-keadaan dari MAR selanjutnya mengirimkan alamat lokasi memori yang dikehendaki. Memori mempunyai sebuah ROM 2K yang beralamat 0000H sampai 07FFH. ROM ini berisi sebuah program, yang disebut monitor. Program ini menganalisasi komputer pada waktu dinyalakan. Menafsirkan masukan-masukan papan tombol, dan sebagainya. Sisa dari memori sistem merupakan sebuah RAM 62K yang beralamat dari 0800H sampai FFFFH.

Gambar 11-2 Arsitektur Blok SAP-2

Page 53: ARSITEKTUR KOMPUTER.pdf

Register Data Memori Register data memori (Memory data register; disingkat MDR) adalah sebuah register bufer 8-bit. Keluaran register ini mengaktifkan RAM. Register data memori menerima data dari bus sebelum berlangsung operasi menulis, dan akan mengirimkan data ke bus sesudah operasi membaca. Register Instruksi (IR) Karena SAP-2 memiliki instruksi yang lebih banyak daripada SAP-1, kita akan menggunakan 8-bit untuk kode operasi dan bukan 4-bit seperti dalam SAP-1. Kode operasi 8-bit dapat menampung 256 instruksi. SAP-2 hanya mempunyai 42 instruksi, sehingga tidak akan terdapat masalah dalam pengkodean instruksi 8-bit. Penggunaan kode operasi 8-bit juga memungkinkan kompatibilitas dengan perangkat instruksi 8080/8085 yang juga disusun atas dasar kode operasi 8-bit. Sebagaimana telah disebutkan sebelumnya, seluruh instruksi SAP identik dengan instruksi pada 8080/8085. Pengendali-Pengurut Pengendali-pengurut menghasilkan kata-kata kendali atau mikroinstruksi yang akan mengkoordinasi atau mengarahkan operasi komputer. Karena SAP-2 memiliki perangkat instruksi yang lebih luas, maka perangkat keras dari bagian pengendali-pengurut menjadi lebih rumit. Dipihak lain meskipun kata CON menjadi lebih panjang, tetapi ide pokoknya tetap sama: kata kendali atau mikroinstruksi menentukan bagaimana register-register bereaksi terhadap tepi pulsa detak positif berikutnya. Akumulator Keluaran dua-keadaan dari akumulator dikirim ke ALU; sedangkan keluaran tiga- keadaan dari akumulator ini dihubungkan dengan bus W. Karena itu, kata 8-bit dalam akumulator secara kontinu menggerakkan ALU, akan tetapi kkata yang sama juga muncul pada bus bilamana EA menjadi aktif. ALU dan Bendera ALU-ALU standar tersedia secara komersial sebagai rangkaian terpadu. ALU ini memiliki 4 atau lebih dari 4 bit kendali yang menentukan operasi aritmetik atau operasi logika pada kata-kata A dan B. ALU yang dipakai dalam SAP-2 mengandung operasi aritmetik dan logika. Dalam buku ini, bendera (flag) merupakan sebuah flip-flop yang mengikuti dan mengawasi perubahan keadaan selama komputer beroperasi. Komputer SAP-2 mempunyai dua macam bendera. Bendera tanda (sign flag) akan diaktifkan bilamana isi akumulatr berubah menjadi negatif selama eksekusi dari beberapa instruksi. Bendera nol (zero flag) akan diaktifkan bilamana isi akumulator menjadi nol. Register TMP, Register B, dan Register C Sebagai pengganti peranan register B dalam menahan data yang akan dijumlahkan atau dikurangkan dengan isi akumulator, di sini digunakan sebuah register sementara (disingkat TMP dari kata temporary). Register ini memberikan kebebasan lebih luas dalam menggunakan register B. Di samping register TMP dan register B, SAP_2 juga menggunakan register C. Dengan ini, pemindahan data selama komputer bekerja dapat dilakukan secara lebih fleksibel.

Page 54: ARSITEKTUR KOMPUTER.pdf

Bandar Keluaran SAP-2 mempunyai dua bandar keluaran, masing-masing diberi nomor 3 dan 4. Isi akumulator dapat dimasukkan ke dalam bandar 3, yang menggerakkan sebuah peraga heksadesimal. Dengan demikian kita dapat melihat data yang telah diproses melalui peraga itu. Isi akumulator dapat pula dikirimkan ke bandar 4. Perhatikan bahwa penyemat 7 dari bandar 4 mengirimkan sinyal sinyal ACKNOWLEDGE ke enkoder heksadesimal. Sinyal ACKNOWLEDGE ini beserta sinyal READY merupakan bagian dari suatu konsep yang disebut berjabat-tangan (hand-shaking), Pengertian ini akan dibahas lebih lanjut kemudian. Perhatikan juga sinyal SERIAL OUT dari penyemat 0 bandar 4. Salah satu dari contoh-contoh yang diberikan kemudian akan menjelaskan bagaimana mengubah data paralel dalam akumulator menjadi data keluaran seri. 11-3 INSTRUKSI ACUAN MEMORI Siklus pengambilan dalam SAP-2 adalah serupa dengan yang telah dibahas sebelumnya, yaitu meliputi keadaan T1 (alamat), keadaan T2 (penambahan) dan keadaan T3 (memori). Jadi seluruh instruksi SAP-2 menggunakan memori selama siklus pengambilan karena instruksi program dipindahkan dari memori ke dalam register instruksi. Selama siklus eksekusi, memori mungkin digunakan atau mungkin juga tidak tergantung pada tipe instruksi yang telah diambilnya. Instruksi acuan (rujukan)- memori (memory-reference instuction, disingkat MRI) adalah satu contoh instruksi yang menggunakan memori selama siklus eksekusi. Perangkat instruksi komputer SAP-2 terdiri dari 42 instruksi. Berikut ini merupakan deskripsi dari instruksi-instruksi rujukan-memori tersebut. LDA dan STA LDA mempunyai arti yang sama dengan pembahasan yang lalu, yaitu: mengisi akumulator dengan data memori yang dialamatkan. Perbedaannya hanya terletak pada jumlah lokasi memori lebih banyak yang dapat diakses dalam SAP-2, karena alamatnya meliputi nomor 0000H berarti mengisi akumulator dengan isi lokasi memori beralamat 2000H. Untuk membedakan bagian-bagian yang berlainan dari sebuah instruksi, kadang-kadang mnemonik disebut kode operasi (op code) dan bagian instruksi LDA 2000H adalah operannya. Dengan demikian, “kode operasi” memiliki arti ganda dalam pekerjaan komter; istilah ini dapat berarti mnemonik atau dapat pula berarti kode biner yang dipakai guna mempresentasikan menemonik. Pemilihan arti yang dimaksud dapat terbaca jelas berdasakan konteks yang bersangkutan. STA adalah mnemonik untuk store the accumulator (=simpan isi akumulator). Setiap instruksi STA memerlukan sebuah alamat. STA 7FFFH berarti menyimpan isi akumulator di lokasi memori 7FFFH. Jika: A = 8AH Maka eksekusi dari STA 7FFFH adalah menyimpan 8AH pada alamat 7 FFFH. MVI MVI adalah mnemonik untuk move immediate (pindahan segera). Instruksi ini memberitahu komputer untuk mengisi register tertentu dengan byte yang segera mengikuti kode operasi. Misalnya:

Page 55: ARSITEKTUR KOMPUTER.pdf

MVI A, 37H Memberitahu kepada komputer untuk mengisi akumulator dengan bilangan 37H. Sesudahinstruksi ini dilaksanakan, isi biner dari akumulator menjadi: A = 0011 0111 Anda dapat menggunakan instruksi MVI dengan melibatkan register-register A, B, dan C. Format untuk instruksi-instruksi ini adalah sbb. MVI A, byte MVI B, byte MVI C, byte. Kode-kode Operasi Tabel 11-1 memperlihatkan kode-kode operasi untuk perangkat instruksi SAP-2, yang juga meripakan kode-kode operasi 8080/8085. Seperti kita lihat, 3A adalah kode operasi bagi LDA, 32 adalah kode operasi bagi STA, dst. Gunakan tabel tersebut dalam mengikuti urain selanjutnya dari bab ini. CONTOH 11-1 Tunjukkan mnemonik bagi sebuah program, untuk mengisi akumulator dengan 49H, mengisi register B dengan 4AH, dan register C dengan 4BH. Kemudin buatlah program untuk menyimpan data akumulator pada lokasi memori 6285H. JAWABAN Program yang dimaksud adalah Mnemonik MVI A, 49H MVI B, 4AH MVI C, 4BH STA 6285H HLT Tiga instruksi pertama mengisikan 49H, 4AH, dan 4BH ke dalam register A, B, dan C. STA 6285H menyimpan isi akumulator pada lokasi 6285H. Perhatikan penggunaan instruksi HLT dalam program diatas. Instruksi ini mempunyai arti seperti sebelumnya; yaitu menghentikan pemrosesan data. TABEL 11-1 KODE OPERASI SAP-2 Instruksi Kode Operasi Instruksi Kode Operasi ADD B 80 MOV B,A 47 ADD C 81 MOV B,C 41 ANA B A0 MOV C,Aa 4F ANA C AI MOV,CB 48 ANI byte E6 MVI A, byte 3E CALL alamat CD MVI B, byte 06 CMA 2F MVI C, byte 0E DCR A 3D NOP 00

Page 56: ARSITEKTUR KOMPUTER.pdf

DCR B 05 ORA B B0 DRC C 0D ORA C BI HLT 76 ORI byte F6 IN byte DB OUT byte D3 INR A 3C RAL 17 INR B 04 RAR IF INR C OC RET C9 JM alamat FA STA alamat 32 JMP alamat C3 SUB B 90 JNZ alamat C2 SUB C 91 JZ alamat CA XRA B A8 LDA alamat 3A XRA C A9 MOV A,B 78 XRI byte EE MOV A,C 79 CONTOH 11-2 Terjemahkan program pada Contoh 11-2 ke dalam bahasa mesin 8080/8085 dengan menggunakan kode operasi dari Tabel 11-1. Mulailah dari alamat 2000H JAWABAN Alamat Isi Simbolik 2000H 3EH MVI A, 49 2001H 49H 2002H 06H MVI B,4 AH 2003H 4AH 2004H 0EH MVI C,4BH 2005H 4BH 2006H 32H STA 6285H 2007H 85H 2008H 62H 2009H 76H HLT Dalam program bahasa-mesin ini terlihat adanya beberapa ide baru. Dalam instruksi: MVI A,49H Perhatikan bahwa kode operasi menempati alamat pertama sedangkan byte operan menempati alamat yang kedua. Secara umum, bagi semua instruksi 2-byte berlaku ketentuan: kode operasi menempati lokasi memeori pertama yang disediakan dan byte data menempati lokasi memori berikutnya. Instruksi: STA 6285H Adalah sebuah instruksi 3-byte ( 1 byte untuk kode operasi dan 2 byte untuk alamat). Kode operasi untuk STA adalah 32H. Byte ini memasuki lokasi memori pertama yangdisediakan, yaitu 20006H. Alamat 6285 terdiri dari 2 byte. Byte rendah (lower byte) 85H memasuki lokasi memori yang berikutnya, dan byte atas (upper byte) 62H memasuki lokasi memori yang berikutnya lagi. Mengapa alamat diprogram dengan byte rendah menenpati urutan pertama dan byte ke atas menempati urutan kedua? Ini merupakan kekhusussan dari desain asli 8080. Untuk memelihara kompatibilitas, 8085 dan beberapa mikroprosesor yang lain menggunakan skema yang sama: byte rendah menempati memori yang lebih rendah, dan byte tinggi menempati memori yang lebih tinggi.

Page 57: ARSITEKTUR KOMPUTER.pdf

Instruksi terakhir, HLT, memiliki kode operasi 76H, dan disimpan dalam lokasi memori 2009H. Sebagai ikhtisar dapat diutarakan bahwa instruksi MVI adalah instruksi 2-byte, instruksi STA adalah instruksi 3-byte, dan instruksi HLT adalah instruksi 1-byte. 11-4 INSTRUKSI-INSTRUKSI REGISTER Instruksi rujukan-memori relatif lambat pelaksanaannya karena mereka memerlukan lebih dari satu operasi akses memori selama siklus instruksi. Selain itu, kita sering menghendaki pemindahan data langsung dari satu register ke register yang lain tanpa harus melalui memori. Beberapa instruksi register sari SAP-2 yang dibahas berikut ini, dirancang untuk memindahkan data dari satu register ke register yang lain dalam waktu sesngkat mungkin. MOV MOV adalah mnemonik untuk instruksi memindahkan (move). Instruksi ini memberitahu kepada komputer untuk memindahkan data dari satu register ke register yang lain. Misalna: MOV A,B. Memberitahukan komputer untuk mrmindahkan data dalam register B ke akumulator. Operasi ini bersifat tidak merusak (nondestructive), artinya data di dalam B hanya disalin tetapi tidak dihapus. Sebagai contoh, jika: A = 34H dan B = 9DH Eksekusi dari MOV A, B menghasilkan: A = 9DH B = 9DH Anda dapat memindahkan data di antara register-register A, B, dan C. Format untuk seluruh instruksi MOV dalam hal ini adalah MOV A,B MOV A,C MOV B,A MOV B,C MOV C,A MOV C,B Instruksi-instruksi di atas merupakan instruksi yang tercepat di dalam perangkat instruksi SAP-2, masing-masing hanya memerlukan satu siklus mesin. ADD dan SUB ADD berarti :tambahkan data dalam register tertentu pada isi akumulator”,. Misalnya: ADD B Berarti menjumlahkan isi register B dengan isi akumulator. Jika: A = 04H dan B = 02H Maka eksekusi dari ADD B menghasilkan: A = 06H Demikian pula, SUB berarti mengurangkan data dalam register yang dimaksud dari isi akumulator, SUB C akan mengurangkan isi register C dari si akumulator. Format untuk instruksi ADD dan SUB adalah sbb: ADD B ADD C SUB B SUB C

Page 58: ARSITEKTUR KOMPUTER.pdf

INR dan DCR Seringkali kita ingin menambahkan sesuatu pada atau mengurangi sesuatu dari si register. INR adalah mnemonik untuk increment (penambahan). Instruksi ini memberitahu kepada komputer untuk menambah isi register yang ditunjuk dengan satu angka. CDR adalah mnemonik untuk decrement (pengurangan). Instruksi ini memberutahu kepada komputer untuk mengurangi isi register yang ditunjuk dengan satu angka. Format instruksi yang bersangkutan adalah: INR A INR B INR C DCR A DCR B PCR C Sebagai contoh, jika: B = 56H dan C = 8AH Maka eksekusi dari INR B menghasilkan: B = 57H Dan eksekusi dari DCR C memberikan C = 89H CONTOH 11-2 Perlihatkan mnemonik bagi program penjumlahan angka-angka desimal 23 dan 45. Jawabannya disimpan pada lokasi memori 5600H. Selain itu, jawaban itu, jawaban tersebut ditambah dengan I dan disimpan dalam register C. JAWABAN Dari lampiran I, angka-angka desimal 23 dan 45 diketahui ekivalen dengan 17H dan 2DH program yang ditanyakan adalah sebagai berikut: Mnemonik MVI A, 17H MVI B, 2DH ADD B STA 5600H INR A MOV C,A HLT CONTOH 11-4 Melakukan asembli-tangan (hand-assemble) berarti menerjemahkan sebuah program sumber ke dalam program bahasa mesin secara manual, dan bukan dengan mesin. Lakukan asemli-tangan pada program dalam Contoh 11-3 dengan alamat awal 2000H JAWABAN Alamat Isi Simbol 2000H 3EH MVI A, 17 H 2001H 17H 2002H 06H MVI B,2DH 2003h 2DH 2004H 80H ADD B

Page 59: ARSITEKTUR KOMPUTER.pdf

2005H 32H STA 5600H 2006H 00H 2007H 56H 2008H 3CH INR A 2009H 4FH MOV C,A 200AH 76H HLT Perhatikan bahwa ADD, INR, MOV, dan HLT merupakan instruksi 1-byte; MVI adalah instruksi 2-byte, dan STA adalah instruksi 3-byte. 11-5 INSTRUKSI JUMP DAN CALL SAP-2 memiliki tiga macam instruksi jump (lompt), yang dapat mengubah urutan program. Dengan kata lain, sebagai pengganti dari operasi pengambilan instruksi berikutnya dalam cara yang biasa, komputer boleh melompat atau mencabang (branh) ke bagian program yang lain.

Gambar 11-3 (a) Lompatan tanpa syarat; (b) lompatan bersyarat

JMP JMP adalah mnemonik untk instruksi jump (lompat), yang memberitahu komputer untuk mengambil instruksi berikutnya dari lokasi memori yang telah ditunjuk alamatnya. Setiap instruksi JMP selalu dilenhgkapi dengan alamat yang telah diisi ke dalam pencacah program. Misalnya, JMP 3000H Memberitahu komputer untuk mengambil instruksi berikutnya dari lokasi memori 3000H. Proses yang terjadi adalah sebagai berikut. Kita misalkan JMP 3000H disimpan pada lokasi 2005H, seperti ditunjukkan dalam Gambar 11-3. Pada akhir siklus pengambilan, pencacah program berisi nomer PC = 2006H Selama siklus eksekusinya, instruksi JMP 3000H akan mengisi pencacah program dengan alamat yang ditunjuk oleh instruksi tersebut, yaitu: PC = 3000H Ketika siklus pengambilan yang berikutnya dimulai, instruksi yang selanjutnya berasal dari lokasi 3000H bukan 2006H (lihat Gambar 11-3a).

Page 60: ARSITEKTUR KOMPUTER.pdf

JM SAP-2 mempunyai dua macam bendera yang disebut bendera tanda dan bendera nol. Selama ekskusi, dari beberapa instruksi, kedua bendera ini akan mengalami set atau reset, bergantung pada apa yang terjadi pada akumulator. Jika isi akumulator menjadi negatif, bendera tanda akan diset; dan jika tidak negatif, bendera tanda akan dikosongkan (cleared). Secara simbolis, hal imni dapat diutarakan sebagai berikut: Dengan S menyatakan bendera tanda (sign). Bendera tanda akan tetap berada dalam keadaan “’set” atau “clear”. Sampai terjadi operasi lain ynag mengubah status bendera. JM adalah mnemonik untuk instruksi jump if minus (lompat jika minus). Komputer akan melompat ke alamat yang ditunjuk jika dan hanya jika bendera tanda dalam kondisi set. Sebagai contoh, andaikan JM 3000H disimpan pada 2005H sesudah instruksi ini diambil, maka PC = 2006H Jika S = 1, eksekusi dari JM 3000H akan mengisi pencacah program dengan: PC = 3000H Karena pencacah program kini menunjuk ke 3000H, maka instruksi berikutnya akan berasal dari lokasi 3000H. Jika syarat lompatan tidak dipenuhi (S=0), pencaccah program tidak akan berubah selama siklus eksekusi. Karena itu, ketika operasi pengambilan yang berikutnya dimulai, instruksi akan siambil dari lokasi 2006H. Gambar 11-3b memperlihatkan dua kemungkinan untuk instruksi JM. Jika persyaratan minus dipenuhi, komputer melompat ke lokasi 3000H untuk mengambil instruksi berikutnya. Program turun ke lokasi urutan berikutnya. JZ Bendera lain yang dipengaruhi oleh operasi akumulator adalah bendera nol. Selama eksekusi dari beberapa instruksi, isi akumulator dapat menjadi nol. Untuk merekam peristiwa ini, bendera nol akan diset. Jika isi akumulator tidak menjadi nol, bendera nol akan direset. Secara simbolis ini dapat diutarakan sebaga berikut. JZ adalah mnemonik untuk instruksi jump if zero (lompat jika nol): yang memberitahu komputer untuk melompat ke alamat yang ditunjuk hanya jika bendera nol dalam keadaan set. Andaikan bahwa JZ 3000H disimpan pada lokasi 2005H. Jika Z = 1 selama eksekusi dari JZ 3000H, instruksi yang berikutnya diambil dari lokasi 3000H. Dipihak lain, jika Z = 0, instruksi berikutnya akan berasal dari lokasi 2006H. JNZ JNZ adalah mnemonik untuk instruksi jump if not zero (lompat jika tidak nol). Dalam hal ini suatu lompatan akan terjadi bilamana bendera nol dalam keadaan “clear”, dan

Page 61: ARSITEKTUR KOMPUTER.pdf

tidak akan terjadi lompatan bilamana bendera nol tersebut dalam keadaan set. Andaikan bahwa JNZ 7800H disimpan pada lokasi 2100H. Jika Z=0, instruksi berikutnya akan berasal dari lokasi 7800H: dan bilamana Z=1, program akan turun ke instruksi urutan berikutnya pada lokasi 2101H. JM,JZ dan JNZ disebut lompatan bersyarat (conditional jumpts) karena lompatan program akan terjadi hanya jika persyaratan tertentu dipenuhi. Di pihak lain, JMP adalah lompatan tanpa syarat (unconditional); sekali instruksi ini diambil, siklus eksekusi selalu melompat ke alamat tertentu yang telah ditunjuk. CALL dan RET Subrutin (subroutine) adalah suatu program yang disimpan dalam memori untuk digunakan dalam program yang lain. Banyak mikrokomputer yang memiliki subruitn untuk perhitungan sinus, cosinus, tangen, logaritme, akar-kuadrat, dsb. Subrutin-subrutin ini merupakan bagian dari perangkat lunak yang telah tersedia dalam komputer. CALL adalah mnemonik untuk instruksi “call the subroutine” (panggil subrutin). Setiap instruksi CALL harus dilengkapi alamat awal dari subrutin yang dikehendaki. Misalnya, jika sebuah subrutin akar-kuadrat berawal pada alamat 5000H dan sebuah subrutin logaritma berawal pada alat 6000H. maka eksekusi dari instruksi CALL 5000H Akan menyebabkan lompatan ke subrutin akar-kuadrat. Di pihak lain, sebuah instruksi

CALL 6000H

Menghasilkan suatu lompatan ke subrutin logaritma. RET adalah mnemonik untuk instruksi “return” (kembali). Ini digunakan Pada akhir setiap subrutin yang memberitahu komputer untuk kembali keprogram semula. Insrtuksi RET dalam subrutin berfungsi sama seperti instruksi HLT didalam suatu program. Keduanya memberitahu komputer bahwa suatu operasi telah Selesai. Jika kita lupa menggunakan instruksi RET pada akhir sebuah subrutin, maka komputer tidak dapat kembali kepada program semula dan kita akan mendapattkan hasil komputer yang tidak ada artinya. Ketika instruksi CALL dilaksnakan dalam komputer SAP-2, isi pencacah program secara otomatik tersimpan pada lokasi memori FFFEH dan FFFFH (dua lokasi memori terakhir ). Alamat CALL kemudian diisikan kedalam pencacah program, sehingga eksekusi memulai dengan instruksi pertama dalam subrutin. Sesudah subrutin selesai dilaksanakan instruksi RET akan mengatur komputer agar alamat pada lokasi memori FFFEH dan FFFFH diisikan kembali kedalam pencacah program. Ini akan mengembalikan kendali pada program semula. Gambar 11-4 memperlihatkan aliran program selama bersangsungnya operasi subrutin. Instruksi CALL 5000H mengerahkan komputer ke subrutin di lokasi 5000H. Sesudah subrutin ini diselesaikan, instruksi RET akan mengembalikan komputer kepada instruksi yang segera menyusul instruksi CALL.

Page 62: ARSITEKTUR KOMPUTER.pdf

CALL disini seperti instruksi JMP, merupakan instruksi tanpa syarat. Sekali instruksi CALL diambil dan dimasukkan ke register instruksi, komputer akan melompat kealamat awal subrutin. Penjelasan Lebih Lanjut Mengenai Bendera Bendera tanda atau bendera0 dapat mengalami keadaan set atau reset selama eksekusi beberap instruksi tertentu. Tebel 11.2 memberikan beberapa instruksi SAP-2 yang dapat mempengaruhi keadaan bendera. Semua instruksi ini menggunakan akumulator selama eksekusinya. Jika akumulator menjadi negatif atau nol selama salah satu dari instruksi-instruksi ini dilaksanakan, maka bendera tanda atau bendera nol akan mengalami keadaan set. Misalnya, kita mengambil instruksi ADD C. Ini berarti isi dari register C dijumlahkan dengan isi akumulator. Jika dalam proses ini isi akumulator menjadi negatif atau nol, maka bendera tanda atau bendera nol akan dipasang (diset). Selanjutnya, kita memperhatikan instruksi INR dan DCR. Karena kedua instruksi ini menggunakan akumulator dalam menambah atau mengurang isi register tertentu dengan angka 1, maka bendera-bendera juga terpengaruh olehnya . Misalkan saja, dalam eksekusi DCR C, isi register C dikurangi melalui pengiriman isi register yang bersangkutan ke akumulator, kemudian dilaksanakan pengurangan dengan 1, dan akhirmya hasil ini dikirim kembali ke pada register C. Jika akumulator menjadi negatif selama eksekusi DCR C, bendera tanda akan diset; jika akumulator menjadi nol, bendera nol yang akan diset. CONTOH 11-5 Lakukan asembli- tangan pada program dibawah ini dengan alamat awal 2000H : MVI C,03H DCR C JZ000H JMP0002H HLT JAWABAN

ALAMAT ISI SIMBOLIK 2000H 0EH MVI C,03H

Page 63: ARSITEKTUR KOMPUTER.pdf

2001H 03H 2002H 0DH DCR C 2003H CAH JZ2009H 2004H 09H 2005H 20H 2006H C3H 2007H 02H JMP 2002H 2008H 20H 2009H 76H HLT CONTOH 11-6 Dalam program Contoh 11-5, berapa kali instruksi DCR C dilaksanakan? JAWABAN Aliran program tersebut diberikan oleh Gambar 11-5. Selanjutnya kita amati apa yang terjadi tentang program tersebut. Instruksi MVI C, 03H akan mengisi register C dengan 03H. Instruksi DCR C akan mengurangi isi C menjadi 02H. Isi ini masih lebih besar dari nol, karena itu, bendera 0 direset dan instruksi JZ2009H diabaikan saja. Dengan JMP 2002H, komputer akan dikembalikan ke instruksi DCR C. Pada eksekusi DCR C yang kedua kali, isi register C berkurang menjadi 01H; bendera nol masih dalam keadaan reset. Instruksi JZ2009H kembali diabaikan, dan eksekusi JMP 2002H mengembalikan komputer ke DCR C lagi. Eksekusi DCR C yang ketiga akan mengurangi isi register C menjadi nol. Pada waktu ini bendera nol akan diset, dan instruksi JZ2009H menyebabkan program melompat keinstruksi HLT. Loop (simpal) adalah bagian dari suatu program yang diulang-ulang., Dalam contoh ini kita telah melalui loop tersebut (DCR C dan JZ2009H) sebanyak 3 kali, seperti terlihat pada Gambar 11-5. Perhatikan bahwa jumlah loop yang harus dilalui sama dengan bilangan awal yang diisikan kedalam register C. Jika kita mengubah instruksi pertama menjadi : MVI C,07H Komputer akan melakukan loop sebanyak 7 kali. Dengan cara serupa, jika kita menginginkan operasi loop sebanyak 200 kali (equivalen dengan C8H), maka instruksi pertama harus berupa : MV1 C,08H Register C berfungsi sebagai suatu pencacah-turun yang dapat dipreset, oleh sebab itu kadang-kadang diberi sebutan pencacah Pokok pembahasan yang harus diingat adalah : kita dapat menyusun suatu loop dengan menggunakan instruksi-instruksi MVI,DCR, JZ dan JMP dalam sebuah program. Bilangan yang harus diisikan ke dalam register (pencacah) menentukan jumlah loop yang akan dilalui. Jika kita akan memasukkan instruksi baru di dalam loop tersebut, instruksi yang ditambahkan ini akan dilaksanakan X kali; menurut bilangan X yang dipreset kedalam pencacah.

Page 64: ARSITEKTUR KOMPUTER.pdf

Gambar 11-5. Loop CONTOH 11-7 Bila anda membeli sebuah mikrokomputer, anda sering memakai perangkat lunak guna melakukan pekerjaan-pekerjaan yang berbeda. Satu dari program-program yang anda beli adalah sebuah asembler. Asemler memungkinkan kita menulis program dalam bemntuk mnemonik. Kemudian asembler mengubah mnemonik-mnemonik ini kedalam bahasa mesin. Dengan kata lain, bila anda mempunyai sebuah asembler anda tidak perlu melakukan asembli – tangan pada program anda, tetapi komputer yang akan melakukannya. Tunjukkan versi bahasa asembli dari program dalam contoh 11-5. Lengkapilah dengan label dan komentar. JAWABAN

Label Instruksi komentar MVI C,03H :Isi pencacah dengan 3 desimal ULANGI : DCR C :kurangi isi pencacah

JZ END :periksa apakah sudah nol JMP REPEAT :kerjakan lagi SELESAI: HLT Dalam penulisan sebuah program, pekerjaan kita akan sangat dibantu bila program tersebut disertai beberapa komentar kita sendiri tentang apa yang dilaksanakan oleh setiap instruksi. Komentar ini akan memudahkan ingatan kita jika program itu harus dibaca kembali beberapa bulan kemudian. Dalam contoh diatas, komentyar pertama mengingatkan kepada kita bahwa pencacah – turun dipreset dengan angka desimal 3. Komentar kedua mengingatkan kepada kita bahwa isi pencacah akan dikurangi dengan 1. Komentar ketiga memberitahukan kepada kita bahwa munculnya hasil nol akan diperiksa sebelum terjadi lompatan, dan komentar keempat memberitahukan bahwa program akan mengulangi loop tersebut. Ketika asembler mengubah program sumber tersebut kedalam program objek. Setiap komentar dibelakang tanda titik-koma (semikolon) akan diabaikan. Mengapa demikian ? Karena memang demikian cara penulisan program asembler. Tanda titik – koma merupakan kode untuk memberitahu komputer bahwa komentar dibelakangnya tidak termasuk instruksi yang harus dilaksanakan, melainkan hanya berupa komentar

Page 65: ARSITEKTUR KOMPUTER.pdf

pribadi dari penyusun program. (ingat kode ASCII;3BH adalah kode ASCII untuk tanda titik-koma. Bila menemui 3BH didalam program sumber, asembler akan mengetahui bahwa sesudah tanda ini adalah Komentar. Label adalah tanda bantu yang lain dalam pemrograman yang khusus dipakai untuk instruksi lompat dan panggil. Dalam penulisan suatu penulisan bahasa asembli, kita seringkali tidak dapat membayangkan alamat mana yang harus disertakan pada Instruksi lompat atau Instruksi panggil. Dengan menggunakan label sebagai pengganti alamat numerik, program yang disusun menjadi lebih mudah untuk dipahami. Program asembler akan membaca label-label tersebut dan secara otomatik menentukan alamatnya yang sesuai. Ini merupakan keistimewaan asembler yang banyak menghemat tenaga penyusun program. Misalnya, bilamana asembler mengubah program diatas menjadi bahasa mesin. JZ akan digantikan dengan CA (kode operasi pada Tabel 11-1) dan END (SELESAI) akan diganti dengan alamat dari instruksi. HLT. Demikian pula, JMP digantikan dengan C3 (kode operasi) dan REPEAT (ULANGI) digantikan oleh alamat dari instruksi DCR C. Asembler menentukan alamat dari HLT dan JMP dengan menghitung jumlah byte yang diperlukan oleh saluran instruksi HLT dan DCR C dalam hasil asembli terakhir dari program yang bersangkutan. Apa yang harus diingat adalah bahwa kita dapat membuat label apa pun untuk instruksi lompatan dan pemanggilan. Label bersangkutan yang diikuti oleh tanda ( diletakkan di depan instruksi yang dituju oleh operasi lompatan. Bila asembler mengubah program menjadi bahasa mesin, tanda ( akan diartikan sebagai label yang dimaksud. Satu penjelasan lagi mengenai label ini. Dengan SAP-2, label yang dipasang dapat terdiri dari satu sampai enam karakter, dengan karakter pertamanya selalu berupa huruf. Label-label ini biasanya berbentuk kata atau singkatan, akan tetapi bilanganpun juga dapat dipakai. Contoh dari label yang dapat dipakai berbentuk sebagai berikut: ULANGI TUNDA RDKBD B12C3 Dua lebel pertama berupa kata: yang ketiga adalah singkatan untuk membaca papan tombol, dan dua label terakhir merupakan campuran dari huruf dan bilangan. Pembatasan panjang label (tidak lebih dari enam karakter) dan karakter awal (harus berupa huruf) adalah ciri khas asembler yang tersedia secara komersial. CONTOH 11-8 Tunjukkan sebuah program untuk perkalian bilangan desimal 12 dan 8 JAWABAN Bilangan heksadesimal yang ekivalen dengan 12 dan 8 adalah OCH dan 08H. Kita harus menyusun sebuah loop yang mengandung operasi penjumlahan bilangan 12 dengan isi akumulator setiap kali menjalani loop tersebut. Jika komputer melakukan operasi loop sebanyak 8 kali. Maka isi akumulator akan menjadi sama dengan 96 (desimal) pada akhir proses pengulangan loop (looping). Program bahasa-asembli yang akan melakukan operasi ini adalah sebagai berikut: Label Mnemonik Komentar MVI A, 00H : Kosongkan akumulator MVI B, 0CH : Isikan desimal 12 kedalam B

Page 66: ARSITEKTUR KOMPUTER.pdf

MVI C,08H : Preset pencacah dengan 8 REPEAT: ADD B : Tambahkan desimal 12 DCR C : Kurangi isi pencacah dengan 1 JZ DONE : Periksa apakah sudah nol JMP REPEAT : Ulangi DONE: HLT : Berhenti Komentar dalam program ini menggambarkan operasi yang terjadi. Pertama, kita mengosongkan (membersihkan) akumulator. Berikutnya, kita mengisikan angka desimal 12 ke dalam register B kemudian pencacah dipreset dengan bilangan desimal 8. Tiga instruksi pertama ini merupakan bagoian dari inisialisasi sebelum memasuki loop. Instruksi ADD B memulai operasi loop dengan menambahkan 12 kepada isi akumulator. DCR C akan mengurangi cacahan menjadi 7. Karena bendera nol masih dalam keadaan kosong (clear), instruksi JZ DONE akan diabaikan pada lintasan loop yang pertama dan alur program dikembalikan kepada instruksi ADD B. Seharusnya anda dapat melihat apa yang terjadi. Instruksi ADD B berada di dalam loop dan akan dilaksanakan 8 kali. Setelah 8 kali menlintasi loop, bender nol akan menempati kedaan set. Karena itu, instruksi JZ DONE akan membawa program keluar dari loop menuju ke instruksi HLT. Hasilnya dari 8 kali penjumlahan 12 adalah 12+12+12+12+12+12+12+12 =96 (Karena 96 desimal ekivalen dengan 60 heksadesimal, maka isi akumulator berbentuk 0110 0000). Penjumlahan yang diulang-ulang seperti ini ekivalen dengan perkalian. Dengan kata lain, menjumlahkan 12 sebanyak delapan kali identik dengan 12x8. Kebanyakan mikroprosesor tidak memiliki perangkat keras perkalian; yang dimiliki hanya sebuah penjumlah-pengurang seperti komputer SAP. Karena itu, dengan mikroprosesor standar, anda harus menggunakan bentuk program perkalian yang dilaksanakan sebagai penjumlahan yang berulang-ulang. CONTOH 11-9 Lakukan modifikasi program perkalian pada Contoh 11-8 dengan memakai instruksi INZ sebagai pengganti JZ. JAWABAN Perhatikan Program berikut : Label Mnemonik Komentar MVI A,00H :kosongkan (bersihkan) akumulator MVI B,0CH :Isikan desimal 12 kedalam B MVI C08H : preset pencacah dengan 8 REPEAT: ADDB : tambahkan desimal 12 DCR C : kurangi Isi pencacah dengan 1 JNZ REPEAT : Periksa apakah sudah Nol HLT : berhenti Program ini lebih sederhana karena satu instruksi JMP dan satu label telah dihilangkan. Selama pencacah masih lebih besar dari nol. Instruksi JNZ akan

Page 67: ARSITEKTUR KOMPUTER.pdf

memaksa komputer mengulangi loop dari kedudukan REPEAT. Bilamana hitungan pencacah sudah menjadi nol, program akan turun melalui JNZ kepada HLT CONTOH 11-10 Lakukan asembli-tangan dari program contoh 11-9 dengan alamat awal 2000H JAWABAN

Alamat Isi Simbolik Alamat 2000H 3EH` MVI A,00H 2001H 00H 2002H 06H MV1 B,CH

2003H 0CH 2004H 0EH MVI C,08H 2005H 08H 2006H 80H ADD B 2007H 0DH DCR C 2008H C2H JNZ 2006H 2009H 06H 200AH 20H 200BH 76H HLT tiga instruksi pertama menginisialisasi register sebelum perkalian dimulai. Dengan mengubah nilai-nilai awalnya, kita dapat mengalikan bilangan-bilangan CONTOH 11-11 Ubahlah bagian perkalian dari program contoh terdahulu supaya menjadi sebuah subrutin yang terletak pada alamat F006H JAWABAN

Alamat Isi Simbolik F006H 80H ADD B F007H 0DH DCR C F008H C2H JNZ F006H 009H 06H F00AH F0H F00BH C9H RET

Instruksi-instruksi inisialisasi tergantung pada bilangan-bilangan yang akan dikalikan. Karena itu bagian tersebut tidak termasuk kedalam subrutin. Subrutin hanya memuat bagian operasi perkalian dari program. Dalam melaksanakan relokasi program diatas, kita telah memetakan (mapped) atau mengkorversikan alamat 2006H-200BH kealamat F006H-F008H. Juga, instruksi HLT telah diganti dengan instruksi RET untuk mengendalikan ke program semula. CONTOH 11-12 Subrutin perkalian dari Contoh 11-11 digunakan dalam program berikut. Apa yang dilakukan oleh program ini? MV1 A,00H MV1 B,10H

Page 68: ARSITEKTUR KOMPUTER.pdf

MV1 C,0EH CALLF006H HLT JAWABAN Angka 10 H heksadesimal ekivalen dengan 15 desimal, dan 0EH heksadesimal ekivalen dengan desimal 14. Tiga instruksi pertama mengosongkan akumulator, mengisi register B dengan desimal 16 dan mempreset pencacah desimal dengan 14. Instruksi CALL akan mengarahkan komputer kepada subrutin perkalian dari contoh sebelumnya. Pada waktu RET dilaksanakan, isi akumulator adalah E0H yang, ekivalen dengan desimal 224. Dalam kesempatan ini akan diperkenalkan istilah parameter, yang berupa data-data diperlukan oleh subrutin dalam melaksanakan program secara layak. Subrutin perkalian yang menempati lokasi awal F006H memerlukan tiga parameter (A,B dan C). parameter-parameter ini kita sampaikan kepada subrutin perkalian dengan cara mengosongkan akumulator, lalu mengisi register B dengan bilangan yang hendak dikalikan (multiplicand), dan akhirnya mempreset register C dengan bilangan-bilangan pengali (multiflier). Dengan katalain, kita membuat A = 00H,B = 10H, dan C = 0H. Penyaluran data kepada subrutin melalui cara demikian disebut penyampaian parameter register (register parameter passing). 11-6 INSTRUKSI LOGIKA Suatu mikroprosesor dapat melakukan Operasi logika maupun operasi-op[erasi aritmetik. Pada pasal ini akan diuraikan instruksi-instruksi logika dalam SAP-2, yang merupakan bagian dari instruksi 8080/8085. CMA CMA adalah singkatan dari “complemet the accumulator “ (komplement isi akumulator). Eksekusi dari CMA akan membalikkan setiap bit dalam akumulator dan menghasilkan komplement –1 dari bilangan yang bersangkutan. ANA ANA berarti AND-kan isi akumulator dengan isi register tertentu. Hasilmya disimpan dalam akumulator. Misalnya ANA B Berarti AND-kan isi akumulator dengan isi register B. Operasi AND dilaksanakan atas dasar bit demi bit. Sebagai contoh, kita umpamakan kedua register itu berisi : A = 1100 1100 (11-1) Dan B = 1111 0001 (11-2) Eksekusi dari ANA B menghasilkan : A = 1100 0000 Perhatikan bahwa operasi AND dilakukan bit demi bit seperti terlihat pada gambar 11-6. Operasi AND dilaksanakan pada setiap pasangan bit misalnya A7 dengan B7, A6 dengan B6, A5 dengan B5 dan seterusnya. Hasilnya disimpan dalam akumulator. Dua buah instruksi ANA tersedia dalam SAP-2 yaitu ANA B dan ANA C.. Tabel 11-1 menyajikan kode Operasinya.

Page 69: ARSITEKTUR KOMPUTER.pdf

ORA ORA adalah mnemonik untuk OR the accumulator (OR–kan akumulator) dengan register tertentu, dua instruksi ORA dan SAP-2 adalah ORA B dan ORA C. Misalnya, isi akumulator dan isi register B adalah yang diberikan oleh persamaan 11-1.

Gambar 11-6. Instruksi logika. Dan 11-2, maka eksekusi dari ORA B akan memberikan A = 1111 1101 XRA XRA berarti XOR the accumulator (XOR-kan akumulator) dengan register tertentu. Perangkat instruksi SAP-2 mengandung XRA B dan XRA C. Sebagai contoh, dengan isi akumulator dan register B yang diberikan oleh persamaan 11-1 dan 11-2, maka eksekusi dari XRA B menghasilkan : A = 0011 1101 ANI SAP-2 juga memiliki instruksi logika yang bersifat Segera ANI berupa singkatan dari and inmediate (AND-kan segera). Instruksi ini memberitahu kepada komputer untuk meng-AND-kan isi akumlator dengan bite yang segera mengikuti kode operasi. Misalkan jika A = 0101 1110 Maka eksekusi dari ANI C7H akan meng-AND-kan 0101 1110 dengan 1100 0111 dan menghasilkan isi akumulator yang baru A = 0100 0110 ORI ORI adalah mnemonik untuk OR Immediate (OR-kan segera). Isi akumulator-OR-kan dengan bite yang mengikuti kode operasinya. Jika A= 0011 1000 Maka eksekusi dari ORI 5AH akan meng-OR-kan 0110 1000 dengan 0101 1010 dan menghasilkan isi akumulator yang baru yaitu 0111 1010

Page 70: ARSITEKTUR KOMPUTER.pdf

XRI XRI adalah singkatan dari XOR immediate (XOR-kan segera). Jika A = 0001 1100 Maka eksekusi dari XRI D4H akan melaksanakan operasi XOR antara 0001 1100 dan 1101 0100 hasilnya adalah : A= 11.00 1000 11-7 INSTRUKSI-INSTRUKSI YANG LAIN Bagian ini akan menguraikan sisa instruksi dalam SAP-2 yang belum dijelaskan karena instruksi-instruksi ini tidak termasuk dalam kategori khusus, maka semuanya dikumpulkan disini dalam suatu kelompok aneka ragam. NOP NOP adalah singkatan dari No Operation (tiada atau tanpa operasi). Selama eksekusi dari instruksi NOP tidak akan terjadi apapun pada semua keadaan T yang bersangkutan. Sebab itu, tiada register yang mengalami perubahan selama operasi NOP. Instruksi NOP dipakai untuk “membeli waktu” untuk mengambil dan mengeksekusi instruksi. NOP diperlukan empat keadaan T. Dengan mengulangi instruksi NOP beberapa kali, kita dapat menunda pemprosesan data. Hal ini amat berguna dalam operasi pengaturan waktu. Misalnya jika kita menempatkan sebuah instruksi NOP dalam suatu loop dan melaksanakan sebanyak 100 kali maka kita akan memperoleh waktu pindah selama 400 kali keadaan T. HLT Kita telah sering menggunakannya untuk menghentikan pemprosesan data. HLT bererti berhenti (halt). IN In adalah mnemonik untuk instruksi input (masukan), yang memberitahu komputer untuk memindahkan data dari bandar (port) tertentu ke akumulator. Karena ada dua bandar masukan, kita harus menentukan salah satu diantaranya. Format bagi operasi ini adalah : IN byte Misalnya IN 02H Berarti memindahkan data dalam bandar 2 ke akumulator OUT OUT adalah singkatan dari output (krluaran). Bila instruksi ini dilaksanakan, kata akumulator akan disikan ke dalam bandar keluaran yang ditunjuk. Format instruksi ini adalah OUT byte

Page 71: ARSITEKTUR KOMPUTER.pdf

Dengan adanya bandar keluaran bernomer 3 dan 4 (Gambar 11-2), kita harus menentukan bandar keluaran mana yang hendak digunakan.. Misalnya, instruksi OUT 03H Akan memindahkan isi akumulator menuju ke bandar 3. RAL RAL adalah mnemonik untuk rotate the accumulator left (putar akumulator ke kiri) Instruksi ini akan menggeser semua bit ke kiri dan memindahkan MSB ke posisi LSB, seperti diperlihatkan dalam Gambar 11-7a . Sebagai contoh, andaikanlah isi akumulator sama dengan A = 1011 0100 Eksekusi RAL akan menghasilkan A = 0110 1001 Terlihat disini bahwa semua bit tergeser ke kiri dan MSB menempati posisi LSB.

ADA GAMBAR 11-7

RAR RAR adalah singkatan dari rotate the acumuklator raight (putar akumulator ke kanan). Dalam hal ini, bit-bit bergeser ke kanan, dan LSD akan menempati posisi MSB, sebagaimana terlihat pada gambar 11-7b. Jika : A = 1011 0100 Maka eksekusi RAR akan memberikan A = 0101 1010 CONTOH 11-18 Bit-bit dalam suatu byte diberi nomor 7sampai 0 (dari SMB sampai LSB). Tunjukkan sebuah program yang dapat memasukkan sebuah byte dari bandar 2 dan menentukan apakah bit nomor 0 bernilai 1 atau 0. Jika bit itu bernilai 1, program akan mengisi akumulator dengan sebuah huruf ASCII Y (yes = ya). Jika bit tersebut bernilai 0, program harus mengisi akumlator dengan huruf ASCII (No = bukan). Jawaban Y atau N dikirim ke bandar keluaran 3.

Page 72: ARSITEKTUR KOMPUTER.pdf

JAWABAN Label Mnemonik Komentar

IN 02H ;ambil byte dari bandar 2 ANI 01H ;isolasikan bit ke 0 JNZ YES ;lompat jika bit ke 0 bernilai 1 MV1 A,4EH ;isikan N keakumulator JMP DONE ;lompati instruksi berikutnya YES: MV1 A,59H ;isikan Y ke akumulator DONE : OUT 03H ;kirimkan jawaban ke bandar 3 HLT Instruksi IN 02H memindahkan data dari bandar masukan ke bandar 2 ke akumulator sehingga A = A7A6A5A4A3A2A1A0 Bite yang harus segera di-AND-kan menurut instruksi ANI 0IH adalah 0000 0001 Byte ini disebut perisai pelindung/penutup (mask) krena Bit-bit bernilai 0 akan menghapuskan bit-bit tinggi yang bersesuaian dalam akumulator. Dengan kata lain, sesudah eksekusi ANI 01H, isi akumulator menjadi : A = 0000 000A0 Jika A0 = 1, instruksi JNZ YES akan menghasilkan Lompatan menuju ke instruksi MVI A, 59H, yang akan mengisikan 59H (ASCII untuk Y) ke dalam akumulator. Jika A0 = 0, program akan turun ke instruksi MVI A, 4EH, yang akan mengisi akumulator dengan kode ASCII untuk N. Instruksi OUT 03H akan memindahkan jawaban ASCII Y dan N, ke bandar 3. Dengan demikian peraga heksadesimal akan menyajikan 59H atau 4EH. CONTOH 11-14 Sebagai pengganti keluaran paralel pada bandar 3, kita dapat membuat keluaran seri pada bandar 4. Lakukan Modifikasi programn pada controh 11-13 sehingga jawaban (59H atau 4EH) diubah menjadi keluaran serial pada bit 0 dari bandar 4. JAWABAN Label Mnemonik Komentar IN 02H ANI 01H INZ YES MV1A, 4EH JMP DONE YES : MV1 A,59H DONE : MV1 C,08H ;Isilah pencacah dengan 8. AGAIN : OUT 04H ;Kirimkan LSB ke bandar 4. RAR ;Tempatkan bit berikutnya. DCR C ;Turunkan cacahan dengan 1 JNZ AGAIN ;Periksa cacahan HLT Dalam mengubah data paralel menjadi data serial, mula-mula dikirimkan bit A0, kemudian bit A1 lalu bit A2 dan seterusnya.

Page 73: ARSITEKTUR KOMPUTER.pdf

CONTOH 11-15 Berjabat tangan (handshaking) adalah suatu interaksi antara CPU dan piranti periferal yang berlangsung selama pemindahan data I/0. Dalam SAP-2, proses berjabat tangan berlangsung sebagai berikut. Sesudah kita memasukkan 2 digit( 1 byte) ke dalam enkoder heksadesimal dari Gambar 11-2, data tersebut akan diisikan kebandar 1, Pada waktu yang bersaman, bit READY yang tinggi dikirimkan ke bandar 2. Sebelum menerima data masukan, CPU memeriksa bit READY dalam bandar 2. Jika Bit READY rendah, CPU menunggu. Jika bit READY menjadi tinggi, CPU akan menerima data dari bandar 1. Sesudah transfer data selesai dilaksanakan. CPU mengirimkan sinyal ACKNOWLEDGE tinggi ke enkoder papan-ketik heksadesimal. Ini akan mereset bit READY menjadi 0. Bit ACKNOWLEDGE kemudian juga akan direset menjadi rendah. Setelah kita memasukkan sebuah byte baru, siklus serupa akan dimulai dengan pengiriman data baru ke bandar 1 dan pengiriman bit READY yang tinggi ke bandar 2. Urutan berjabat tangan SAP-2 adalah sebagai berikut :

1. Bit READY (bit 0,bandar,2) menjadi tinggi 2. Memasukkan data dari bandar 1 ke CPU. 3. Bit ACKNOWLEDGE (bit 7, pintu 4) menjadi tinggi dan mereset bit

READY. 4. Mereset bit ACKNOWLEDGE

Tuliskan sebuah program untuk memasukkan satu byte data dari bandar 1 dengan memakai operasi berjabat tangan. Simpan byte ini dalam register B. JAWABAN Label Mnemonik Komentar STATUS: IN 02H ;Masukkan byte dari bandar 2. ANI 01h ;Isolasikan bit READY JZ STATUS ;Lompat kembali jika belum siap IN 01H ;Pindahkan data dari pintu I. MV1 BA ;Pindahkan dari A ke B MV1 A,80 :Siapkan bit ACKNOWLEDGE. OUT04H ;Keluarkan ACKNOWLEDGE tinggi MV1A,00H ;Reset bit ACKNOWLEDGE OUT04H :Keluarkan ACKNOWLEDGE rendah. HLT Jika bit READY rendah, ANI 01H akan membuat isi akumulator menjadi nol.Sebagai akibatnya JZ STATUS akan mengembalikan program ke instruksi IN 02H. Looping akan berlanjut sampai bit READY menjadi tinggi, yang menunjukkan bahwa data dalam bandar 1 telah siap. Jika bit READY tinggi,program akan diteruskan melalui instruksi JZ STATUS ke instruksi IN 01H. Ini akan memindahkan satu byte data dari bandar 1ke akumulator. Instruksi MOV selanjutnya akan mengirimkan data bersangkutan ke kerister B. Bit ACKNOWLEDGE kemudian disiapkan dengan instruksi MVI A,80H. Instruksi OUT 04H selanjutnyaakan menyalurkan sinyal ACKNOWLEDGE tinggi ini kepada enkoder heksadesimal di mana perangkat keras internal akan mereset bit READY. Kemudian bit ACKNOWLEDGE direset guna mempersiapkan siklus masukan yang berikutnya.

Page 74: ARSITEKTUR KOMPUTER.pdf

11-8 IKHTISAT SAP-2 Pasal ini akan mengikhtisarkan keadaan-keadaan T, berbagai macam bendera, dan modus-modus pengalamatan dari SAP-2. Keadaan T Pengendari-pengurut SAP-2 dimikroprogram dengan sebuah siklus mesin variabel. Ini berarti bahwa beberapa instruksi tertentu membutuhkan waktu eksekusi yang lebih lama dibandingkan dengan instruksi yang lain. Sebagaimana dapat kita ingat kembali, ide pokok dari pembuatan mikroprogram adalah menyimpan rutin-rutin kendali dalam sebuah ROM dan mengaksesnya bilamana dibutuhkan. Tabel 11-3 memperlihatkan masing-masing instruksi dan jumlah keadaan T yang diperlukan guna melaksanakannya. Misalnya, SAP-2memerlukan empat keadaan T untuk melaksanakan instruksi ADD B, tujuh keadaan T untuk melaksanakan ANI byte, delapanbelas keadaan T untuk CALL. Dan sebagainya. Mengetahui jumlah keadaan T bagi setiap instruksi yang menuntut pewaktuan tepat. Perhatikan bahwa instruksi JM memiliki 10/7 keadaan T. Ini berarti dibutuhkan 10 keadan T bilamana terjadi lompatan dan hanya 7 keadaan T bilamana tidak terjadi lompatan. Demikian pula bagi lompatan bersyarat yang lain; yaitu 10 keadaan T untuk operasi dengan lompatan dan 7 keadaan T untuk operasi tanpa lompatan.

Bendera Seperti telah kita ketahui, akumulator dapat menjadi negatif atau nol selama eksekusi dari beberapa instruksi. Keadaan ini mempengaruhi bendera tanda dan bendera nol. Gambar 1108 memperlihatkan rangkaian yang digunakan SAP-2 untuk mengatur keadaan bendera-bendera. Bilamana isi akumulator menjadi negatif, bit terdepan A7 berharg a 1. Bit tanda ini menggerakkan gerbang AND bagian bawah. Apabilaisi akumulator sama dengan nol,semua bit berharga nol dan keluaran gerbang XOR adalah 1. Keluaran XOR ini menggerakkan gerbang AND bagian atas. Jika sinyal penggerbangan LF berharga tinggi, keadaan bendera akan diperbarui untuk memberitahukan keadaan tanda dan nol dari akumulator. Ini berarti ZFLAG akan menjadi tinggi apabila isi akumulator nol; dan SFLAG akan menjadi tinggi apabila isi akumulator negatif.

Page 75: ARSITEKTUR KOMPUTER.pdf

Tidak semua instruksi dapat mempengaruhi bendera. Dalam Tabel 11-3 ditunjukkan beberapa instruksi yang dapat menyebabkan perubahan pada keadaan bendera, yaitu ADD, ANA, ANI, DCR, INR, ORA, ORI, SUB, XRA, dan XRI. Mengapa hanya instruksi-instruksi ini ? Karena sinyal LF dari Gambar 11-8 akan menjadi tinggi hanya bilamana instruksi-instruksi tersebut dilaksanakan. Hal ini ditentukan oleh pemikroprograman bit LF untuk setiap instruksi. Dengan kata lain, dalam ROM kendali kita menyimpan bit LF tinggi untuk instruksi yang disebut di atas dan bit LF yang rendah bagi semua instruksi yang lain. TABEL 11-3 PERANGKAT INSTRUKSI SAP-2 Instruksi Kode Operasi Keadaan T Bendera Pengalamatan Jumlah byte ADDB 80 4 S,Z Register 1 ADD C 81 4 S,Z Register 1 ANA B A0 4 S,Z Register 1 ANA C A1 4 S,Z Register 1 ANI byte E6 7 S,Z Segera 2 CALL alamat CD 18 Tidak ada Segera 3 CMA 2F 4 Tidak ada Terangkum 1 DCR A 3D 4 S,Z Register 1 DCR B 05 4 S,Z Register 1 DCR C 0D 4 S,Z Register 1 HLT 76 5 Tidak ada - - 1 IN byte DB 10 Tidak ada Langsung 2 INR A 3C 4 S,Z Register 1 INR B 04 4 S,Z Register 1 INR C 0C 4 S,Z Register 1 JM alamat FA 10/7 Tidak ada Segera 3 JMP alamat C3 10 Tidak ada Segera 3 JNZ alamat C2 10/7 Tidak ada Segera 3 JZ alamat CA 10/7 Tidak ada Segera 3 LDA alamat 3A 13 Tidak ada Langsung 3 MOV A,B 78 4 Tidak ada Register 1 MOV A,C 79 4 Tidak ada Register 1 MOV B,A 47 4 Tidak ada Register 1 MOV B,C 41 4 Tidak ada Register 1 MOV C,A 4F 4 Tidak ada Register 1 MOV C,B 48 4 Tidak ada Register 1 MVI A, byte 3E 7 Tidak ada Segera 2 MVI B, byte 06 7 Tidak ada Segera 2 MVI C, byte 0E 7 Tidak ada Segera 2 NOP 00 4 Tidak ada -- 1 ORA B B0 4 S,Z Register 1 ORA C B1 4 S,Z Register 1 ORI byte F6 7 S,Z Segera 2 OUT byte D3 10 Tidak ada Langsung 1 RAAAL 17 4 Tidak ada Terangkum 1 RAR 1F 4 Tidak ada Terangkum 1 RET C9 10 Tidak ada Terangkum 1 STA alamat 32 13 Tidak ada Langsung 3 SUB B 90 4 S,Z Register 1 SUB C 91 4 S,Z Register 1 XRA B A8 4 S,Z Register 1 XRA C A9 4 S,Z Register 1 CRI byte EE 7 S,Z Terangkum 2

Page 76: ARSITEKTUR KOMPUTER.pdf

Lompatan Bersyarat Telah disebutkan diatas, lompatan bersyarat memerlukan sepuluh keadaan T bilamana terjadi lompatan dan hanya memerlukan tujuh keadaan T bilamana tidak terjadi lompatan. Dengan singkat hal ini dapat diuraikan sebagai berikut. Selama siklus eksekusi ROM alamat mengarahkan komputer kealamat awal dari mikrorutin suatu lompatan bersyarat. Mikroinstruksi awal akan memperhatikan kondisi bendera dan memutuskan apakah harus melompat atau tidak. Jika suatu lompatan diisyaratkan, maka mikrorutin akan berlanjut; dan bila tidak, mikrorutin akan digugurkan dan komputer memulai siklus pengambilan baru. Modus Pengalamatan Instruksi-instruksi SAP-2 mengakses data dengan cara-cara yang berbeda. Yang memberitahukan kepada kita cara mengakses data adalah operannya. Sebagai contoh akan kita lihat instruksi-instruksi LDA alamat STA alamat Ini merupakan contoh pengalamatan langsung (direct addressisng ) karena kita menunjuk alamat dari data yang hendak diambil. Cara lain adalah pengalamatan segera (inmediate addressing). Dalam modus ini kita tidak memberikan alamat dari data yang dimaksud akan tetapi kita memberikan data itu sendiri. Misalnya, instruksi MV1 A,byte Mengakses data yang hendak diisikan keakumulator dengan menggunakan byte didalam memori yang langsung terdapat dibelakang kode operasi. Instruksi segera jenis yang lain ditunjukkan dalam tabel 11-3 Instruksi seperti MOV A,B Adalah merupakan contoh dari pengalamatan register. Data yang akan diisikan itu disimpan didalam register CPU dan Bukan didalam memori. Pengalamatan register memiliki keuntungan dalam segi kecepatan karena instruksi tipe ini memerlukan keadaan T yang lebih sedikit. Pengalamatan yang tersirat (implied addressing) berarti bahwa lokasi data telah terkandung didalam kode operasinya sendiri. Contohnya adalah : RAL Yang memberitahukan untuk memutar bit-bit akumulator kekiri. Datanya berada didalam akumulator. Itu sebabnya tidak diperlukan operan dalam pengalamatan yang bersyarat. Byte Setiap instruksi menempati sejumlah byte tertentu didalam memori. Panjang instruksi-instruksi SAP-2 adalah 1,2, atau 3 byte. Tabel 11-3 menunjukkan jumlah byte dari setiap instruksi. Dapat dilihat, ADD adalah instruksi 1-byte. ANI adalah instruksi 2 –byte, CALL adalah instruksi 3-byte, dan sebagainya. CONTOH 11-16 SAP-2 memiliki detak (clock) berprekuensi 1 MHz. Ini berarti setiap keadaan T berlangsung selama 1s. Berapa waktu yang dibutuhkan untuk melaksanakan subrutine SAP-2 dibawah ini

Page 77: ARSITEKTUR KOMPUTER.pdf

Label mnemonik komentar RE MV1 C 46H : preset cacahan pada 70 desimal SUAIB DCR C ; lakukan cacahan turun JNZ SUAIB ; periksa angka cacahan NOP ; tunda T JAWABAN Instruksi MV1 dilaksanakan satu kali guna Menginisialisasi cacahan. Instruksi DCR dilaksanakan 70 kali. Sedangkan instruksi JNZ melompat kembali sebanyak 69 kali, dan meneruskan program tanpa lompatan sebanyak satu kali. Dengan jumlah keadaan T pada masing-masing Instruksi seperti tercantum dalam tabel 11-3, kita dapat menghitung waktu eksekusi total dari subrutin sebagai berikut : MV1 : 1 x 7 x 1s = 7s DCR : 70 x 4 x 1s = 280 JNZ : 69 x 10 x 1s = 690 (terjadi lompatan) JNZ: 1 x 7 x 1s = 7 (tanpa lompatan) NOP: 1 x 4 x 1s = 4 RET: 1 x 10 x 1s = 10 998s 1ms jadi waktu total yang diperlukan untuk eksekusi subrutin adalah sekitar 1 ms Subrutin seperti ini dapat menghasilkan waktu tunda sebesar 1 ms bilamana subrutin tersebut dipanggil. Banyak kasus penerapan yang membutuhkan suatu penundaan waktu. Berdasarkan tabel 11-3, instruksi-instruksi dalam subrutin diatas mempunyai panjang byte (jumlah byte) sebagai berikut : Instruksi MV1 DCR JNC NOP RET byte 2 1 3 1 1

Panjang byte total dari subrutin ini adalah 8. Sebagai bagian dari perangkat lunak SAP-2, subrutin tersebut dapat diasembli dan ditempatkan kembali (relokasi) pada alamat F010H samapi F017H. Dengan demikian eksekusi dari CALL F010H akan menghasilkan waktu tunda 1 ms CONTOH 11-17 Berapa waktu tunda yang dihasilkan oleh subrutin SAP-2 ini? Label Mnemonik Komentar MV1 B,0AH ; preset pencacah 10 desimal LOOP1: MV1 C,47H ; preset pencacah C dengan desimal 71 LOOP2: DCR C ; lakukan pencacahan turun pada C JNZ LOOP2 ; periksa cacahan C apakah sama dengan nol DCR B ; lakukan pencacahan turun pada B JNZ LOOP1 ; periksa cacahan B apakah sama dengan nol JAWABAN Subrutin ini mempunyai dua buah loop, yang satu terletak didalam yang lain. Loop-dalam mengandung instruksi DCR C dan JNZ Loop2. Loop-dalam ini menghasilkan waktu tunda :

Page 78: ARSITEKTUR KOMPUTER.pdf

DCR C 71x4x1s = 284s JNZ LOOP2 70x10x1s = 700 (dengan lompatan) JNZ LOOP2 1x7x1s = 7 (tanpa lompatan) 991s apabila cacahan C sudah mencapai nol, program akan diteruskan keinstruksi JNZ LOOP2. Pencacah B akan dikurangi dengan 1 dan JNZ LOOP1 akan mengarahkan program kembali ke MV1 C,47H. Dengan demikian kita memasuki LOOP2 untuk kedua kalinya. Oleh karena LOOP2 ada didalam LOOP1, LOOP2 akan dilaksanakan 10 kali dan waktu tunda keseluruhan yang bersangkutan adalah sekitar 10 ms. Perhitungan untuk waktu tunda sub rutin secara keseluruhan adalah sebagai berikut : MV1 B,0AH : 1 x 7 x 1s = 7s MVI C, 47H :10 x 7 x is = 70 LOOP2 : 10 x 991s = 9.910 DCR B : 10 x 4 x 1s = 40 JNZ LOOP1 : 1 x 7 x 1s = 90 (dengan lompatan) JNZ LOOP1 : 1 x 7 x 1s = 7 (tanpa lompatan) RET : 1 x 10 x 1s = 10 _____________ 10.134s 10 ms. Panjang byte subrutin SAP-2 ini adalah : 2 + 2 + 1 + 3 + 1 + 3 + 1 = 13 subrutin diatas dapat diasembli pada alamat F020H sampai F02CH. Dengan demikian sebuah instruksi CALL F020H akan menghasilkan waktu tunda sekitar 10ms. Dengan mengubah instruksi pertama menjadi : MV1 B,64H Pencacah B akan dipreset Dengan 100 desimal. Dalam hal ini, loop-dalam akan dieksekusi sebanyak 100 kali dan waktu tunda keseluruhan yang dihasilkan menjadi sekitar 100 ms. Subrutin 100-ms ini dapat ditempatkan (relovasi) pada alamat F030H sampai F03CH. CONTOH 11-18 Berikut ini adalah sebuah subrutin dengan tiga buah loop yang disarankan (nested)satu didalam yang lain. Berapakah waktu tunda yang dihasilkan? Label Mnemonik Komentar MV1 A 0AH ; preset pencacah A dengan desimal 10 LOOP1 : MV1 B,64H ; preset pencacah B dengan desimal 100 LOOP2 : MV1 C,47H ; preset pencacah C dengan desimal 71 LOOP3 : DCR C ; lakukan pencacahan turun pada C JNZ LOOP3 ; periksa C apakah sama dengan nol DCR B ; turunkan cacahan B JNZ LOOP2 ; periksa B apakah sama dengan nol DCR A ; turunkan cacahan A JNZ LOOP1 ; periksa A apakah sama dengan nol RET

Page 79: ARSITEKTUR KOMPUTER.pdf

JAWABAN Untuk melewati LOOP3 diperlukan waktu sekitar 1 ms. LOOP2 akan melintasi LOOP3 sebanyak 100 kali, sehingga waktu total yang dibutuhkan ialah sekita 100 ms guna menyelesaikan LOOP2 selengkapnya LOOP1 membuat 10 kali lintasan melalui LOOP2, dan karena itu membutuhkan waktu 1 detik untuk menjelajahi seluruh subrutin tersebut. Apa yang kita miliki ? Sebuah subrutin satu detik. Ini kita dapat tempatkan pada alamat F040H sampai F052. Untuk mendapatkan waktu tunda 1-detik cukup digunakan sebuah instruksi CALL F040H . Dengan mengubah instruksi permulaan menjadi : MV1 A,64H LOOP1 akan membuat 100 kali lintasa melalui LOOP2, dan LOOP2 membuat 100 kali lintasan melalui LOOP3. Subrutin yang diperoleh dapat ditempatkan pada alamat F060H sampai F072H dan menghasilkan waktu tunda sebesar 10 detik. Tabel 11-4 merangkumkan waktu-waktu tunda SAP2. Dengan subrutin-subrutin ini , kita dapat menghasilkan waktu tunda dari 1 mili detik (ms) sampai 10 detik (s). TABEL 11-4. SUBRUTIN SAP-2 _______________________________________________ Label Alamat Waktu Register Awal Tunda Yang dipakai _______________________________________________ DIMS F010H 1 ms C D10MS F020H 10 ms B,C D100MS F030H 100 ms B,C DISEC F040H 1 s A,B,C D10SEC F060H 10 s A,B,C _______________________________________________ CONTOH 11-19 Lampu-lampu rambu lalu-lintas disuatu jalan utama menyalakan lampu hijau selama 50 detik, lampu kuning selama 6 detik dan lampu merah selama 30 detik. Bit-bit 1,2 dan 3 dari bandar 4 adalah masukan-masukan kendali keperalatan peri-feral yang menjalankan lampu-lampu itu. Tuliskan sebuah program yang menghasilkan waktu tunda 50,6 dan 30 detik untuk lampu-lampu rambu lalu-lintas tersebut. JAWABAN Label Mnemonik Komentar AGAIN MV1 A,32H : preset pencacah dengan 50 desimal STA SAVE ; simpan isi akumulator MV1 02H ; pasang bit 1 OUT 04H ; nyalakan lampu hijau LOOPGR CALL DISEC ; panggil subrutin 1-detik LDA SAVE ; isikan arus cacahan A DCR A ; turunkan cacahan A dengan 1 STA SAVE ; simpan A yang telah dikurangi JNZ LOOPGR ; periksa apakah ada harga nol MV1 A,06H ; preset pencacah dengan 6 desimal STA SAVE MV1 A,04H ; pasang bit 2

Page 80: ARSITEKTUR KOMPUTER.pdf

OUT 04H ; nyalakan lampu kuning NOPPYE ; CALL DISET LDA SAVE DCR A STA SAVE JNZ LOOPYE MV1 A,1EH ; preset pencacah dengan 30 desimal STA SAVE MV1 A,08H ; pasang bit 3 OUT 04H ; nyalakan lampu merah LOOPRE : CALL DISEC LDA SAVE DCR A STA SAVE JNZ LOOPRE JMP AGAIN SAVE : Data Marilah kita tinjau bagian program yang dipakai untuk menyalakan lampu hijau ; program serupa berlaku pula bagi lampu kuning dan merah. Bagian program ini dimulai dengan instruksi MV1 A, 32H, yang akan meletakkan bilangan 50 desimal ke dalam akumulator. Nilai awal ini disimpan didalam suatu lokasi memori yang disebut SAVE melalui instruksi STA SAVE. Instruksi MV1 A, 02H akan menyiapkan bit 1 dalam akumulator; kemudian dengan instruksi OUT 04H bit tinggi tersebut dipindahkan ke bandar 4. karena bandar ini mengendalikan lampu-lampu lalu-lintas tersebut, maka lampu hijau akan dinyalakan. Instruksi CALL DISEC menghasilkan waktu tunda sebesar 1-detik. Instruksi berikutnya, LDA SAVE, akan mengisi akumulator dengan bilangan 50 desimal. Kemudian cacahan ini akan diturunkan menjadi 49 melalui instruksi DCR A. Angka ini selanjutnya disimpan dilokasi memori SAVE dengan memakai instruksi STA SAVE. Setelah itu, instruksi JNZ LOOPGR mengembalikan program ke instruksi CALL DISEC untuk memperoleh waktu tunda 1-detik yang kedua kalinya. Instruksi CALL DISEC dilaksanakan sebanyak 50 kali dan dengan ini lampu hijau akan menyala selama 50 detik. Selanjutnya program diteruskan melalui instruksi JNZ LOOPGR ke instruksi MV1 A, 06H. Bagian program yang akan menyalakan lampu kuning mulai dilaksanakan dari sini, dan sebagai hasilnya lampu kuning akan menyala selama 6 detik. Akhirnya, eksekusi dari bagian program untuk lampu merah akan membuat lampu merah itu menyala selama 30 detik. Seluruh proses ini akan diulang dengan instruksi JMP AGAIN. Dengan cara demikian, program tersebut akan mengendalikan pewaktuan lampu-lampu hijau, kuning dan merah. CONTOH 11-20 Nada C- tengah pada sebuah piano mempunyai prekuensi 261,63 Hz. Bit 5 dari bandar 4 dihubungkan dengan sebuah penguat yang mengendalikan pengeras suara ( loudspeaker). Tuliskan sebuah program untuk menyalurkan nada C tengah tersebut ke pengeras suara.

Page 81: ARSITEKTUR KOMPUTER.pdf

JAWABAN Periode nada C – tengah adalah : Sinyal yang akan dikirimkan ke bandar 4 adalah seperti yang dilukiskan pada gambar 11-9. Gelombang – persegi ini berada pada tingkat logika tinggi selama 1,911s dan pada tingkat logika rendah selama 1,911s. Periode totalnya 3.822s dan prekuensinya 261,63 Hz. Karena sinyal berbentuk gelombang persegi bukannya sinusoida, maka nada tersebut akan terdengar sebagai suara yang mengulangi destorsi. Tetapi meskipun demikian, suara ini akan dapat dikenali sebagai nada C – tengah. Program yang ditanyakan adalah sebagai berikut

Label Mnemonik Komentar LOOP1: OUT 04H ; kirimkan bit ke pengeras suara MV1 C,86H ; preset pencacah dengan desimal 134 LOPP2: DCR C ; lakukan pencacahan turun JNZ LOOP2 ; periksa angka cacahan CMA ; preset bit 5 NOP ;penalaan halus (fine tuning) NOP ; penalaan halus JMP LOOP1 ; kembali untuk setengah siklus berikutnya Instruksi OUT 04H mengirimkan suatu bit (rendah atau tinggi) kepada pengeras suara. Instruksi MV1 akan mempreset pencacah dengan bilangan desimal 134. Kemudian disusul LOOP2, dengan instreuksi DCR dan JNZ yang menghasilkan waktu tunda sebesar 1.866s. Selanjutnya program diteruskan ke instruksi CMA yang menghasilkan komplemen bagi semua bit didalam akumulator. Dua instruksi NOP menambah waktu rendah sebesar 8s. Instruksi JMP LOOP1 selanjutnya akan mengembalikan program kepada awalnya. Ketika instruksi OUT 04H dilaksanakan, bit 5 (yang sudah dikomplementkan) disalurkan kepengeras – suara. Dengan cara ini pengeras-suara akan digerakkan kedalam keadaan yang berlawanan. Waktu pelaksanaan untuk kedua setengah – siklus tersebut adalah 3,824s. Cukup dekat dengan periode nada C – tengah.

μs3,822261,63Hz

1f1 T

Page 82: ARSITEKTUR KOMPUTER.pdf

Gambar 11-10

Perhitungan waktu tunda dapat dilakukan sebagai berikut : OUT 04H : 1 x 10 x 1s = 10s MV1 C,86H : 1 x 7 x 1s = 7 DCR C : 134 x 4 x 1 s = 536 JNZ LOOP2 : 133 x 10 x 1s = 1.330 JNZ LOOP2 : 1 x 7 x 1s = 7 CMA : 1 x 4 x 1s = 4 NOP (2 kali) : 2 x 4 x 1s = 8 JMP LOOP1 : 1 x 10 x 1s = 10 1.912s Hasil terakhir menunjukkan waktu setengah – siklus, sehingga periodenya 3.824s

Page 83: ARSITEKTUR KOMPUTER.pdf

CONTOH 11-21 Dari data serial kadang-kadang disebut aliran data serial sebab bit-bit mengalir satu persatu secara berurutan dalam Gambar 11-10 suatu aliran data serial menggerakkan bit 7 dari bandar 2 dengan laju kira-kira 600 bit perdetik. Tuliskan sebuah program untuk memasukkan sebuah karakter 8 – bit dalam bentuk aliran data serial dan menyimpannya pada lokasi memori 2100H. JAWABAN Dengan laju 600 bit dalam setiap detik, periode setiap bit menjadi sama dengan I / 600Hz = 1.667s Gagasan operasinya adalah memasukkan satu bit dari bandar 2, memutar akumlator kekanan, menunggu sekitar 1,600s, lalu memasukkan bit yang lain, memutar akumulator ke kanan; dan seterusnya, sampai semua bit diterima selengkapnya. Program untuk melaksanakan langkah-langkah diatas adalah sebagai berikut : Tabel Mnemonik Komentar MV1 B,00H ; isikan nol kedalam register B MV1 C,07H ; preset pencacah dengan 7 desimal BIT : IN 02H ; masukan data ANIO 80H ; isolasikan bit 7 ORA B ; perbaharui karakter RAR ; geser Bit-bit kekanan MOV B,A ; simpan bit-bit didalam B MV1 A,73H ; mulai penundaan waktu 1.600 s DELAY : DCR A ; turunkan cacahan A JNZ DELAY ; periksa A apakah sudah terjadi nol DCR C ; turunkan cacahan C JNZ BIT ; periksa C apakah sudah terjadi nol IN 02H ; masukan bit terakhir ANI 80H ; isolasikan bit 7 ORA B STA 2100H ; simpan karakter. Instruksi pertama mengosongkan register B. Instruksi kedua mengisikan 7 desimal kedalam pencacah C. IN 02H membawa masuk data dari bandar 2. Bit 7 diisolasi melalui perisai (mask) instruksi ANI karena bit 7 merupakan bit SERIAL IN dari bandar 2. Eksekusi instruksi ORA B tidak mengubah apa-apa karena register B berisi bit 0 seluruhnya. Instruksi RAR menggeser bit-bit akumulator kekanan. Setelah digeser, isi akumulator disimpan didalam register B dengan instruksi MV1 B,A. Instruksi MV1 A,73H menpreset akumulator dengan 115 desimal. Kemudian program disusun dengan loop penundaan DCR A dan JNZ DELAY, yang mengambil waktu sekitar 1.600 s Melalui instruksi DCR C isi pencacah C dikurangi 1,dan JNZ bit akan memeriksa kehadiran nol dalam cacahan C. Program melompat kembali keinstruksi IN 02H untuk mendapatkan bit berikutnya dari aliran data seri. Instruksi mask ANI mengisolasikan (memisahkan) bit 7, yang akan di OR-kan dengan isi register B. Operasi ini menggabungkan bit sebelumnya dengan Bit yang baru diterima. Sesudah

Page 84: ARSITEKTUR KOMPUTER.pdf

operasi RAR yang kedua, dua bit yang telah diterima disimpan didalam register B. Selanjutnya, program mengulang kembali loop penundaan 1.600 s . Setiap kali suatu bit baru dimasukkan dari aliran data seri, program akan dilaksanakan operasi loop. Sesudah 7 bit diterima semuanya, program akan diteruskan melalui instruksi JNZ BIT dan keluar dari loop. Empat instruksi terakhir melakukan hal-hal sebagai berikut. Instruksi IN 02H membawa masuk bit ke delapan. Instruksi ANI mengisolasi bit 7. Instruksi ORA B menggabungkan bit baru ini dengan tujuh bit yang lain didalamregister B. Sampai tahap ini, seluruh bit yang telah diterima disimpan didalam akumulator. Instruksi STA-2100H kemudian memindahkan byte ini dari akumulator kepada lokasi memori 2100H. Contoh konkrit berikut akan membantu memperjelas gambaran operasi program diatas. Andaikan 8 bit yang diterima adalah 57H, yaitu kode ASCII untuk huruf W.LSB merupakan bit Pertama yang diterima, sedangkan MSB diterima paling akhir. Sesudah eksekusi dari instruksi ORA B, isi akumulator akan tampak sebagai berikut: A= 1000 0000 (lintasan loop pertama) A= 1100 0000 (lintasan loop kedua) A= 1110 0000 (lintasan loop ketiga) A= 0111 0000 (lintasan loop keempat) A= 1011 1000 (lintasan loop kelima) A= 0101 1100 (lintasan loop keenam) A= 1010 1110 (lintasan loop ketujuh) A=0101 0111 (isi terakhir) Sambil lalu dapat disebutkan bahwa kode ASCII hanya membutuhkan 7 bit sehingga bit ke delapan (A7) boleh dibuat nol atau digunakan sebagai bit paritas.

DAFTAR ISTILAH Asembler Suatu program yang mengubah program sumber menjadi program bahasa mesin Asembli- tangan menerjemahkan suatu program sumber kedalam program bahasa mesin dengan menggunakan tanggan (secara manual) dan bukan dengan komputer. Bendera flip-flop yang dapat mengikuti dan mengawasi perubahan keadaan selama komputer beroperasi. Berjabat-tangan Interaksi antara CPU dan Piranti periferal yang terjadi selama operasi I/0. Dalam SAP-2 operasi ini melibatkan sinyal-sinyal READY dan ACKNOWLEDGE. Komentar Catatan pribadi dari seorang pemrogram dalam program bahasa asembli. Catatan ini tidak ikut diasembli dan berguna bagi pemrogram untuk mengingat kembali tentang program yang telah ditulisnya. Label Suatu nama yang diberikan kepada sebuah instruksi dalam program bahasa asembli. Untuk melompat keinstruksi ini kita dapat menggunakan label yang bersangkutan sebagai pengganti alamatnya. Asemler akan menemukan alamat yang tepat dari label itu dan akan menggunakan alamat ini dalam bahasa-mesin. Lompatan bersyarat Suatu lompatan yang terjadi hanya jika syarat tertentu dipenuhi. Mask(perisai/pelindung) Suatu byte yang digunakan dengan instruksi ANI untuk menghilangkan bit-bit tertentu. Pengalamatan langsung Cara pengalamatan yang melengkapi instruksi langsung dengan alamat dari data yang dioperasikan. Pengalamatan register Cara pengalamatan dengan mencantumkan register yang menyimpan data didalamnya.

Page 85: ARSITEKTUR KOMPUTER.pdf

Pengalamatan segera Cara pengalamatan dengan mencantumkan data yang hendak dioperasikan sebagai byte yang segera mengikuti kode operasi dari instruksi. Pengalamatan tersirat Cara pengalamatan dimana lokasi data yang dimaksud sudah terkandung dalam Mnemonik. Relokasi Memindahkan suatu program atau subrutin kebagian dlain dari memori. Dalam melakukan ini, alamat dari instruksi lompatan harus diganti dengan alamat yang baru. Subrutin Suatu program yang disimpan pada lokasi-lokasi memori lebih tinggi dan dapat digunakan berulang-ulang sebagai bagian dari program utama.