BAB I
MEMAHAMI STRUKTUR DAN FUNGSI CPU
A. Struktur Dan Fungsi CPU
CPU (prosesor)
merupakan komponen terpenting dari sistem komputer. CPU adalah komponen
pengolah data berdasarkan instruksi – instruksi yang diberikan kepadanya.Dalam
mewujudkan fungsi dan tugasnya, CPU tersusun atas beberapa komponen sebagai
bagian dari struktur CPU, seperti terlihat pada gambar komponen CPU dan
struktur internal CPU. CPU tersusun atas beberapa komponen, yaitu :
1. Arithmetic and Logic Unit (ALU), bertugas membentuk fungsi – fungsi pengolahan data komputer. ALU sering disebut mesin bahasa (machine language) karena bagian ini mengerjakan instruksi – instruksi bahasa mesin yang diberikan padanya. Seperti istilahnya, ALU terdiri dari dua bagian, yaitu unit
arithmetika dan unit logika boolean, yang masing – masing memiliki spesifikasi tugas tersendiri.
2. Control Unit, bertugas mengontrol operasi CPU dan secara
keselurahan mengontrol computer sehingga terjadi sinkronisasi kerja antar
komponen dalam menjalankan fungsi – fungsi operasinya. Termasuk dalam tanggung
jawab unit kontrol adalah mengambil instruksi – instruksi dari memori utama dan
menentukan jenis instruksi tersebut.
3.
Registers, adalah media penyimpan internal CPU yang digunakan saat
proses pengolahan data. Memori ini bersifat sementara, biasanya digunakan untuk
menyimpan data saat diolah ataupun data untuk pengolahan selanjutnya.
4.
CPU Interconnections, adalah sistem koneksi dan bus yang
menghubungkan komponen internal CPU, yaitu ALU, unit kontrol dan register –
register dan juga dengan bus – bus eksternal CPU yang menghubungkan dengan
sistem lainnya, seperti memori utama, piranti masukan/keluaran.
Hal-hal yang
dilakukan CPU adalah sebagai berikut :
1.
Fetch instruction (mengambil instruksi) yaitu CPU membaca
instruksi dari memori
2.
Interpret instruction (menterjemahkan instruksi) yaitu CPU
menerjemahkan instruksi untuk menentukan langkah yang diperlukan.
3.
Fetch data (mengambil data) yaitu eksekusi instruksi yang mungkin
memerlukan pembacaan data dari memori datau dari modul I/O
4.
Process data (mengolah data) yaitu eksekusi instruksi yang
memerlukan operasi aritmatik
5.
Write data (menulis data) yaitu hasil eksekusi yang mungkin
memerlukan penulisan data ke memori datau ke modul I/O
B. Control Unit
Tugas dari CU adalah sebagai berikut:
1.
Mengatur dan mengendalikan alat-alat input dan output.
2.
Mengambil instruksi-instruksi dari memori utama.
3.
Mengambil data dari memori utama kalau diperlukan oleh proses.
4.
Mengirim instruksi ke ALU bila ada perhitungan aritmatika atau perbandinganlogika
serta mengawasi kerja.
5.
Menyimpan hasil proses ke memori utama.
Proses tiga langkah karakteristik unit control:
1.
Menentukan elemen dasar prosesor
2.
Menjelaskan operasi mikro yang akan dilakukan prosesor
3.
Menentukan fungsi-fungsi yang harus dilakukan unit control agar menyebabkan
pembentukan operasi mikro
Masukan-masukan unit control:
1.
Clock / pewaktu Pewaktu adalah cara unit control dalam menjaga
waktunya. Unit control
menyebabkan sebuah operasi mikro (atau sejumlah operasi mikro yang bersamaan) dibentuk bagi setiap pulsa waktu.Pulsa ini dikenal sebagai waktu siklus prosesor.
menyebabkan sebuah operasi mikro (atau sejumlah operasi mikro yang bersamaan) dibentuk bagi setiap pulsa waktu.Pulsa ini dikenal sebagai waktu siklus prosesor.
2.
Register instruksi Opcode instruksi saat itu digunakan untuk
menentukan operasi mikro mana yang
akan dilakukan selama siklus eksekusi.
akan dilakukan selama siklus eksekusi.
3.
Flag. Flag ini diperlukan oleh unit control untuk menentukan status
prosesor dan hasil
operasi ALU sebelumnya.
operasi ALU sebelumnya.
4.
Sinyal control untuk
mengontrol bus Bagian bus control bus system memberikan sinyal-sinyal ke unit
control, seperti sinyal-sinyal interupsi dan acknowledgement.
Keluaran-keluaran unit control:
Sinyal control didalam prosesor terdiri dari dua macam:
1.
sinyal-sinyal yang menyebabkan data dipindahkan dari register yang
satu keregister yang lainnya,
2.
sinyal-sinyal yang dapat mengaktifasi fungsi-fungsi ALU tertentu.
C. Register
Sistem Komputer menggunakan hirarki memori pada tingkatan yang
atas,memori lebih cepat, lebih kecil, lebih mahal. Di dalam CPU, terdapat
sekumpulan register yang tingkatan memorinya berada di atas hirarki memori
utama dan cache. Register dalam CPU memiliki dua fungsi:
1.
User-visible Register
User-visible Register adalah register yang dapat direferensikan
dengan menggunakan bahasa mesin yang dieksekusi CPU, User-visible terdiri dari
:
a.
General Purpose Register
·
Digunakan untuk mode pengalamatan dan data.
·
Akumulator ( aritmatika, Shift, Rotate)
·
Base Register (Rotate,Shift, aritmatika)
·
Counter Register ( Looping)
·
Data Register (menyimpan alamat I/O device).
b.
Register Alamat
·
Digunakan untuk mode pengalamatan
·
Segment Register (Code Segment, Data Segment, Stack Segment, Extra
Segment)
·
Register Index / Stack Index, Data Index (untuk menyimpan
alamatalamat yang terindeks)
·
Stack Pointer (register yang dedicated menunjuk kebagian teratas
stack)
c.
Register Data
·
Digunakan untuk menampung data
d.
Register Kode Status Kondisi (Flag)
·
Kode yang menggambarkan hasil operasi sebelumnya
2.
Control and Register
Control and register adalah register-register yang digunakan oleh
unit kontrol untuk mengontrol operasi CPU dan oleh program sistem operasi untuk
mengntrol eksekusi program. Terdapat empat register yang penting adalah :
a.
Program Counter (PC)
· Berisi alamat instruksi yang akan diambil
b.
Instruction Register (IR)
· Berisi alamat instruksi terakhir
c.
Memory Address Register (MAR)
· Berisi alamat penyimpanan dalam memorid.
d.
Memori Buffer Register (MBR)
· Berisi data yang dibaca dari memori atau yang diyliskan ke memori
e.
Memori Data Register (MDR)
· Merupakan register yang digunakan untuk menampung data atau instruksi
hasil pengiriman dari memori utama ke CPU atau menampung data yang akan direkam
ke momori utama dari hasil pengolahan CPU.
Fungsi CPU
1)
Menjalankan program – program yang disimpan dalam memori utama
dengancara mengambil instruksi –
instruksi, menguji instruksi tersebut dan mengeksekusinya satu persatu sesuai
alur perintah.
2)
Sehingga langkah-langkah pada operasi CPU, yaitu operasi :
· Pembacaan instruksi (fetch) dan
· Pelaksanaan instruksi (execute)
BAB II
MEMAHAMI
KARAKTERISTIK SET INSTRUKSI
A. Elemen Instruksi
Agar dapat
dieksekusi, setiap instruksi harus berisi informasi yang diperlukan oleh CPU.
Informasi itu dituangkan dalam elemen-elemen instruksi:
·
Operation Code/Kode Operasi: menspesifikasikan operasi yang akan
dilakukan (misalnya, ADD).
·
Operasi dispesifikasikan oleh kode biner, yang dikenal sebagai
kode operasi, atau opcode.
·
Source Operand Reference/Referensi Operand Sumber: operasi dapat mencakup
satu atau lebih sumber, operand merupakan input bagi operasi.
·
Result Operand Reference/Reference Operand Hasil: operasi dapat
membuat hasil operasi.
·
Next Instruction Reference/Reference Operand Selanjutnya: elemen
ini memberitahu CPU posisi instruksi berikutnya yang harus diambil setelah menyelesaikan
eksekusi suatu instruksi.
Sumber dan hasil operand dapat berada di salah satu dari ketiga
daerah di bawah ini:
·
Memori utama atau memori virtual: dengan referensi alamat
berikutnya, maka alamat memori utama atau virtual harus diketahui.
·
Register CPU: instruksi harus diberi nomor register yang dimaksud.
·
Perangkat I/O: instruksi harus menspesifikasikan modul I/O yang
diperlukan oleh operasi.
Representasi
Instruksi
Dalam komputer,
instruksi direpresentasikan oleh sekumpulan bit. Dalam penulisan format
instruksi (instruction format) biasanya dibagi dalam beberapa kolom berkaitan
dengan elemen-elemen yang akan mengisi instruksi. Apa Itu Mnemonic? Adalah
singkatan-singkatan yang mengindikasikan suatu
operasi yang merupakan representasi dari opcode.
operasi yang merupakan representasi dari opcode.
Contoh:
Mnemonic
Mnemonic
ADD Add (penambahan)
SUB Substract (pengurangan)
LOAD Muatkan data dari memori
INC Increment (penambahan
dengan satu)
Mnemonic
|
Operand
|
ADD
|
A
|
Artinya menambah secara langsung 8 bit data ke dalam isi
akumulator dan menyimpan hasil di akumulator. Operand juga dapat
direpresentasikan secara simbolik.
Misalnya:
Mnemonic
|
Operand
|
ADD
|
R,Y
|
Artinya tambahkan nilai lokasi Y ke isi register R F'emrogram dapat mendahului dengar definisi-definisi: X = 513,Y = 514, dst. Program akan mengkonversikan opcode dan refercnsi operand menjadi bentuk biner, akhirnya akan membentuk instruksi mesin biner.
B. Tipe – tipe Instruksi
Tipe atau jenis-jenis
instruksi
1. Data procecessing: Arithmetic dan Logic Instructions
Data processing
adalah jenis pemrosesan yang dapat mengubah data menjadi informasiatau
pengetahuan.Pemrosesan data ini sering menggunakan komputer sehingga bisa
berjalan secara otomatis.Setelah diolah, data ini biasanya mempunyai nilai yang
informatif jika dinyatakan dan dikemas secara terorganisir dan rapi, maka
istilah pemrosesan data sering dikatakan sebagai sistem informasi.
Kedua istilah ini
mempunyai arti yang hampir sama, pemrosesan data mengolah dan memanipulasi data
mentah menjadi informasi (hasil pengolahan), sedangkan sistem informasi memakai
data sebagai bahan masukan dan menghasilkan informasi sebagai produk keluaran.
2. Data storage: Memory instruction
Sering disebut
sebagai memori komputer, merujuk kepada komponen komputer, perangkat komputer,
dan media perekaman yang mempertahankan data digital yang digunakan untuk
beberapa interval waktu.Penyimpanan data komputer menyediakan salah satu tiga
fungsi inti dari komputer modern, yakni mempertahankan informasi. Ia merupakan
salah satu komponen fundamental yang terdapat di dalam semua komputer modern,
dan memiliki keterkaitan dengan mikroprosesor, dan menjadi model komputer yang
digunakan semenjak 1940-an.
Dalam penggunaan
kontemporer, memori komputer merujuk kepada bentuk media penyimpanan berbahan
semikonduktor, yang dikenal dengan sebutan Random Access Memory (RAM), dan
kadang-kadang dalam bentuk lainnya yang lebih cepat tapi hanya dapat menyimpan
data secara sementara.
Akan tetapi, istilah "computer storage" sekarang secara umum merujuk kepada media penyimpanan massal, yang bisa berupa cakram optis, beberapa bentuk media penyimpanan magnetis (seperti halnya hard disk) dan tipe-tipe media penyimpanan lainnya yang lebih lambat ketimbang RAM, tapi memiliki sifat lebih permanen, seperti flash memory.
Akan tetapi, istilah "computer storage" sekarang secara umum merujuk kepada media penyimpanan massal, yang bisa berupa cakram optis, beberapa bentuk media penyimpanan magnetis (seperti halnya hard disk) dan tipe-tipe media penyimpanan lainnya yang lebih lambat ketimbang RAM, tapi memiliki sifat lebih permanen, seperti flash memory.
3. Data Movement: I/O instructions
Proses data movement
ini adalah memindahkan (dapat diakatakan membackup juga) data – data dari
database yang berupa data, indeks, grand, schema, dan lain – lain ketempat
baru. Tempat baru ini bisa ke dalam database baru atau memang untuk dibackup
saja. Data movement terdiri dari 2 bagian besar yaitu :
Ø
Load & Upload [difokuskan untuk memindahkan data yang berupa
indeks atau data itu sendiri alias isi dari database tersebut]
Ø
Export & Import [memindahkan data secara lengkap, mulai dari
grand, schema, dan seluruhnya]
Jika dilihat, load
tersebut berhubungan dengan import dan upload berhubungan dengan export
Load berfungsi untuk memasukan data / transaksi ke sebuah table. Dapat dikatakan juga insert, replace, atau update. Sedangkan upload berfungsi untuk membuat dari data table ke fisik / file. Kelemahan load adalah dalam prosesnya bisa saja terjadi data yang tidak berpindah secara sempurna. Upload Parameter
Load berfungsi untuk memasukan data / transaksi ke sebuah table. Dapat dikatakan juga insert, replace, atau update. Sedangkan upload berfungsi untuk membuat dari data table ke fisik / file. Kelemahan load adalah dalam prosesnya bisa saja terjadi data yang tidak berpindah secara sempurna. Upload Parameter
Ø
Limit [membatasi beberapa record]
Ø
Sample [mencari sample yang telah ditentukan]
Ø
When [berdasarkan kondisi]
Dan pada upload,
hanya satu parameter saja yang dapat berjalan alias tak bias berjalan bersamaan
apabila parameternya lebih dari 1.
Bulk Data Movement
(Software Pendukung)
Ø
ETL [Extrat Transform Load], software yang focus terhadap data
warehouse
Ø
Replication and Propagation, software yang memonitoring source
database dan target, dan yang dihasilkan oleh software ini adalah pencatatatn
log.
Perlu diperhatikan
juga hak akses dalam load & unload, import & export minimal adalah
akses select.
Distribution Database
Dalam distribution database terdapat 3 istilah yaitu :
1.
Autonomi [idependent], untuk tabel umum akses yang diberikan
berbeda dari setiap user.
2.
Isolation [stand alone], untuk tabel khusus (privacy) itu terpisah
dari user.
3.
Transparancy [all user], akses tabel terpisah dari user tetapi
user masih dapat mengaksesnya.
Lawan dari database terdistribusi adalah database terpusat. Server
yang terpusat memang diuntungkan dalam sisi maintenance sedangkan server terdistribusi
lebih rumit dalam proses integrasinya. Jika database terdistribusi paling tidak
membutuhkan Sumber Daya Manusia [SDM] yang baik, network yang lebih baik karena
permasalahan network itu sangat fatal dan biasanya permasalahannya tidak jauh-jauh
dari permasalahan traffic network.Dan yang tidak boleh dilupakan adalah request
dan respon.
4.
Control: Test and
branch instructions
Unit kendali (bahasa
Inggris: Control Unit - CU) adalah salah satu bagian dari CPU yang bertugas
untuk memberikan arahan/kendali/ kontrol terhadap operasi yang dilakukan di
bagian ALU (Arithmetic Logical Unit) di dalam CPU tersebut. Output dari CU ini
akan mengatur aktivitas dari bagian lainnya dari perangkat CPU tersebut.
Pada awal-awal desain
komputer, CU diimplementasikan sebagai ad-hoc logic yang susah untuk didesain.
Sekarang, CU diimplementasikan sebagai sebuah microprogram yang disimpan di
dalam tempat penyimpanan control (control store). Beberapa word dari
microprogram dipilih oleh microsequencer
dan bit yang datang dari word-word tersebut akan secara langsung mengontrol bagian-bagian berbeda dari perangkat tersebut, termasuk di antaranya adalah register, ALU, register instruksi, bus dan peralatan input/output di luar chip. Pada komputer modern, setiap subsistem ini telah memiliki kontrolernya masing masing, dengan CU sebagai pemantaunya (supervisor)
dan bit yang datang dari word-word tersebut akan secara langsung mengontrol bagian-bagian berbeda dari perangkat tersebut, termasuk di antaranya adalah register, ALU, register instruksi, bus dan peralatan input/output di luar chip. Pada komputer modern, setiap subsistem ini telah memiliki kontrolernya masing masing, dengan CU sebagai pemantaunya (supervisor)
C. Tipe – tipe operand
1.
Pengertian Operand
Operand adalah sebuah objek yang ada pada operasi matematika yang dapat
digunakan untuk melakukan operasi. Operand atau operator dalam bahasa C
berbentuk simbol bukan berbentuk keyword atau kata yang biasa ada di bahasa
pemrograman lain. Simbol yang digunakan bukan karakter yang ada
dalam abjad tapi ada pada keyboard kita seperti = ,* dan sebagainya.
dalam abjad tapi ada pada keyboard kita seperti = ,* dan sebagainya.
2.
Tipe Operand
a.
Tipe Data
Tipe Data setiap data memiliki tipe data, apakah merupakan angka bulat
(integer), angka biasa (real), atau berupa karakter (char), dan sebagainya.
Ada dua kategori dari tipe data yaitu tipe dasar dan tipe
bentukan.
1)
Tipe dasar adalah tipe data yang selalu tersedia pada setiap
bahasa pemograman, antara lain :
a)
Bilangan bulat
Ø
Integer (-32768 s/d +32768)
Bilangan atau angka yang tidak memiliki titik desimal atau pecahan
seperti +10,-1024,+32767,+255. Tipe data ini dapat ditulisakan sebagai integer
atau int. Operasi aritmatiknya terdiri dari : tambah +, kurang -, kali *, bagi
/, sisa hasil bagi %. Operasi
Pembandingan terdiri dari : lebih kecil <, lebih kecil atau sama , lebih besar atau sama >=
Pembandingan terdiri dari : lebih kecil <, lebih kecil atau sama , lebih besar atau sama >=
Ø
Long (-16 juta s/d16 juta)
Ø
Byte (0 s/d 255)
b)
Bilangan pecahan
Ø
Double (3,7×10-308 s/d 3,7×10+308)
Ø
Float (3,4×10-38 s/d 3,4×10+38)
c)
Karakter
Karakter adalah data tunggal yang mewakili semua huruf, simbol baca dan juga simbol angka yang tidak dapat dioperasikan secara sistematis.Tipe ini dapat dituliskan sebagai char.
Karakter adalah data tunggal yang mewakili semua huruf, simbol baca dan juga simbol angka yang tidak dapat dioperasikan secara sistematis.Tipe ini dapat dituliskan sebagai char.
2)
Tipe bentukan adalah tipe data yang dibentuk dari kombinisasi tipe
dasar, antara lain :
a)
Array (larik)
Selama ini kita
menggunakan satu variabel untuk menyimpan 1 buah nilai dengan tipe data
tertentu.
misalnya : int
a1,a2,a3,a4,a5;
Deklarasi variabel
diatas menggunakan menyimpan 5 data integer dimana masing-masing variabel
diberi nama a1,a2,a3,a4,a5. Jika kita memiliki 10 data integer atau mungkin 100
data integer bahkan mungkin kita tidak ketahui atau mungkin bersifat dinamis. Saat
ini lah kita menggunakan tipe bentukan Array.
Array adalah tipe
data bentukan yang merupakan wadah untuk menampung beberapa nilai data yang
sejenis
b)
String
String adalah tipe
data bentukan yang merupakan deretan karakter yang membentuk satu kata atau
satu kalimat, yang biasanya dapat dua tanda kutip.
b.
Variabel
Variabel adalah nama yang mewakili sutau elemen data seperti : jenkel
untuk jenis kelamin, t4lahir untuk tempat lahir, alamat unutk alamat dan sebagainya.
Ada aturan tertentu yang wajib diikuti dalam pemberian nama variabel, antara
lain :
Ø
Harus dimulai dengan abjad tidak boleh dengan angka atau simbol.
Ø
Tidak boleh ada spasi diantaranya
Ø
Jangan menggunakan simbol-simbol yang bisa membingungkan seperti titik
dua, titik koma, kima, dan sebagainya.
Ø
Sebaiknya memiliki arti yang sesuai dengan elemen data
Ø
Sebaiknya tidak terlalu panjang
Contoh variabel yang bernar : Nama, Alamat, Nilai_Ujian
Contoh Variabel yang salah : 4XYZ,IP rata, Var :+xy,458;
c.
Operator dan Operand
Operand adalah data, tetapan, perubah atau hasil dari suatu fungsi
sedangkan Operator merupakan simbol-simbol yang memiliki fungsi untuk menghubungkan
operand sehingga menjadi tranformasi.
Jenis-jenis operator adalah sebagai berikut :
Jenis-jenis operator adalah sebagai berikut :
Ø
Operator Aritmetika
Operator untuk melakukan fungsi aritmetika seperti :
+(penjumlahan), – (mengurangkan), * (mengalikan), / (membagi).
Ø
Operator relational
Operator untuk menyatakan relasi atau perbandingan antara dua operand,
seperti > (lebih besr), =(lebih besar atau sama), <= (lebih kecil atau
sama), == (sama), != (tidak sama).
Ø
Operator Logik
Operator untuk merelasikan operand secara logis seperti &&
(and), || (or), !(not).
D. Tipe
– tipe operasi data
TRANSFER DATA
Ø
Menetapkan lokasi operand sumber dan operand tujuan.
Ø
Lokasi-lokasi tersebut dapat berupa memori, register atau bagian
paling atas daripada stack.
Ø
Menetapkan panjang data yang dipindahkan.
Ø
Menetapkan mode pengalamatan.
Tindakan CPU untuk
melakukan transfer data adalah :
Ø
emindahkan data dari satu lokasi ke lokasi lain.
Ø
Apabila memori dilibatkan :
Ø
Menetapkan alamat memori.
Ø
Menjalankan transformasi alamat memori virtual ke alamat memori
aktual.
Ø
Mengawali pembacaan / penulisan memori
Operasi set instruksi
untuk transfer data :
Ø
MOVE : memindahkan word atau blok dari sumber ke tujuan
Ø
STORE : memindahkan word dari prosesor ke memori.
Ø
LOAD : memindahkan word dari memori ke prosesor.
Ø
EXCHANGE : menukar isi sumber ke tujuan.
Ø
CLEAR / RESET : memindahkan word 0 ke tujuan.
Ø
SET : memindahkan word 1 ke tujuan.
Ø
PUSH : memindahkan word dari sumber ke bagian paling atas stack.
Ø
POP : memindahkan word dari bagian paling atas sumber
ARITHMETIC
Tindakan CPU untuk
melakukan operasi arithmetic :
Ø
Transfer data sebelum atau sesudah.
Ø
Melakukan fungsi dalam ALU.
Ø
Menset kode-kode kondisi dan flag.
Operasi set instruksi
untuk arithmetic :
1.
ADD : penjumlahan
2.
SUBTRACT : pengurangan
3.
MULTIPLY : perkalian
4.
DIVIDE : pembagian
5.
ABSOLUTE
6.
NEGATIVE
7.
DECREMENT
8.
INCREMENT
Nomor 5 sampai 8 merupakan instruksi operand tunggal.
Nomor 5 sampai 8 merupakan instruksi operand tunggal.
LOGICAL
Tindakan CPU sama
dengan arithmetic. Operasi set instruksi untuk operasi logical :
Ø
AND, OR, NOT, EXOR
Ø
COMPARE : melakukan perbandingan logika.
Ø
TEST : menguji kondisi tertentu.
Ø
SHIFT : operand menggeser ke kiri atau kanan menyebabkan konstanta
pada
ujung bit.
ujung bit.
Ø
ROTATE : operand menggeser ke kiri atau ke kanan dengan ujung yang
terjalin.
CONVERSI
Tindakan CPU sama dengan arithmetic dan logical. Instruksi yang
mengubah format instruksi yang beroperasi terhadap format data. Misalnya
pengubahan bilangan desimal menjadi bilangan biner.
Operasi set instruksi untuk conversi :
Operasi set instruksi untuk conversi :
Ø
TRANSLATE : menterjemahkan nilai-nilai dalam suatu bagian memori berdasrkan
tabel korespodensi.
Ø
CONVERT : mengkonversi isi suatu word dari suatu bentuk ke bentuk
lainnya.
INPUT / OUPUT
Tindakan CPU untuk melakukan INPUT /OUTPUT :
Ø
Apabila memory mapped I/O maka menentukan alamat memory mapped.
Ø
Mengawali perintah ke modul I/O
Operasi set instruksi Input / Ouput :
Ø
INPUT : memindahkan data dari pernagkat I/O tertentu ke tujuan
Ø
OUTPUT : memindahkan data dari sumber tertentu ke perangkat I/O
Ø
START I/O : memindahkan instruksi ke prosesor I/O untuk mengawali
operasi I/O
Ø
TEST I/O : memindahkan informasi dari sistem I/O ke tujuan
TRANSFER CONTROL
Tindakan CPU untuk
transfer control :
Ø
Mengupdate program counter untuk subrutin , call / return.
Operasi set instruksi
untuk transfer control :
Ø
UMP (cabang) : pemindahan tidak bersyarat dan memuat PC dengan
alamat tertentu.
Ø
JUMP BERSYARAT : menguji persyaratan tertentu danmemuat PC dengan alamat
tertentu atau tidak melakukan apa tergantung dari persyaratan.
Ø
JUMP SUBRUTIN : melompat ke alamat tertentu.
Ø
RETURN : mengganti isi PC dan register lainnya yang berasal dari
lokasi tertentu.
Ø
EXECUTE : mengambil operand dari lokasi tertentu dan mengeksekusi
sebagai instruksi
Ø
SKIP : menambah PC sehingga melompati instruksi berikutnya.
Ø
SKIP BERSYARAT : melompat atau tidak melakukan apa-apa berdasarkan
pada persyaratan
Ø
HALT : menghentikan eksekusi program.
Ø
WAIT (HOLD) : melanjutkan eksekusi pada saat persyaratan dipenuhi.
Ø
NO OPERATION : tidak ada operasi yang dilakukan.
CONTROL SYSTEM
Hanya dapat
dieksekusi ketika prosesor berada dalam keadaan khusus tertentu atau sedang
mengeksekusi suatu program yang berada dalam area khusus, biasanya digunakan
dalam sistem operasi.
Contoh : membaca atau mengubah register kontrol.
Contoh : membaca atau mengubah register kontrol.
E.
Instruksi
percabangan
Struktur Branching
(Percabangan)
1.
IF
Instruksi IF
digunakan untuk memeriksa suatu kondisi dan melaksanakan instruksi lain jika
kondisi tersebut terpenuhi atau bernilai true. Statement pada sintaks if boleh
berupa satu instruksi tunggal atau beberapa instruksi (block statement) yang
ditulis dalam {}. Jika evaluasi terhadap kondisi memberikan nilai true
makastatement dikerjakan.Jika bernilai false maka statement tidak dikerjakan.Alur
logika Instruksi IF dapat anda lihat pada gambar dibawah ini.
Gambar Alur logika Instruksi IF
Umumnya kondisi
berupa sebuah ekspresi yang bernilai Boolean seperti a== 5 atau b > 10.
Kondisi yang diuji dapat berupa kondisi tunggal atau kondisi gabungan.
Contoh pemakaian
istruksi IF.
Dengan kondisi
tunggal if (nilai > 60) printf ("lulus") ;
Jika nilai lebih
besar daripada 60 maka ditampilkan lulus
Dengan kondisi
gabungan if (( grade == 'D') ││ (grade == E' )) printf ("tidak
lulus") ;
Jika grade berisi
huruf D atau E maka ditampilkan tidak lulus
2.
If
Else
Adakalanya kita harus
melaksanakan proses yang berbeda untuk kondisi yang berbeda, misalnya
menampilkan kata lulus untuk nilai yang sama dengan atau lebih besar daripada
60 dan menampilkan kata tidak lulus untuk nilai yang kurang dari 60, selain
dengan menggunakan dua instruksi if yang terpisah seperti berikut:
if (nilai >= 60)
printf ("lulus") ;
if ( nilai < 60 )
printf ("tidak lulus") ;
bahasa C menyediakan
klausa else untuk digunakan bersama dengan instruksi if. Secara umum pola dari
if else yaitu:
if (kondisi)
statement1 ; else statement2;
Apabila evaluasi
terhadap kondisi memberikan nilai true maka statementdikerjakan, sebaliknya
jika false maka statement2 dikerjakan.Jadi yang dikerjakan selalu salah satu
dari kedua statement.Statement dapat berupa instruksi kosong, instruksi tunggal
atau beberapa instruksi yang dilingkup dengan { }. Tidak diperbolehkan ada
klausa else tanpa instruksi if. Alur logika instruksi if else dapat andalihat
pada gambar dibawah ini:
Gambar Logika instruksi if else
Contoh pemakaian instruksi
if else
If (nilai >= 60)
printf ("lulus") ;
Else printf
("tidak lulus")
Jika nilai lebih
bessar sama dengan 60 maka tampilkan lulus, selain dari itu maka tampilkan
tidak lulus.
If ((bil % 2) == 0)
printf ("bilangan genap") ;
Else printf ("bilangan
ganjil")
Jika bilangan habis
dibagi 2 maka tampilkan genap, selain dari itu maka tampilkan bilangan ganjil
If ((grade == `D`) ││
(grade == 'E'))
Printf ("tidak
lulus")
Else printf
("lulus")
Jika grade berisi
"D" atau "E" maka tampilkan tidak lulus, selain dari itu
tampilkan lulus
3.
Nested If (Struktur If bersarang)
Pada suatu instruksi
if, statement yang dikerjakan apabila kondisi bernilai true dapat berupa
instruksi if yanglain. Strukstur instruksi seperti ini disebut nested if (if
bersarang). Hal yang sama juga berlaku untuk statement yang dikerjakan pada
bagian klausa else. Berikut ini salah satu bentuk konfigurasi nested if beserta
cara penulisannya :
Gambar Konfigurasi nested if
Berikut ini cara
membaca dari flowchart Nested if diatas :
if (kondisi1)
if (kondisi2) {
}
BAB
3
MODE
DAN FORMAT PENGALAMATAN
A. Inherent
Dalam mode pengalamatan inherent, semua informasi yang dibutuhkan
untuk operasi telah diketahui otomatis oleh CPU, dan tidak dibutuhkan operan
eksternal dari memori atau dari program. Operan yang digunakan hanyalah
register internal dari CPU atau data dalam stack. Karena itu operasi ini
hanyalah terdiri dari satu byte instruksi. Contoh: 0200 4C INCA ; increment
akumulator.
Pertama CPU membaca kode operasi $4C yang menginstruksikan CPU untuk
menambah harga dari isi akumulator. Kemudian CPU akan menyimpan harga baru ke
dalam akumulator dan mengeset bitflag jika dibutuhkan.
Tabel 3.1.Instruksi-instruksi Mode Pengalamatan INHERENT
INSTRUKSI
|
MNEMONIC
|
Arithmetic Shift Left
|
ASLA, ASLX
|
Arithmetic Shift Right
|
ASRA, ASRX
|
Clear Carry Bit
|
CLC
|
Clear Interrupt Mask Bit
|
CLI
|
Clear
|
CLRA, CLRX
|
Complement (invert all bits)
|
COMA, COMX
|
Decrement
|
DECA, DECX
|
Increment
|
INCA, INCX
|
Logical Shift Left
|
LSLA, LSLX
|
Logical Shift Right
|
LSRA, LSRX
|
Multiply
|
MUL
|
Negate (two’s complement)
|
NEGA, NEGX
|
No Operation
|
NOP
|
Rotate Left thru Carry
|
ROLA, ROLX
|
Rotate Right thru Carry
|
RORA, RORX
|
Reset Stack Pointer
|
RSP
|
Return from Interrupt
|
RTI
|
Return from Subroutine
|
RTS
|
Set Carry Bit
|
SEC
|
Set Interrupt Mask Bit
|
SEI
|
Enable IRQ, STOP Oscillator
|
STOP
|
Software Interrupt
|
SWI
|
Transfer Accumulator to Index Register
|
TAX
|
Test for Negative Zero
|
TSTA, TSTX
|
Transfer Index Register to Accumulator
|
TXA
|
Wait for Interrupt
|
WAIT
|
B. Immediate
Dalam mode pengalamatan immediate, operan terkandung di dalam byte
yang langsung mengikuti kode operasi. Mode ini digunakan saat suatu harga atau konstanta
diketahui saat program dibuat dan tidak akan dirubah selama eksekusi program.
Operasi dengan mode ini membutuhkan dua byte instruksi, satu untuk kode operasi
dan satu lagi untuk data byte. Contoh: 0200 A6 02 LDA #$02 ; Load konstanta ke
akumulator
Pertama CPU akan membaca kode operasi $A6 yang menginstruksikan
CPU untuk me-load akumulator dengan nilai immediate yang mengikuti kode
operasi. Kemudian CPU akan membaca data immediate $02 dari lokasi memori dengan
alamat $0201 ke dalam akumulator
Tabel 3.2.Instruksi-instruksi Mode Pengalamatan IMMEDIATE
INSTRUKSI
|
MNEMONIC
|
Add with Carry
|
ADC
|
Add (without carry)
|
ADD
|
Logical AND
|
AND
|
Bit Test Memory with Accumulator
|
BIT
|
Compare Accumulator with Memory
|
CMP
|
Compare Index Register with Memory
|
CPX
|
Exclusive OR Memory with Accumulator
|
EOR
|
Load Accumulator from Memory
|
LDA
|
Load Index Register from Memory
|
LDX
|
Inclusive OR
|
ORA
|
Substract with Carry
|
SBC
|
Substract (without borrow)
|
SUB
|
C. Direction
Mode pengalamatan
direct mirip dengan mode pengalamatan extended kecuali bahwa upper byte dari
alamat operan selalu dianggap $00. Karena itu, hanya lower-byte dari operan
yang diperlukan untuk
dimasukkan dalam instruksi. Pengalamatan direct menyebabkan efisiensi alamat dalam 256 byte pertama dalam memori. Area ini dinamakan dengan direct page dan mengandung on-chip RAM dan register I/O. Pengalamatan direct ini efisien bagi memori program dan waktu eksekusi. Dalam mode ini instruksi terdiri dari dua byte, satu untuk kode operasi dan satu lagi untuk alamat operan. Contoh: 0200 B6 E0 LDA
$E0
dimasukkan dalam instruksi. Pengalamatan direct menyebabkan efisiensi alamat dalam 256 byte pertama dalam memori. Area ini dinamakan dengan direct page dan mengandung on-chip RAM dan register I/O. Pengalamatan direct ini efisien bagi memori program dan waktu eksekusi. Dalam mode ini instruksi terdiri dari dua byte, satu untuk kode operasi dan satu lagi untuk alamat operan. Contoh: 0200 B6 E0 LDA
$E0
Pertama CPU akan
membaca kode operasi $B6 yang menginstruksikan CPU untuk menggunakan mode
pengalamatan direct. Kemudian CPU membaca $E0 dari lokasi memori dengan alamat
$0201.Harga $E0 ini diterjemahkan sebagai low order dari alamat dalam direct
page ($0000 sampai $00FF). Setelah itu CPU menyusun alamat lengkap $00E0 dengan
menganggap high-order byte alamat sebagai $00. Alamat lengkap $00E0 ini
kemudian diletakkan dalam bus alamat dan kemudian proses pembacaan data pun
dikerjakan.
Tabel
3.3.Instruksi-instruksi Mode Pengalamatan DIRECT
INSTRUKSI
|
MNEMONIC
|
Add with Carry
|
ADC
|
Add (without carry)
|
ADD
|
Logical AND
|
AND
|
Arithmetic Shift Left
|
ASL
|
Arithmetic Shift Right
|
ASR
|
Clear Bit in Memory
|
BCLR
|
Bit Test Memory with Accumulator
|
BIT
|
Branch if Bit n is Clear
|
BRCLR
|
Branch if Bit n is Set
|
BRSET
|
Set Bit in Memory
|
BSET
|
Clear
|
CLR
|
Compare Accumulator with Memory
|
CMP
|
Complement (invert all bits)
|
COM
|
Compare Index Register with Memory
|
CPX
|
Decrement
|
DEC
|
Exclusive OR Memory with Accumulator
|
EOR
|
Increment
|
INC
|
Jump
|
JMP
|
Jump to Subroutine
|
JSR
|
Load Accumulator from Memory
|
LDA
|
Load Index Register from Memory
|
LDX
|
Logical Shift Left
|
LSL
|
Logical Shift Right
|
LSR
|
Negate (two’s complement)
|
NEG
|
Inclusive OR
|
ORA
|
Rotate Left thru Carry
|
ROL
|
Rotate Right thru Carry
|
ROR
|
Substract with Carry
|
SBC
|
Store Acuumulator in Memory
|
STA
|
Strore Index Register in Memory
|
STX
|
Substract (without borrow)
|
SUB
|
Test for Negative or Zero
|
TST
|
D. Extended
Dalam mode
pengalamatan extended, alamat dari operan terkandung dalam dua byte yang
mengikuti kode operasi. Pengalamatan extended ini dapat digunakan untuk
mengakses semua lokasi dalam memori mikrokontroler termasuk I/O, RAM, ROM, dan
EPROM. Karena itu operasi ini membutuhkan tiga byte, satu untuk kode operasi,
dan dua untuk alamat dari operan.Contoh : 0200 C6 03 65 LDA $0365
Pertama CPU akan
membaca kode operasi C6 yang menginstruksikan akumulator untuk menggunakan mode
pengalamatan extended. Kemudian CPU akan membaca $03 dari lokasi memori
$0201dan diterjemahkan sebagai alamat high-order. Setelah itu CPU membaca $65
dari lokasi $0202 dan diterjemahkan sebagai low-order dari alamat. Terakhir,
CPU membangun alamat lengkap $0365 dan meletakkannya dalam bus alamat dan
kemudian melakukan operasi read sehingga isi memori dengan alamat $0365 akan
tersedia dalam bus data.
E. Indexed
Dalam mode pengalamatan indexed, alamat efektif adalah variabel
dan tergantung pada dua faktor:
1) isi index register saat itu
2) nilai offset yang terkandung dari byte yang mengikuti kode
operasi.
Terdapat tiga jenis pengalamatan indexed yang didukung oleh CPU keluarga M68HC05, yaitu: no-offset, 8-bit offset, dan 16-bit offset. Dalam mode pengalamatan indexed-no offset, alamat efektif dari operan terkandung dalam index register 8-bit. Karena itu, mode pengalamatan ini dapat mengakses 256 lokasi memori (dari $0000 sampai $00FF).Instruksi mode ini membutuhkan satu byte instruksi. Contoh: 0200 F6 LDA 0,X
Pertama CPU akan
membaca kode operasi $F6 yang menginstruksikan CPU untuk menggunakan mode
pengalamatan indexed-no offset. Kemudian CPU menyusun alamat lengkap dengan
menjumlahkan $0000 ke isi dari index register 8-bit (X). Alamat ini kemudian
diletakkan dalam bus alamat dan setelah itu dilakukan proses pembacaan data.
Dalam mode
pengalamatan indexed-8 bit offset, alamat efektif dicapai dengan menambahkan
data byte yang mengikuti kode operasi dengan isi dari index register. Harga
byte offset yang disediakan dalam instruksi adalah integer tak bertanda 8-bit.
Karena itu operasi ini adalah dua byte instruksi di mana offsetDalam mode
pengalamatan indexed-8 bit offset, alamat efektif dicapai dengan menambahkan
data byte yang mengikuti kode operasi dengan isi dari index register. Harga
byte offset yang disediakan dalam instruksi adalah integer tak bertanda 8-bit.
Karena itu operasi ini adalah dua byte instruksi di mana offset terkandung
dalam byte yang mengikuti kode operasi. Isi dari index register tidak akan
dirubah. Contoh: 0200 E6 05 LDA 5,X
Pertama CPU akan
membaca kode operasi $E6 yang menginstruksikan CPU menggunakan mode
pengalamatan indexed 8-bit offset. Kemudian CPU akan membaca 8-bit offset ($05)
dari alamat $0201. CPU akan menyusun alamat lengkap dengan menambahkan nilai
offset $05 ke isi dari index register 8-bit (X). Setelah itu, alamat diletakkan
dalam bus alamat dan opersi pembacaan data ke akumulator dikerjakan.Tabel 5.5
menunjukkan semua instruksi yang mampu menggunakan mode pengalamatan ini. Dalam
mode pengalamatan indexed-16 bit offset, alamat efektif dari operan suatu
instruksi adalah hasil penjumlahan antara isi dari index register 8-bit dengan
dua byte alamat yang mengikuti kode operasi. Isi dari kode operasi tidak
dirubah. Instruksi ini memakan tiga byte, satu untuk kode operasi dan dua byte
untuk offset 16-bit. Contoh: 0200 D6 03 77 LDA $377,X Pertama CPU akan membaca
kode operasi $D6 yang menginstruksikan CPU untuk menggunakan mode pengalamatan
indexed –16 bit offset. Kemudian CPU akan membaca high order alamat ($03) dari
alamat memori $0201 dan membaca low order alamat ($77) dari alamat $0202. CPU
akan menyusun alamat lengkap dengan menambahkan isi dari index register 8-bit
dengan 16-bit alamat yang baru saja dibaca. Alamat ini diletakkkan dalam bus
alamat dan kemudian operasi pembacaan data dilakukan.
F. Relative
Mode pengalamatan relative
ini digunakan hanya dalam instruksi percabangan. Instruksi percabangan, selain
percabangan instruksi manipulasi bit, membangkitkan dua byte kode mesin: satu
untuk kode operasi dan satu untuk offset relatifnya. Karena kemampuannya untuk
bercabang ke dua arah, byte offset adalah bilangan bertanda dengan jangkauan
–128 sampai +127. Jika kondisi percabangan TRUE, isi dari byte bertanda 8-bit
yang mengikuti kode operasi akan ditambahkan dengan isi dari PC untuk membentuk
alamat efektif percabangan; jika FALSE maka kontrol program akan terus ke
instruksi di bawah instruksi percabangan. Programmer akan menspesifikasikan
tujuan dari percabangan sebagai alamat absolute (dengan label atau alamat
langsung). Kemudian assembler akan mengkalkulasi offset relatif 8-bit yang akan
diletakkan di belakang kode memori dalam memori. Contoh: 0200 27 rr BEQ DEST.
Pertama CPU akan membaca kode operasi $27. Bit CCR Z akan set jika hasil dari operasi aritmatika atau logika sebelumnya adalah nol. CPU kemudian akan membaca harga offset $rr dari alamat $0201. Setelah siklus ini, PC akan menunjukkan ke byte pertama dari instruksi berikutnya ($0202). Jika bit Z nol, maka tidak ada aksi apa-apa. Program akan terus ke instruksi berikutnya pada alamat $0202. Jika bit Z satu, CPU akan menambahkan nilai offset $rr ke isi dari PC sekarang untuk mendapatkan alamat tujuan dari percabangan. Hal ini menyebabkan eksekusi program berlanjut ke alamat baru (DEST).Tabel



