Daisypath Friendship tickers

Selasa, 20 Maret 2012

BAB I ORGANISASI KOMPUTER


Tujuan
Setelah mempelajari bab ini, mahasiswa mampu:
1.      Mahasiswa memahami struktur dasar komputer.
2.      Mahasiswa mengerti arsitektur internal mikroprosesor secara umum.
3.      Mahasiswa mengenal sejarah mikroprosesor.
4.      Mahasiswa mengenal internal arsitektur mikroprosesor 8086
5.      Mahasiswa mengenal secara umum bus alamat dan data, register, ALU, I/O dan memori.
  1.1            Pendahuluan
Sistem mikroprosesor bekerja pada 2 level tegangan, yaitu 0 Volt dan +5 Volt. Oleh karenanya kita dapat mempergunakan sistem bilangan Biner (Binary) untuk merepresentasikan kedua level tegangan tersebut dengan simbol ‘0’ dan simbol ‘1’. Sistem yang hanya mengenal 2 besaran, seperti halnya mikroprosesor, disebut sistem digital. Sementara sistem yang mengenal jumlah besaran yang sangat banyak (bahkan mencapai tak berhingga) disebut sistem analog.
Pada umumnya, diluar sistem mikroprosesor, digunakan sistem analog. Oleh karena adanya perbedaan ini, sebelum mikroprosesor dapat mengolah data dari luar sistemnya, data tersebut harus dikonversi terlebih dahulu ke sistem digital. Pengubahan ini dilakukan oleh blok Input dan Output.
















Gambar 1 Proses sinyal analog (input/output) ke mikroprosesor
Fungsi dari masing-masing bagian :
1.      Blok Input memiliki 2 fungsi yaitu (1) mengkonversi besaran yang berlaku di luar sistem μP menjadi besaran biner, dan (2) menyimpan informasi biner untuk sementara waktu sampai μP memiliki waktu untuk membacanya. Contoh : agar sinyal dari microphone dapat direkam oleh μP, diperlukan ADC (Analog to Digital Converter) yg terdapat di Sound Card dalam komputer anda.
2.      Control Unit (CU) berfungsi untuk mengatur operasi seluruh sistem dengan menghasilkan atau memproses sinyal kontrol
3.      Arithmetic and Logic Unit (ALU) berfungsi untuk membantu CU saat melakukan perhitungan aritmetika (ADD, SUB) dan logika (AND, OR, XOR, SHL, SHR)
4.      Memory berfungsi untuk menyimpan informasi biner
5.       Blok Output memiliki 2 fungsi yaitu (1) mengkonversi besaran biner menjadi suatu besaran tertentu, dan (2) menyimpan informasi biner dari mikroprosesor sampai perangkat luar yg akan membaca data tersebut siap. Contoh : agar informasi lagu yang tersimpan di memori dapat didengarkan dari speaker, maka diperlukan DAC (Digital to Analog Converter) yg terdapat di Sound Card dalam komputer anda.

Cara Kerja
1.      Sistem diluar sistem uP bekerja pada besaran analog. Blok Input berfungsi untuk mengubah besaran tersebut menjadi besaran biner yang dapat dimengerti oleh uP. Setelah blok Input mengubahnya menjadi besaran biner, maka informasi biner tersebut dikirimkan ke uP.
2.      Agar uP mengetahui bahwa blok Input akan mengirim data, terlebih dahulu blok Input mengirim sinyal kontrol ke uP.
3.      CU setelah menerima sinyal kontrol tersebut akan membaca informasi yang diberikan oleh blok Input dan menyimpannya di memori.
4.      Jika diperlukan, informasi yang disimpan di memori tersebut akan diambil kembali untuk diproses lebih lanjut dengan bantuan ALU.
5.      Hasil proses ini dikirimkan oleh CU ke blok Output. Blok Output akan mengubah besaran biner menjadi suatu besaran tertentu sesuai keinginan pembuatnya.

Case Study : Alat Pengukur Rata-rata Temperature

1.      Blok Input adalah termometer digital untuk mengukur suhu diluar sistem dan engubahnya menjadi representasi biner
2.      Mengirim sinyal kontrol ‘ada data’ ke uP untuk mendapatkan perhatian uP
3.      CU akan membaca informasi biner tersebut dan menyimpannya di memori
4.      Setelah informasi terkumpul selama 1 menit, CU harus memproses semua informasi yang telah terkumpul dan menghitung rata-ratanya.
5.      Hasil proses ini dikeluarkan ke blok Output untuk diubah menjadi suatu tegangan.  Tegangan hasil blok Output akan menggerakkan jarum penunjuk untuk memberikan
informasi rata-rata temperatur

  1.2            Sistem Komputer

Apakah beda antara komputer dengan mikroprosesor? Bab ini akan menjelaskannya secara ringkas, dengan fokus pada segi perangkat keras dan pemrograman yang mendukungnya.
1. Arsitektur Komputer
Arsitektur komputer secara umum, sesuai dengan von Neumann, seperti terlihat dalam Gambar I-1. terdiri atas beberapa komponen, yakni: mikroprosesor sebagai pusatnya (CPU = Central Processing Unit), memori, port input/output, serta bus.





2. Mikroprosesor/CPU
Mikroprosesor atau CPU adalah “otak” yang merupakan pengendali utama semua operasi dalam sistem komputer. Mikroprosesor mengambil instruksi biner dari memori, menerjemahkannya menjadi serangkaian aksi dan menjalankannya. Aksi tersebut bisa berupa transfer data dari dan ke memori, operasi aritmatika dan logika, atau pembangkitan sinyal kendali.
3. Memori
Memori adalah komponen yang digunakan untuk menyimpan instruksi-instruksi biner yang akan dijalankan oleh mikroprosesor, serta data yang digunakan untuk bekerja. Dalam pandangan Penulis, yang dimaksud sebagai memori dalam diktat ini berupa memori yang dapat langsung diakses oleh mikroprosesor, yaitu RAM (random access memory) yang dapat dibaca-tulis dan ROM (read only memory) yang hanya dapat dibaca saja.
Sedangkan komponen penyimpan data yang lain, seperti floppy disk, harddisk, CDROM, dll., dikelompokkan sebagai perangkat (device) input/output. Setiap lokasi data dalam memori diberi alamat tertentu sehingga dapat secara khusus dituju oleh mikroprosesor. Dalam sistem komputer, memori tidak harus berupa sebuah komponen tunggal, tapi bisa lebih asalkan tidak ada alamat yang saling bertindihan. Satuan memori menentukan ukuran data pada setiap lokasi di memori, pada personal komputer satuan memori biasanya adalah 8 bit (1 byte), sedangkan pada mainframe ada yang bersatuan 12 bit atau 16 bit.
Memori dapat berupa memori statik yang tersusun atas matriks flip-flop yang masing-masing menyimpan bit-bit biner. Bisa juga berupa memori dinamik yang tersusun atas susunan banyak kapasitor yang ada-tidaknya muatan listriknya menandakan isyarat biner. Karena pada kapasitor terjadi peluruhan muatan, maka pada setiap selang waktu tertentu (misalnya setiap 2 milidetik) harus direfresh agar kembali ke keadaan semula.
4. Port input/output
Port input/output adalah komponen yang menghubungkan mikroprosesor dengan perangkat luar (harddisk printer, keyboard, monitor, dll.). Jadi port disini berlaku sebagai “pintu” ke perangkat luar. Sebagaimana memori, port I/O juga bukan merupakan komponen tunggal (artinya ada banyak port di dalam sistem komputer) yang masing-masing diberi alamat tertentu. Dengan demikian mikroprosesor tahu, misalnya, ke mana untuk mengirim data ke printer, mengambil data dari mouse dsb.
5. Bus
Bus adalah kumpulan jalur yang menghubungkan ketiga komponen di atas. Bus dapat dianalogikan sebagai jalan umum di muka rumah kita yang dapat kita lewati jika hendak menuju rumah tetangga, kantor, dsb. Bedanya, di jalan umum pada suatu waktu bisa terdapat banyak orang atau kendaraan yang melewatinya; sedangkan untuk bus, pada suatu saat hanya bisa ada satu keadaan (biner) untuk setiap jalurnya. Dengan kata lain, ada banyak komponen yang terhubung ke bus, tapi hanya sebuah komponen yang akan mengisi bus tersebut pada suatu saat. Bus dalam sistem komputer dibagi menjadi 3 kelompok:
Bus alamat (address bus), yang digunakan oleh mikroprosesor untuk mengirim informasi alamat memori atau port I/O yang akan dihubungi olehnya. Ukuran bus alamat menentukan berapa kapasitas memori yang ada, misalnya ukuran bus alamat 16 bit (16 jalur alamat) akan mampu mengalamati 216 atau 65536 (64 kb) lokasi memori. Perhatikan arah panah ke dan dari bus alamat pada Gambar I-1.
Bus data (data bus), yang digunakan untuk lewatnya data dari dan ke masing-masing komponen di atas. Bus data mempunyai ukuran tertentu misalnya 8, 16, atau 32 jalur. Ukuran ini tidak harus sama dengan ukuran data pada setiap lokasi memori. Misalnya apabila berukuran memori adalah 8 bit, maka dengan bus data 32 bit akan dapat memindahkan 4 data (menulis/membaca 4 lokasi memori) sekaligus.
Bus kendali (control bus), yang berisi jalur-jalur untuk keperluan pengiriman sinyal kendali antar komponen, misalnya sinyal yang menandakan isyarat untuk membaca, atau menulis, pemilihan memori atau port, interupsi, dll. Isyarat-isyarat ini yang kemudian menentukan aksi apa yang harus dilakukan oleh masing-masing komponen.

6. Eksekusi program

Program adalah urutan instruksi yang akan dijalankan oleh mikrorposesor. Program ini terletak di dalam memori. Mikroprosesor melakukan fetch and execute dengan cara mengambil instruksi yang hendak dijalankan dari lokasi memori tersebut (fetch), menerjemahkannya, dan kemudian menjalankannya (execute). Secara praktis hal di atas terjadi dengan cara berikut: mikroprosesor mengisi bus alamat dengan alamat instruksi berikutnya di dalam memori, lalu memori mengirimkan instruksi yang ada di alamat tersebut melalui bus data. Karena ukuran instruksi tidak mesti hanya 1, bisa juga suatu instruksi terdiri atas 3 byte misalnya: ( 1. Tidurlah, 2. Makanlah roti, 3. Makanlah roti yang ada dilemari), maka operasi fetch ini diulang sampai instruksi yang diambil dari memori lengkap, setelah itu mikroprosesor menerjemahkan instruksi tersebut ke dalam aksi yang harus dijalankan. Selesai menjalankannya lantas melakukan fetch and execute untuk instruksi berikutnya. Demikian dilakukan berulang-ulang, satu instruksi demi satu instruksi.

  1.3            Sejarah Mikroprosesor
Iklan pertama untuk mikroprosesor muncul di Electronic News. Federico Faggin, Ted Hoff, dan timnya di Intel Corporation mendesain mikroprosesor 4004 ketika membuat sebuah IC pesanan untuk Busicom, sebuah perusahaan kalkulator Jepang. Mikroprosesor 4004 mempunyai 2.250 transistor PMOS, menangani data 4 bit, dan dapat mengeksekusi 60 ribu operasi per detik. Mikroprosesor 4004 ini adalah salah satu dari seri IC untuk komponen kalkulator tersebut: 4001: memori ROM 2.048 bit; 4002: memori RAM 320 bit; serta 4003: register geser I/O 10 bit. Pada tahun 1972, 8008 dengan bus data 8 bit digunakan oleh Don Lancaster untuk membuat cikal-bakal personal komputer. 8008 membutuhkan 20 komponen tambahan untuk dapat bekerja penuh sebagai CPU. Lalu tahun 1974, 8080 menjadi otak personal pertama komputer, Altair, diduga merupakan nama tujuan pesawat Starship Enterprise di film TV Star Trek. 8080 hanya membutuhkan 2 perangkat tambahan untuk bekerja. Selain itu 8080 terbuat dari transistor NMOS yang bekerja lebih cepat. 8080 diseut sebagai mikroprosesor generasi kedua. Segera sesudah itu Motorolla membuat MC6800 yang juga merupakan CPU multiguna. MC6800 sangat populer karena menggunakan catu daya +5V, dibanding 8080 dengan catu daya –5V, +5V, -12V, dan +12V. Mikroprosesor lain yang muncul adalah 6502 sebagai CPU komputer Apple II, dan Zilog Z80 untuk CPU Radio Shack TRS-80.
Tahun 1978, IBM menciptakan personal komputer PC-XT yang sangat populer menggunakan mikroprosesor 8086 dan 8088. Keduanya mampu menangani data 16 bit. Bedanya hanya pada ukuran bus data yang hanya 8 bit untuk 8088 (operasi internal 16 bit), dan 16 bit untuk 8086. Kemudian Intel membut 80186 dan 80188 yang juga berisi perangkat peripheral terprogram. Tahun 1982, 80286 adalah prosesor pertama yang dapat menjalankan perangkat lunak yang ditulis untuk pendahulunya, karena instruksi yang dimiliki oleh seri sebelumnya semuanya dimiliki dan ditambahi dengan instruksi lain. Kompatibilitas ke atas ini kemudian menjadi ciri khas mikroprosesor Intel. Dalam 6 tahun, ada 15 juta PC-AT yang menngunakan 80286 sebagai CPU.
Tahun 1985, Intel membuat 80386 (386TM) yang mengandung 275 ribu transistor, dan merupakan mikroprosesor 32 bit yang dapat melakukan multi tasking (menjalankan beberapa program dalam waktu yang bersamaan). Tahun 1989, Intel 486TM adalah prosesor pertama yang mempunyai math coprosesor secara built-in di dalamnya.
Tahun 1993, lahir keluarga prosesor Pentium®. Tahun 1995, prosesor Pentium® Pro didesain untuk server 32-bit, mengandung 5,5 juta transistor dan mempunyai chip memori cache kedua di dalamnya. Tahun 1997, dibuat prosesor Pentium® II dengan 7,5 juta transistor dan teknologi MMX, yang didesain khusus untuk memproses data video, audio and grafik secara efisien. Prosesor ini juga diperkenalkan dengan bentuk cartridge Single Edge Contact (S.E.C). Seiring dengan itu bermunculan seri Celeron yang merupakan versi Pentium dengan beberapa fitur yang dihilangkan untuk menekan biaya produksi.
Tahun 1999 muncul Pentium !!! dengan 70 instruksi baru yang mendukung Internet Streaming SIMD. Processor ini berisi 9,5 juta transistor, dan mengintroduksi teknologi 0,25-micron. Pada saat ini sedang dikembangkan mikroprosesor 64 bit, sehingga operasi-operasi matematis yang dilakukan dapat lebih cepat.

  1.4            Arsitektur Internal Mikroprosesor
1. Arsitektur umum mikroprosesor
Secara umum, mikroprosesor berisi unit aritmetika/logika (ALU), register, bus internal, serta unit kendali, seperti terlihat pada Gambar I-2. Register dan ALU dihubungkan dengan bus internal dalam mikroprosesor sehingga register dan memori (melalui bus data) dapat mensuplai data ke ALU dan menerima hasilnya. Dalam contoh ini, terdapat 2 buah register, A dan B, yang digunakan untuk secara temporer menyimpan hasil komputasi. Bus internal X dan Y digunakan untuk mentransfer data sebagai operand yang akan diolah ALU. Bus internal Z digunakan untuk mentransfer hasil operasi ALU ke register atau memori (melalui bus data). Register MA (Memory Address) : “Ingat, ini adalah nama umum, setiap mikroprosesor mungkin mempunyai nama register yang berbeda meskipun fungsinya sama”   berisi informasi alamat memori yang akan diakses. Unit kendali mengendalikan semua operasi dalam mikroprosesor. Perhatikan kepala panah yang menunjukkan arah aliran data.


Gambar I-2. Arsitektur umum mikroprosesor

Sebagai contoh. misalkan kita hendak menjumlahkan data dari suatu lokasi di memori dengan data dari register A serta menyimpannya di register B. Register MA diisi dengan alamat memori yang akan dibaca, lalu register A dihubungkan ke bus X, bus data dihubungkan ke bus Y, dan bus Z dihubungkan dengan register B, kemudian ALU melakukan operasi penjumlahan.
Instruksi yang dijalankan oleh mikroprosesor ada di memori, berupa urutan data-data biner yang merupakan bahasa mesin mikroprosesor. Mikroprosesor mengambil instruksi biner tersebut dari memori yang ditunjuk oleh sebuah register yang bernama Program Counter atau register PC. Mula-mula bus alamat diisi dengan informasi alamat di mana letak instruksi berikutnya yang hendak dijalankan dengan register PC. Lalu mikroprosesor mengambil instruksi tersebut melalui bus data dan menyimpannya di Instruction Register atau register IR. Selanjutnya isi register PC ditambah satu, dengan demikian akan menunjuk ke alamat memori berikutnya di mana instruksi berikutnya akan dijalankan lagi. Secara simbolik kejadian di atas dapat dituliskan sebagai berikut:

Mem(PC) → IR
PC + 1 → PC

Apabila instruksi yang sudah terambil belum merupakan instruksi yang utuh (setiap instruksi bisa tersusun atas lebih dari 1 byte) maka kejadian di atas diulang lagi.
Setelah register IR berisi instruksi biner, unit kendali lalu menerjemahkannya dan mengeksekusinya. Apa yang dilakukan oleh mikroprosesor tergantung dari instruksi yang diberikan tersebut. Misalnya instruksinya adalah operasi menjumlahan isi register B dengan isi suatu memori dan hasilnya disimpan di dalam register B lagi (alamat memori yang hendak ditambahkan merupakan bagian dari instruksi), maka operasi yang akan dijalankan adalah oleh mikroprosesor adalah:
Mem(PC) → MA
PC + 1 → PC
B + Mem(MA) → B

2. Intel Mikroprosesor 8086
 Intel 8086 adalah identik dengan 8088 yang merupakan mikroprosesor 16 bit, di mana dia dapat bekerja secara internal menggunakan operasi 16 bit dan secara eksternal dapat mentransfer data 16 bit melalui bus data. Prosesor 8086 dapat dihubungkan dengan bus alamat yang berukuran 20 bit, sehingga mampu mengalamati memori maksimal 220 = 1.048.576 byte (1 MB). Diagram blok arsitektur 8086 dapat dilihat pada Gambar I-3. Mikroprosesor 8086 terbagi atas 2 unit, yaitu unit antarmuka bus (bus interface unit, BIU) dan unit pengeksekusi (execution unit, EU).  Secara internal, ada tiga perbedaan 8086 dan 8088 adalah sebagai berikut:
a.          Panjang antrian adalah 4 byte dalam mikroprosesor 8088 sedangkan antrian 8086 berisi 6 byte atau 3 kata. Antrian tersebut dipendekkan untuk mencegah kelebihan pemakaian bus oleh BIU ketika mem-prefetching instruksi. Kondisi ini dikehendaki karena waktu penambahan untuk fecth instruksi 8 bit sewaktu-waktu.
b.         Lebih mengoptimumkan antrian, algoritma prefecthing yang diubah. BIU 8088 akan fetch instruksi baru untuk memasukkan antrian setiap saat ada sebuah lubang (hole) 1 byte space yang tersedia dalam antrian. 8086 menunggu sampai space 2 byte tersedia.
c.         Waktu eksekusi internal dari kumpulan instruksi dipengaruhi oleh interface 8 bit. Semua fecth dan write 16 bit dari dan ke memori membutuhkan 4 siklus clock. CPU juga dibatasi dengan kecepatan fetch instruksi. Problem ini terjadi saat serangkaian operasi terjadi. Ketika banyak instruksi terpenuhi 8088 sedang digunakan, maka antrian tersebut membuthkan waktu untuk mengisi dan eksekusi proses secepat unit eksekusi akan memperbolehkan.


Gambar I-3. Diagram blok internal mikroprosesor 8086

Unit Antarmuka Bus (BIU)
Unit ini merupakan bagian yang berhubungan langsung dengan “pihak luar”: bus alamat dan bus data. BIU mengirim alamat ke bus alamat, mengambil instruksi (fetch) dari memori, membaca data dari port dan memori, serta menulis data ke port dan memori (menangani transfer data antara bus dan unit eksekusi). BIU tersusun atas:
Instruction Stream Byte Queue (ISBQ). BIU mem-fetch instruksi dari memori sebanyak-banyaknya 6 buah instruksi ke depan. Hal ini dilakukan agar eksekusi progam menjadi lebih cepat. Instruksi yang sudah diambil ini ditaruh di ISBQ yang berupa 6 buah register first-in-first-out. BIU dapat melakukan fetching selagi EU menerjemahkan dan mengeksekusi instruksi yang tidak membutuhkan penggunaan bus (misalnya operasi matematis menggunakan register internal). Ketika EU selesai melaksanakan suatu instruksi, maka dia tinggal mengambil perintah berikutnya di ISBQ, tanpa harus mengirim alamat ke memori untuk mengambil instruksi berikutnya, sehingga eksekusi akan lebih cepat. Kegiatan fetching instruksi berikutnya selagi menjalankan suatu instruksi disebut sebagai: pipelining. Pada mikroprosesor yang lebih baru, ukuran ISBQ tidak hanya 6 byte tetapimencapai 512 byte, ini efektif untuk program yang mempunyai banyak kalang (struktur program yang berulang).
Register segmen. BIU berisi 4 buah register segmen 16 bit, yaitu: code segment (CS), data segment (DS), extra segment (ES), dan stack segment (SS). Sistem komputer 8086 mempunyai bus alamat 20 bit, tetapi ukuran register - termasuk register alamat (memory address register) – yang dimilikinya hanya 16 bit, lantas bagaimana cara mengatasinya. Cara pemberian alamat 20 bit dilakukan menggunakan 2 komponen alamat: segmen dan offset, yang masing-masing berukuran 16 bit. BIU akan menggeser ke kiri nilai segmen sebanyak 4 bit (mengalikan dengan 16), kemudian menambahkan offset untuk memperoleh alamat fisik memori yang dikirimkan melalui bus alamat. Untuk lebih jelasnya, diberi contoh untuk memberi alamat fisik $38AB4: (Data dan alamat biasanya dinyatakan dalam bentuk heksadesimal dan diberi simbol $ di depannya, sehingga angka 8 bit ditulis dalam 2 digit/karakter heksadesimal, angka 16 bit ditulis dalam 4 digit heksadesimal, dst.),  segmen dapat diisi dengan angka $348A, dan offset diisi dengan angka $4214, lihat Gambar I-4. Cara penulisan kombinasi segmen dan offset adalah:
segmen:offset

Sehingga untuk contoh ini, penulisannya adalah $348A:$4214. Perlu diingat bahwa kita bisa menggunakan kombinasi nilai segmen dan offset yang bervariasi untuk memberi alamat fisik yang sama, misalnya $38AB:$0004, $3800:$0AB4, dsb.




Secara umum, suatu program terdiri atas 4 bagian: segmen code yang berisi instruksi; segmen data, berisi data yang telah dialokasikan sebelumnya (statik); segmen ekstra, untuk variabel dinamik; serta segmen stack yang dipakai untuk menyimpan informasi pada saat pemanggilan subrutin. Informasi segmen disimpan dalam keempat register segmen sesuai dengan namanya.
Instruction Pointer (IP), adalah register berisi informasi offset yang bersama-sama CS menunjuk posisi dalam memori di mana instruksi berikutnya berada.
Unit Eksekusi (EU)
Unit ini memberitahu BIU di mana mengambil instruksi dan data, menerjemahkan kode instruksi, dan menjalankannya. EU tersusun atas:
Dekoder instruksi, yang mengambil urut-urutan instruksi dari ISBQ kemudian menerjemahkannya ke runtutan aksi yang harus dikerjakan oleh EU.
Sistem kontrol, merupakan rangkaian yang mengendalikan kerja mikroprosesor berdasarkan instruksi yang telah diterjemahkan oleh dekoder instruksi tadi.
Arithmetic Logic Unit (ALU), yaitu bagian dari mikroprosesor yang dapat melakukan operasi matematis (misalnya operasi penjumlahan, pengurangan, perkalian, dan pembagian) dan logika (misalnya operasi AND, OR, XOR, geser, dan rotasi) 16 bit.
Register flag (bendera), yaitu register flip-flop 16 bit yang menunjukkan kondisi yang dihasilkan oleh eksekusi suatu operasi oleh EU. Selain itu flag juga mengatur beberapa operasi tertentu. Terdapat 9 flag dalam register flag 8086, seperti terlihat pada Gambar I-5.


Sebanyak 6 buah flag merupakan flag kondisi yang menunjukkan keadaan setelah eksekusi suatu instruksi, yaitu: Carry Flag (CF), Parity Flag (PF), Auxiliary Carry Flag (AF), Zero Flag (ZF), Sign Flag (SF), dan Overflow Flag (OF). Sedangkan, 3 buah flag sisanya berupa flag kontrol yang mengendalikan operasi tertentu, yaitu: Single Step Trap Flag (TF), Interrupt Flag (IF), dan String Direction Flag (DF).
CF akan diset (bernilai 1) jika sebuah operasi menghasilkan simpanan (carry) melebihi bit terpenting (most significat bit, MSB, atau bit 15), dan sebaliknya direset (bernilai 0) apabila tidak ada simpanan. PF diset jika suatu operasi memberikan hasil dengan parity genap, dan direset jika hasilnya berparity ganjil. AF mirip dengan CF, namun diset oleh operasi BCD (binary coded decimal). ZF diset jika suatu operasi menghasilkan nol. SF merupakan nilai MSB hasil operasinya, yang menunjukkan tanda; diset jika hasil bertanda negatif dan direset jika hasil bertanda positif. OF diset jika hasil operasi melebihi tempat yang disediakan.
Flag kondisi akan digunakan oleh perintah tertentu untuk menentukan pencabangan atau lompatan. Sedangkan flag kontrol dapat diatur dengan perintah tertentu. Jika TF diset bernilai 1, maka mikroprosesor akan bekerja langkah demi langkah, sehingga dapat digunakan untuk mencek jalannya suatu program. IF digunakan untuk mengatur apakah kerja mikroprosesor dapat diinterupsi atau tidak. Hal yang menyangkut interupsi akan dijelaskan secara lebih detil pada bab berikutnya. DF digunakan untuk menentukan arah operasi string.
Register serbaguna, merupakan register yang dapat digunakan untuk menyimpan data yang akan diolah atau hasil suatu operasi oleh ALU. Terdiri atas 8 buah register 8 bit, yaitu AH, AL, BH, BL, CH, CL, DH, dan DL. Register-register ini juga dapat digunakan secara berpasangan sehingga membentuk register 16 bit, yaitu; AX (gabungan dari AH dan AL), BX, CX, dan DX. AX biasanya digunakan untuk menyimpan hasil operasi, sehingga disebut akumulator. CX biasanya digunakan untuk pencacah untuk keperluan perulangan/kalang (loop), sehingga disebut counter. BX dan DX biasanya digunakan sebagai offset dari alamat data di memori (dengan segmen DS).
Register pointer dan indeks, terdiri atas Stack Pointer (SP), Base Pointer (BP), Source Index (SI), dan Destination Index (DI). Stack (tumpukan) adalah bagian dari memori yang digunakan untuk menyimpan informasi alamat program yang ditinggalkan pada saat terjadi pemanggilan subrutin/subprogram. Demikian juga apabila subrutin tersebut berupa fungsi yang menggunakan parameter, maka data parameter akan disimpan pula di stack. Alamat tumpukan terluar dari stack ditunjuk oleh SS:SP. Sedangkan BP digunakan sebagai offset yang menunjuk ke parameter-parameter fungsi yang dipanggil. SI dan DI biasanya digunakan sebagai offset (masing-masing berpasangan dengan ES dan DS) yang menunjuk ke suatu variabel/data untuk operasi string (larik data).

  1.5            Bahasa Mesin dan Bahasa Assembly
Instruksi yang difetch dari memori untuk kemudian diseksekusi oleh mikroprosesor berformat biner (kombinasi angka 0 dan 1), yang disebut bahasa mesin. Sebagai contoh, perintah untuk memindahkan data dalam register BX ke register CX adalah 10001011 11001011 ($8B CB), sedangkan bahasa mesin untuk menjumlahkan data dalam register AL dengan angka 7 adalah 00000100 00000111 ($04 07), dan perintah membaca dari port 5 diberikan dengan 11100100 00000101 ($E4 05). Seperti terlihat pada ketiga contoh di atas, bahasa mesin tidak mudah untuk dimengerti dan dihapalkan oleh seorang programer, apalagi jumlah instruksi yang tersedia berkisar ribuan perintah. Di samping itu, akan mudah sekali terjadi kesalahan ketika menuliskan angka-angka biner yang tersusun atas angka 0 dan 1 yang banyak sekali. Oleh karena itu biasanya kita tidak memprogram komputer langsung dalam bahasa mesin, namun dalam bahasa assembly.
Dalam bahasa assembly, setiap instruksi diberi kata (mnemonic) yang sesuai dengan maksud perintah itu, sehingga dapat membantu pemrogram dalam mengingat instruksi kepada mikroprosesor tersebut. Kata yang dipakai biasanya berupa singkatan atau beberapa huruf awal dari kata dalam bahasa Inggris untuk perintah tersebut. Misalnya, mnemonic untuk perintah penjumlahan adalah ADD, untuk perintah pengurangan adalah SUB (dari kata subtract), dan untuk memindahkan data: (Lebih tepat dikatakan operasi pengkopian/punduplikatan data, karena data di lokasi asal (baik memori maupun register) tidak serta-merta menjadi hilang karena telah dipindahkan, namun tetap seperti semula) dari suatu register atau memori ke lokasi lain adalah MOV (dari kata move). Sebagian besar instruksi terdiri atas mnemonic dan operand yang merupakan parameter dari instruksi tersebut, yang dituliskan di belakang mnemonic tersebut. Contoh bahasa assembly dari perintah-perintah dengan bahasa mesin di atas diberikan dalam Tabel I-1.

Tabel I-1. Contoh Instruksi dalam bahasa mesin dan bahasa assembly
Intruksi
Bahasa mesin
Bahasa Assembly
Memindahkan data dari register BX ke register CX

$8B CB
Mov CX, BX
Menjumlahkan data dalam registe AL dengan angka 7
$04 07
ADD AL, 7
Membaca port 5
$E4 05
IN AL, 5

Secara umum instruksi mikroprosesor dikelompokkan menjadi (beserta contoh):

1. Operasi transfer data, yaitu operasi pemindahan (pengkopian) data antara register, memori, dan port. Di antaranya:
MOV AX, BX          ; mengkopi isi BX ke AX
MOV BL, [437AH]     ; mengkopi data byte dari DS:437AH ke BL
IN AL, 34H          ; membaca input byte dari port 34H ke AL
OUT 220H, AX        ; menulis output word ke port 220H
PUSH CX             ; menyimpan register CX ke stack (SS:SP)

2. Operasi aritmatika, yaitu operasi matematis antara register/memori (dilakukan ALU).
ADD DL, BL          ; menambahkan isi BL ke DL
SUB CX, 437AH       ; mengurangi isi CX dengan angka 437AH
MUL CX              ; mengalikan AX dengan CX, hasil
                      disimpan di AX

3. Operasi bit, yaitu operasi logika antara register/memori (dilakukan ALU).
AND BH, CL          ; meng-AND-kan isi BH dengan CL
NOT DX              ; menginvers isi register DX

4. Operasi string, yaitu operasi yang melibatkan sekumpulan data yang berurutan dalam memori/port.
REP MOVSB           ; mengkopi isi byte dari DS:SI ke ES:DI
                      sebanyak CX

5. Operasi kontrol aliran program, untuk mengatur loop, lompatan, dan perulangan.
CALL 2323H        ; memanggil subrutin di alamat CS:2323H
RET               ; kembali ke pemanggil subrutin
JZ LBL1           ; lompat ke instruksi yang diberi
                    label LBL1 jika flag ZF bernilai 1 (set)

6. Operasi kontrol prosesor, yang mengatur kerja mikroprosesor.
STI               ; menset flag interupsi (TF),Membolehkan
                    interupsi
CLI               ; mereset TF, menghambat interupsi


Setiap instruksi mungkin merubah nilai flag tergantung dari instruksi itu sendiri dan hasil operasinya. Lebih detilnya dapat dilihat di Bab 6 buku Mikroprosesor and Interfacing, Programming and Hardware, Douglas V. Hall.














Tidak ada komentar:

Posting Komentar