Anda di halaman 1dari 57

M akalah U nit P em rosesan P usat

Diajukan untuk memenuhi tugas mata kuliah Sistem Operasi

Orlando Timotius Hutapea

Aldo Hadi Saputra

Exsel Nicolas Tuwo

Ricky Oktaviano Jonathan

P R OG R A M STU D I IN FOM A R TIK A

FA K U LTA S TEK N IK

U N IV ER SITA S K R ISN A D W IP A Y A N A
1 K A TA P EN G A N TA R

Puji syukur kita panjatkan kehadirat Tuhan Yang Maha Esa karena dengan
rahmat dan hidayah-Nya lah kami dapat menyelesaikan makalah “Unit
Pemrosesan Pusat” ini tepat pada waktunya.

Makalah ini disusun dalam rangka memenuhi tugas mata kuliah Sistem Operasi.
Sehubungan dengan tersusunnya makalah ini kami menyampaikan terima kasih
kepada Ibu Nur Hikmah selaku dosen pengampu mata kuliah Sistem Operasi.

Semoga makalah ini bermanfaat bagi kami dan pembaca. Kami menyadari
bahwa makalah ini masih terdapat kekurangan dan kelemahan. Namun
penyusun tetap mengharapkan kritik dan saran yang bersifat konstruktif
sehingga bisa menjadi acuan dalam penyusunan makalah selanjutnya.

Jakarta Timur, Oktober 2019

Penyusun

Kelompok 4

i
2 D A FTA R ISI

1 Kata Pengantar ......................................................................................... i

2 Daftar Isi .................................................................................................. ii

3 Pendahuluan ............................................................................................. 4

3.1 Latar Belakang ................................................................................... 4

3.2 Tujuan ................................................................................................ 4

4 Pembahasan.............................................................................................. 5

4.1 Pengantar ........................................................................................... 5

4.2 Organisasi Register Umum ................................................................. 5

4.2.1 Word Kontrol ............................................................................... 7

4.2.2 Contoh Operasi Mikro.................................................................. 8

4.3 Organisasi Stack ................................................................................10

4.3.1 Stack Register .............................................................................10

4.3.2 Stack Memori ..............................................................................12

4.3.3 Reverse Polish Notation ..............................................................14

4.3.4 Evaluasi Ekspresi Matematika ....................................................16

4.4 Format Instruksi ................................................................................17

4.4.1 Instruksi Tiga-Alamat .................................................................19

4.4.2 Instruksi Dua-Alamat..................................................................19

4.4.3 Instruksi Satu-Alamat .................................................................20

4.4.4 Instruksi Nol-Alamat...................................................................20

ii
4.4.5 Instruksi RISC ............................................................................21

4.5 Mode Pengalamatan ..........................................................................22

4.5.1 Contoh Numerik..........................................................................27

4.6 Transfer dan Manipulasi Data ...........................................................29

4.6.1 Instruksi Transfer Data ...............................................................30

4.6.2 Instruksi Manipulasi Data ...........................................................32

4.7 Kontrol Program ...............................................................................36

4.7.1 Kondisi Bit Status .......................................................................39

4.7.2 Instruksi Cabang Bersyarat.........................................................40

4.7.3 Panggil dan Kembali Subrutin ....................................................41

4.7.4 Interupsi Program .......................................................................43

4.7.5 Tipe Interupsi .............................................................................45

4.8 Reduced Instrution Set Computer (RISC) .........................................47

4.8.1 Karakteristik CISC .....................................................................47

4.8.2 Karakteristik RISC .....................................................................48

4.8.3 Lingkup Register Bersamaan.......................................................50

5 Penutup ...................................................................................................55

5.1 Kesimpulan ........................................................................................55

5.2 Saran .................................................................................................55

iii
3 P EN D A H U LU A N

3.1 L A TA R B ELA K A N G
Makalah ini dibuat untuk memenuhi tugas mata kuliah Sistem Operasi.

3.2 T U JU A N
Makalah ini bertujuan untuk membahas tentang unit pemrosesan pusat atau
central processing unit (CPU). Unit eksekusi dengan bus umum dan unit logika
aritmatika dikembangkan untuk menunjukkan organisasi register umum dari
CPU tipikal. Pengoperasian stack memori dijelaskan dan beberapa aplikasi
ditunjukkan. Berbagai format instruksi diilustrasikan bersama dengan berbagai
mode pengalamatan. Instruksi paling umum yang ditemukan di komputer
disebutkan dengan penjelasan tentang fungsinya. Bagian terakhir
memperkenalkan konsep RISC (mengurangi set instruksi) dan membahas
karakteristik dan keunggulannya.

4
4 P EM B A H A SA N

4.1 P EN G A N TA R
Bagian dari komputer yang melakukan sebagian besar operasi pemrosesan data
disebut unit pemrosesan pusat dan disebut sebagai CPU. CPU terdiri dari tiga
bagian utama, terlihat pada Gambar 4.1.1. Set register menyimpan data
perantara yang digunakan selama pelaksanaan instruksi. Unit logika aritmatika
(ALU) melakukan operasi mikro yang diperlukan untuk menjalankan instruksi.
Unit kontrol mengawasi transfer informasi di antara register dan
menginstruksikan ALU mengenai operasi yang harus dilakukan.

Set register

Kontrol

Unit logika
aritmatika
(ALU)

Gambar 4.1.1 Komponen utama CPU

4.2 O R G A N ISA SI R EG ISTER U M U M


Lokasi memori diperlukan untuk menyimpan pointer, penghitung, alamat
kembali, hasil sementara, dan hasil parsial saat perkalian. Harus merujuk ke
lokasi memori untuk aplikasi seperti itu memakan waktu karena akses memori
adalah operasi yang paling memakan waktu di komputer. Lebih mudah dan
lebih efisien untuk menyimpan nilai-nilai perantara ini dalam register prosesor.
Ketika sejumlah besar register termasuk dalam CPU, yang paling efisien adalah
menghubungkan mereka melalui sistem bus umum. Register berkomunikasi satu

5
sama lain tidak hanya untuk transfer data langsung, tetapi juga saat melakukan
berbagai operasi mikro. Oleh karena itu perlu untuk menyediakan unit umum
yang dapat melakukan semua operasi mikro aritmatika, logika, dan pergeseran
dalam prosesor.

Organisasi bus untuk tujuh register CPU ditunjukkan pada Gambar 4.2.1.
Output dari masing-masing register terhubung ke dua multiplexer (MUX)
untuk membentuk dua bus A dan B. Jalur seleksi di setiap multiplexer memilih
satu register atau input data untuk bus tertentu. Bus A dan B membentuk
input ke unit aritmatika logika (ALU) umum. Operasi yang dipilih dalam ALU
menentukan operasi mikro aritmatika atau logika yang akan dilakukan. Hasil
dari operasi mikro tersedia untuk data output dan juga masuk ke input dari
semua register. Register yang menerima informasi dari bus output dipilih oleh
dekoder. Dekoder mengaktifkan salah satu input muatan register, sehingga
menyediakan jalur transfer antara data dalam bus output dan input dari
register tujuan yang dipilih.

Gambar 4.2.1 Set register dengan ALU umum

6
Unit kontrol yang mengoperasikan sistem bus CPU mengarahkan aliran
informasi melalui register dan ALU dengan memilih berbagai komponen dalam
sistem. Misalnya, untuk melakukan operasi

R1 ← R2 + R3

kontrol harus menyediakan variabel pemilihan biner ke input pemilih berikut:

1. Pemilih MUX A (SELA): untuk menempatkan isi R2 ke dalam bus A.


2. Pemilih MUX B (SELB): untuk menempatkan isi R3 ke dalam bus B.
3. Pemilih operasi ALU (OPR): untuk menyajikan aritmatika penambahan
A + B.
4. Pemilih tujuan dekoder (SELD): untuk mentransfer isi bus output ke R1.

4.2.1 W ord K ontrol


3 3 3 5
SELA SELB SELD OPR
Tabel 4.2.1 Word Kontrol

Ada 14 input pemilihan biner dalam unit tersebut, dan nilai gabungannya
menentukan sebuah word kontrol. Word kontrol 14-bit didefinisikan pada Tabel
4.2.1. Ini terdiri dari empat field. Tiga field masing-masing berisi tiga bit, dan
satu field memiliki lima bit. Tiga bit SELA memilih register sumber untuk input
A dari ALU. Tiga bit SELB memilih register untuk input B dari ALU. Tiga bit
SELD memilih register tujuan menggunakan dekoder dan tujuh muatan
outputnya. Lima bit OPR memilih salah satu operasi di ALU. Word kontrol
14-bit tersebut menentukan operasi mikro tertentu ketika diterapkan pada
input pemilihan.

Kode biner SELA SELB SELD


000 Input Input Kosong
001 R1 R1 R1
010 R2 R2 R2
011 R3 R3 R3
100 R4 R4 R4
101 R5 R5 R5
110 R6 R6 R6

7
111 R7 R7 R7
Tabel 4.2.2 Pengkodean Field Pemilihan Register

Pengkodean dari pemilihan register ditentukan pada Tabel 4.2.2. Kode biner 3-
bit yang tercantum dalam kolom pertama dari tabel menentukan kode biner
untuk masing-masing field. Register yang dipilih oleh SELA, SELB, dan SELD
adalah yang angka desimalnya setara dengan angka biner dalam kode. Ketika
SELA atau SELB adalah 000, multiplexer yang sesuai memilih data input
eksternal. Ketika SELD = 000, tidak ada register tujuan yang dipilih, tetapi isi
bus output tersedia di output eksternal.

ALU menyediakan operasi aritmatika dan logika. Selain itu, CPU harus
menyediakan operasi pergeseran. Penggeser dapat ditempatkan di input ALU
untuk memberikan kapabilitas pra-pergeseran, atau pada output ALU untuk
menyediakan kapabilitas paska-pergeseran. Dalam beberapa kasus, operasi
pergeseran disertakan dengan ALU. Pengkodean operasi ALU untuk CPU
ditentukan dalam Tabel 4.2.3. Field OPR memiliki lima bit dan setiap operasi
ditandai dengan nama simbolis.

OPR Operasi Simbol


00000 Transfer A TSFA
00001 Naiki A INCA
00010 Tambahi A + B ADD
00101 Kurangi A – B SUB
00110 Turuni A DECA
01000 AND A dan B AND
01010 OR A dan B OR
01100 XOR A dan B XOR
01110 Komplemen A COMA
10000 Geser kanan A SHRA
11000 Geser kiri A SHLA
Tabel 4.2.3 Pengkodean operasi ALU

4.2.2 C ontoh Operasi M ikro


Word kontrol 14 bit diperlukan untuk menentukan operasi mikro dalam CPU.
Word kontrol untuk operasi mikro yang diberikan dapat diturunkan dari

8
variabel pilihan. Misalnya, operasi mikro kurang yang diberikan oleh
pernyataan

R1 ← R2 – R3

menentukan R2 untuk input A ALU, R3 untuk input B ALU, R1 untuk register


tujuan, dan operasi ALU untuk mengurangi A – B. Dengan demikian word
kontrol ditentukan oleh empat field dan nilai biner yang sesuai untuk setiap
field diperoleh dari pengkodean yang tercantum dalam Tabel 4.2.2 dan Tabel
4.2.3. Word kontrol biner untuk operasi mikro kurang adalah 010 011 001 00101
dan diperoleh sebagai berikut:

Field: SELA SELB SELD OPR


Simbol: R2 R3 R1 SUB
Word kontrol: 010 011 001 00101

Word kontrol untuk operasi mikro ini dan beberapa lainnya tercantum dalam
Tabel 4.2.4.

Sebutan Simbolis
Operasi mikro Word kontrol
SELA SELB SELD OPR
R1 ← R2 – R3 R2 R3 R1 SUB 010 011 001 00101
R4 ← R4 R5 R4 R5 R4 OR 100 101 100 01010
R6 ← R6 + 1 R6 - R6 INCA 110 000 110 00001
R7 ← R1 R1 - R7 TSFA 001 000 111 00000
Output ← R2 R2 - Kosong TSFA 010 000 000 00000
Output ← Input Input - Kosong TSFA 000 000 000 00000
R4 ← shl R4 R4 - R4 SHLA 100 000 100 11000
R5 ← 0 R5 R5 R5 XOR 101 101 101 01100
Tabel 4.2.4 Contoh Operasi Mikro untuk CPU

Catatan bahwa:

• Operasi mikro kenaikan dan transfer tidak menggunakan input B dari


ALU.

• Kami menetapkan 000 untuk setiap field yang tidak digunakan ketika
merumuskan word kontrol biner, meskipun angka biner lainnya dapat
digunakan.

9
• Untuk menempatkan isi register ke terminal output, kami menempatkan
isi register ke input A ALU, tetapi tidak ada register yang dipilih untuk
menerima data. Operasi ALU TSFA menempatkan data dari register,
melalui ALU, ke terminal output. Transfer langsung dari input ke output
dilakukan dengan word kontrol dari semua 0 (membuat field B 000).

• Register dapat dihapus ke 0 dengan operasi exclusive-OR. Ini karena x


⊕ x = 0.

4.3 O R G A N ISA SI S TA C K
Fitur yang berguna yang termasuk dalam CPU dari kebanyakan komputer
adalah stack atau daftar last-in, first-out (LIFO) atau terakhir-masuk, pertama-
keluar. Stack adalah perangkat penyimpanan yang menyimpan informasi
sedemikian rupa sehingga elemen yang disimpan terakhir adalah elemen
pertama yang diambil.

Stack pada komputer digital pada dasarnya adalah sebuah unit memori dengan
sebuah register alamat yang hanya bisa menghitung (setelah nilai awal
dimasukkan ke dalamnya). Register yang menyimpan alamat untuk stack
disebut stack pointer (SP) karena nilainya selalu menunjuk pada elemen teratas
dalam stack. Register stack selalu tersedia untuk dibaca atau ditulis. Isi word
lah yang disisipkan atau dihapus.

Dua operasi stack adalah penyisipan dan penghapusan elemen. Operasi


penyisipan disebut push (atau push-down) karena dapat dianggap sebagai hasil
mendorong elemen baru di atas. Operasi penghapusan disebut pop (atau pop-
up) sebagai hasil dari menghapus satu elemen. Operasi ini disimulasikan dengan
menambah atau mengurangi register stack pointer.

4.3.1 Stack R egister


Stack dapat ditempatkan di sebagian memori besar atau dapat disusun sebagai
kumpulan sejumlah word atau register memori yang terbatas. Gambar 4.3.1

10
menunjukkan organisasi stack register 64-word. Register stack pointer SP berisi
angka biner yang nilainya sama dengan alamat word yang saat ini ada di atas
stack. Tiga elemen ditempatkan dalam stack: A, B, dan C, sesuai urutan itu.
Elemen C ada di atas stack sehingga isi SP sekarang adalah 3.

Alamat

63

FULL EMT
Y

4
SP C 3
B 2
A 1
0

DR

Gambar 4.3.1 Diagram blok dari stack 64-word

Dalam stack 64-word, stack pointer berisi 6 bit karena 26 = 64. Karena
SP hanya memiliki enam bit, ia tidak dapat melebihi angka yang lebih besar
dari 63 (111111 dalam biner). Ketika 63 bertambah 1, hasilnya adalah 0 karena
111111 + 1 = 1000000 dalam biner, tetapi SP hanya dapat mengakomodasi
enam least significant bit. Demikian pula, ketika 000000 dikurangi dengan 1,
hasilnya adalah 111111. Register satu-bit FULL diatur ke 1 ketika stack penuh,
dan register satu-bit EMTY diatur ke 1 ketika stack kosong. DR adalah register
data yang menyimpan data biner untuk ditulis atau dibaca dari stack.

Operasi push dilaksanakan dengan urutan operasi mikro sebagai berikut:

SP ← SP + 1 Naikkan stack pointer

11
M[SP] ← DR Tulis elemen di atas stack
If (SP = 0) then (FULL ← 1) Periksa jika stack sudah penuh
EMTY ← 0 Tandai bahwa stack tidak kosong

Operasi penulisan memori memasukkan word dari DR ke bagian atas stack.


Perhatikan bahwa SP menyimpan alamat bagian atas stack dan bahwa M[SP]
menunjukkan word memori yang ditentukan oleh alamat yang saat ini tersedia
di SP.

Operasi pop dilaksanakan dengan urutan operasi mikro sebagai berikut:

DR ← M[SP] Baca elemen dari atas stack


SP ← SP – 1 Turunkan stack pointer
If (SP = 0) then (EMTY ← 1) Periksa jika stack sudah kosong
FULL ← 0 Tandai bahwa stack tidak penuh

4.3.2 Stack M em ori


Stack dapat ada sebagai unit yang berdiri sendiri seperti pada Gambar 4.3.1
atau dapat diimplementasikan dalam random-access memory yang terpasang
pada CPU. Implementasi stack dalam CPU dilakukan dengan menetapkan
sebagian memori ke operasi stack dan menggunakan register prosesor sebagai
stack pointer. Gambar 4.3.2 menunjukkan sebagian memori komputer yang
dipartisi menjadi tiga segmen: program, data, dan stack. Penghitung program
PC menunjuk ke alamat instruksi selanjutnya dalam program. Alamat register
AR menunjuk pada suatu array data. Stack pointer SP menunjuk pada bagian
atas stack. Tiga register tersebut terhubung ke bus alamat sama, dan salah satu
dari mereka dapat memberikan alamat untuk memori. PC digunakan selama
fase fetch untuk membaca instruksi. AR digunakan selama fase execute untuk
membaca operan. SP digunakan untuk mendorong atau mengeluarkan elemen
ke dalam atau dari stack.

12
Alamat
Unit memori
PC 1000
Program
(instruksi)

AR 2000
Data
(operan)

3000
Stack

3997
SP 3998
3999
4000
4001

DR

Gambar 4.3.2 Memori komputer dengan segmen program, data, dan stack.

Seperti yang ditunjukkan pada Gambar 4.3.2, nilai awal SP adalah 4001 dan
stack bertambah dengan menurunnya alamat. Jadi elemen pertama yang
disimpan di stack adalah di alamat 4000, elemen kedua disimpan di alamat 3999,
dan alamat terakhir yang dapat digunakan untuk stack adalah 3000. Tidak ada
ketentuan yang tersedia untuk pemeriksaan batas stack.

Kita berasumsi bahwa elemen dalam stack berkomunikasi dengan register data
DR. Elemen baru dimasukkan dengan operasi push sebagai berikut:

SP ← SP – 1
M[SP] ← DR

13
Stack pointer diturunkan sehingga menunjuk ke alamat word berikutnya.
Operasi penulisan memori memasukkan word dari DR ke bagian atas stack.
Elemen baru dihapus dengan operasi pop sebagai berikut:

DR ← M[SP]
SP ← SP + 1

Elemen teratas dibaca dari stack ke DR. Stack pointer kemudian dinaikkan
untuk menunjuk elemen berikutnya dalam stack.

Sebagian besar komputer tidak menyediakan perangkat keras untuk memeriksa


stack overflow (stack penuh) atau underflow (stack kosong). Batas stack dapat
diperiksa dengan menggunakan dua register prosesor: satu untuk menahan
batas-atas (3000 dalam kasus ini), dan yang lainnya untuk menahan batas-
bawah (4001 dalam kasus ini). Setelah operasi push, SP dibandingkan dengan
register batas-atas dan setelah operasi pop, SP dibandingkan dengan register
batas-bawah.

Stack pointer dimuat dengan nilai awal. Nilai awal ini harus menjadi alamat
bawah dari stack yang ditetapkan dalam memori. Untuk selanjutnya, SP secara
otomatis diturunkan atau dinaikkan dengan setiap operasi push atau pop.
Keuntungan dari stack memori adalah CPU dapat merujuknya tanpa harus
menentukan alamat, karena alamat selalu tersedia dan secara otomatis
diperbarui dalam stack pointer.

4.3.3 R everse P olish N otation


Organisasi stack sangat efektif untuk mengevaluasi ekspresi aritmatika. Ekspresi
aritmatika yang umum ditulis dalam notasi infix, dengan masing-masing
operator ditulis di antara operan. Metode matematika yang umum untuk
menulis ekspresi aritmatika menimbulkan kesulitan ketika dievaluasi oleh
komputer. Pertimbangkan ekspresi aritmatika sederhana:

A*B+C*D

14
Tanda bintang (yang menunjukkan perkalian) ditempatkan di antara dua
operan A dan B atau C dan D. Nilai plusnya adalah di antara kedua produk.
Untuk mengevaluasi ekspresi aritmatika ini, perlu untuk menghitung hasil A *
B, menyimpan hasil ini saat menghitung C * D, dan kemudian menjumlahkan
kedua hasil. Dari contoh ini kita melihat bahwa untuk mengevaluasi ekspresi
aritmatika dalam notasi infix perlu untuk memindai bolak-balik sepanjang
ekspresi untuk menentukan operasi selanjutnya yang akan dilakukan.

Matematikawan Polandia, Lukasiewicz, menunjukkan bahwa ekspresi


aritmatika dapat direpresentasikan dalam notasi prefix. Representasi ini, sering
disebut sebagai notasi Polish, menempatkan operator sebelum operan. Notasi
postfix, disebut sebagai notasi Polish terbalik atau reverse Polish notation
(RPN), menempatkan operator setelah operan. Contoh-contoh berikut
menunjukkan tiga representasi:

A+B Notasi infix


+AB Notasi prefix atau Polish
AB+ Notasi postfix atau Polish terbalik

RPN adalah bentuk yang cocok untuk manipulasi stack. Ekspresi

A*B+C*D

ditulis dalam RPN sebagai

AB*CD*+

dan dievaluasi sebagai berikut: Memindai ekspresi dari kiri ke kanan. Ketika
operator tercapai, lakukan operasi dengan dua operan yang ditemukan di sisi
kiri operator. Hapus dua operan dan operator dan gantilah dengan jumlah yang
diperoleh dari hasil operasi. Lanjutkan untuk memindai ekspresi dan ulangi
prosedur untuk setiap operator yang ditemui hingga tidak ada lagi operator.

Konversi dari notasi infix ke RPN harus mempertimbangkan hirarki operasional


yang diadopsi untuk notasi infix. Hirarki ini menentukan bahwa pertama-tama

15
kita melakukan semua aritmatika di dalam kurung dalam, kemudian di dalam
kurung luar, dan melakukan operasi perkalian dan pembagian sebelum operasi
penjumlahan dan pengurangan. Pertimbangkan ekspresi berikut.

(A + B) * [C * (D + E) + F]

Untuk mengevaluasi ekspresi, pertama-tama kita harus melakukan aritmatika


di dalam tanda kurung (A + B) dan (D + E). Selanjutnya kita harus
menghitung ekspresi di dalam tanda kurung kotak. Penggandaan C * (D + E)
harus dilakukan sebelum penjumlahan F karena perkalian lebih diutamakan
daripada penjumlahan. Operasi terakhir adalah perkalian dari dua hasil antara
tanda kurung dan tanda kurung kotak. Ekspresi dapat dikonversi untuk RPN,
tanpa menggunakan tanda kurung, dengan mempertimbangkan hirarki operasi.
Ekspresi yang dikonversi adalah

AB+DE+C*F+*

4.3.4 Evaluasi Ekspresi M atem atika


Reverse Polish Notation, dikombinasikan dengan stack register, adalah cara
paling efisien yang dikenal untuk mengevaluasi ekspresi aritmatika. Prosedur
ini terdiri dari pertama mengubah ekspresi aritmatika menjadi RPN yang setara.

Operasi mikro berikut dijalankan dengan stack ketika operasi dikeluarkan oleh
kontrol di komputer: (1) dua operan paling atas dalam stack digunakan untuk
operasi, dan (2) stack di-pop dan hasil operasi menggantikan operan yang lebih
rendah. Dengan mendorong operan ke dalam stack secara terus menerus dan
melakukan operasi seperti yang didefinisikan di atas, ekspresi dievaluasi dalam
urutan yang tepat dan hasil akhir tetap di atas stack.

Contoh numerik berikut dapat menjelaskan prosedur ini. Pertimbangkan


ekspresi aritmatika

(3 * 4) + (5 * 6)

Dalam RPN, dinyatakan sebagai

16
34*56*+

Sekarang perhatikan operasi stack yang ditunjukkan pada Gambar 4.3.3. Setiap
kotak mewakili satu operasi stack dan panah selalu menunjuk ke atas stack.
Memindai ekspresi dari kiri ke kanan, kami menemukan dua operan. Pertama
angka 3 di-push ke dalam stack, lalu angka 4. Simbol selanjutnya adalah
operator perkalian *. Hal ini menyebabkan perkalian dua elemen teratas dalam
stack. Stack kemudian di-pop dan hasil ditempatkan di atas stack, menggantikan
dua operan semula. Selanjutnya kita menemukan dua operan 5 dan 6, sehingga
mereka didorong ke dalam stack. Operasi stack yang dihasilkan dari *
berikutnya menggantikan dua angka ini dengan hasil mereka. Operasi terakhir
melakukan penambahan aritmatika dari dua angka teratas dalam stack untuk
menghasilkan hasil akhir 42.

Gambar 4.3.3 Operasi stack untuk mengevaluasi 3 * 4 + 5 * 6

6
4 5 5 30
3 3 12 12 12 12 42
3 4 * 5 6 * +

4.4 F OR M A T I N STR U K SI
Komputer biasanya akan memiliki berbagai format kode instruksi. Ini adalah
fungsi dari unit kontrol dalam CPU untuk menginterpretasikan setiap kode
instruksi dan menyediakan fungsi kontrol yang diperlukan untuk memproses
instruksi. Format instruksi biasanya digambarkan dalam kotak persegi panjang
yang melambangkan bit instruksi seperti yang muncul dalam word memori atau
dalam register kontrol. Bit instruksi dibagi menjadi grup yang disebut field.
Field yang paling umum ditemukan dalam format instruksi adalah:

1. Field kode operasi yang menentukan operasi yang akan dilakukan.


2. Field alamat yang menunjuk alamat memori atau register prosesor.

17
3. Field mode yang menentukan cara operan atau alamat efektif ditetapkan.

Field kode operasi suatu instruksi adalah sekelompok bit yang mendefinisikan
berbagai operasi prosesor, seperti menambah, mengurangi, komplemen, dan
menggeser. Bit yang menentukan field mode dari kode instruksi menentukan
berbagai alternatif untuk memilih operan dari alamat yang diberikan.

Operasi yang ditentukan oleh instruksi komputer dijalankan pada beberapa


data yang disimpan dalam memori atau register prosesor. Operand yang berada
di memori ditentukan oleh alamat memorinya. Operand yang berada di register
prosesor ditentukan dengan alamat register. Alamat register adalah jumlah
biner k bit yang mendefinisikan salah satu register 2k di CPU. Jadi CPU dengan
16 register prosesor R0 hingga R15 akan memiliki field alamat register empat
bit. Angka biner 0101, misalnya, akan menunjuk register R5.

Komputer mungkin memiliki instruksi dari beberapa panjang berbeda yang


berisi jumlah alamat yang bervariasi. Jumlah bidang alamat dalam format
instruksi komputer tergantung pada organisasi internal registernya. Sebagian
besar komputer termasuk dalam salah satu dari tiga jenis organisasi CPU:

1. Organisasi akumulator tunggal


2. Organisasi register umum
3. Organisasi stack

Untuk mengilustrasikan pengaruh jumlah alamat pada program komputer, kita


akan mengevaluasi pernyataan aritmatika

X = (A + B) * (C + D)

menggunakan nol, satu, dua, atau tiga instruksi alamat. Kita akan
menggunakan simbol ADD, SUB, MUL, dan DIV untuk empat operasi
aritmatika; MOV untuk operasi tipe-transfer; dan LOAD dan STORE untuk
transfer ke dan dari memori dan register AC (accumulator). Kita akan

18
menganggap bahwa operan ada di alamat memori A, B, C, dan D, dan hasilnya
harus disimpan dalam memori di alamat X.

4.4.1 Instruksi Tiga-A lam at


Komputer dengan format instruksi tiga-alamat dapat menggunakan setiap field
alamat untuk menentukan register prosesor atau operan memori. Program
untuk mengevaluasi pernyataan aritmatika di atas adalah sebagai berikut:

ADD R1, A, B R1 ← M[A] + M[B]


ADD R2, C, D R2 ← M[C] + M[D]
MUL X, R1, R2 M[X] ← R1 * R2

Diasumsikan bahwa komputer memiliki dua register prosesor, R1 dan R2.


Simbol M[X] menunjukkan operan pada alamat memori yang dilambangkan
oleh X.

Keuntungan dari format tiga-alamat adalah bahwa ia menghasilkan program


singkat ketika mengevaluasi ekspresi aritmatika. Kerugiannya adalah bahwa
instruksi kode-biner memerlukan terlalu banyak bit untuk menentukan tiga
alamat.

4.4.2 Instruksi D ua-A lam at


Instruksi dua-alamat adalah yang paling umum di komputer komersial. Di sini
sekali lagi setiap field alamat dapat menentukan register prosesor atau word
memori. Program untuk mengevaluasi pernyataan aritmatika di atas adalah
sebagai berikut:

MOV R1, A R1 ← M[A]


ADD R1, B R1 ← R1 + M[A]
MOV R2, C R2 ← M[C]
ADD R2, D R2 ← R2 + M[D]
MUL R1, R2 R1 ← R1 * R2
MOV X, R1 X ← R1

19
Instruksi MOV memindahkan atau mentransfer operan ke dan dari memori dan
register prosesor. Simbol pertama yang tercantum dalam instruksi diasumsikan
sebagai sumber dan tujuan di mana hasil operasi ditransfer.

4.4.3 Instruksi Satu -A lam at


Instruksi satu alamat menggunakan register akumulator (AC) untuk semua
manipulasi data. Untuk perkalian dan pembagian membutuhkan register kedua.
Namun, di sini kita akan mengabaikan register kedua dan menganggap bahwa
AC berisikan hasil semua operasi. Program untuk mengevaluasi pernyataan
aritmatika di atas adalah sebagai berikut:

LOAD A AC ← M[A]
ADD B AC ← AC + B
STORE T M[T] ← AC
LOAD C AC ← M[C]
ADD D AC ← AC + D
MUL T AC ← AC * T
STORE X M[X] ← AC

Semua operasi dilakukan antara register AC dan operan memori. T adalah


alamat lokasi memori sementara yang diperlukan untuk menyimpan hasil
sementara.

4.4.4 Instruksi N ol-A lam at


Komputer yang terorganisasi stack tidak menggunakan field alamat untuk
instruksi ADD dan MUL. Namun demikian, instruksi PUSH dan POP, perlu
field alamat untuk menentukan operan yang berkomunikasi dengan stack.
Program berikut menunjukkan bagaimana pernyataan aritmatika di atas akan
ditulis untuk komputer yang terorganisasi stack. (TOS adalah singkatan dari
atas dari stack.)

PUSH A TOS ← A

20
PUSH B TOS ← B
ADD TOS ← (A + B)
PUSH C TOS ← C
PUSH D TOS ← D
ADD TOS ← (C + D)
MUL TOS ← (A + B) * (C +D)
POP X M[X] ← TOS

Untuk mengevaluasi ekspresi aritmatika dalam komputer stack, perlu untuk


mengubah ekspresi menjadi reverse Polish notation. Nama “nol-alamat”
diberikan untuk jenis komputer ini karena tidak adanya field alamat dalam
instruksi komputasi.

4.4.5 Instruksi R ISC


Set instruksi prosesor RISC tipikal terbatas pada penggunaan instruksi muat
dan simpan ketika berkomunikasi antara memori dan CPU. Semua instruksi
lain dijalankan dalam register CPU tanpa merujuk pada memori. Suatu
program untuk CPU tipe-RISC terdiri dari instruksi LOAD dan STORE yang
memiliki satu memori dan satu alamat register, dan instruksi tipe-komputasi
yang memiliki tiga alamat dengan ketiganya menentukan register prosesor.
Berikut ini adalah program untuk mengevaluasi X = (A + B) * (C + D).

LOAD R1, A R1 ← M[A]


LOAD R2, B R2 ← M[B]
LOAD R3, C R3 ← M[C]
LOAD R4, D R4 ← M[D]
ADD R1, R1, R2 R1 ← R1 + R2
ADD R3, R3, R4 R3 ← R3 + R4
MUL R1, R1, R3 R1 ← R1 * R3
STORE X, R1 M[X] ← R1

21
Instruksi muat memindahkan operan dari memori ke register CPU. Operasi
tambah dan kali dijalankan dengan data dalam register tanpa mengakses
memori. Hasil perhitungan kemudian disimpan dalam memori dengan instruksi
simpan.

4.5 M OD E P EN G A LA M A TA N
Field operasi dari instruksi menentukan operasi yang akan dilakukan. Operasi
ini harus dijalankan pada beberapa data yang disimpan dalam register
komputer atau word memori. Cara operan dipilih selama pelaksanaan program
tergantung pada mode pengalamatan instruksi. Mode pengalamatan
menentukan aturan untuk menafsirkan atau memodifikasi field alamat instruksi
sebelum operan benar-benar direferensikan. Komputer menggunakan teknik
mode pengalamatan untuk tujuan mengakomodasi satu atau kedua ketentuan
berikut:

1. Untuk memberikan fleksibilitas pemrograman kepada pengguna dengan


menyediakan fasilitas seperti pointer ke memori, penghitung untuk
kontrol loop, pengindeksan data, dan relokasi program.
2. Untuk mengurangi jumlah bit dalam field pengalamatan dari instruksi.

Unit kontrol komputer dirancang untuk melalui siklus instruksi yang dibagi
menjadi tiga fase utama:

1. Fetch: Ambil instruksi dari memori.


2. Decode: Dekode instruksi.
3. Execute: Jalankan instruksi.

Contoh format instruksi dengan field mode pengalamatan yang berbeda


ditunjukkan pada Gambar 4.5.1. Field kode operasi menentukan operasi yang
akan dilakukan. Field mode digunakan untuk menemukan operan yang
diperlukan untuk operasi. Field alamat bisa ada atau tidak dalam instruksi. Jika
ada field alamat, ini dapat menunjuk alamat memori atau register prosesor.

22
Selain itu, seperti yang dibahas di bagian sebelumnya, instruksi mungkin
memiliki lebih dari satu field alamat, dan setiap field alamat dapat dikaitkan
dengan mode pengalamatannya sendiri.

Gambar 4.5.1 Format instruksi dengan field alamat

Kode operasi Mode Alamat

Meskipun sebagian besar mode pengalamatan memodifikasi field alamat dari


instruksi, ada dua mode yang tidak memerlukan field alamat sama sekali. Ini
adalah mode sisipan dan mode langsung.

M ode Sisipan: Dalam mode ini operan ditentukan secara implisit dalam

definisi instruksi. Sebagai contoh, instruksi "akumulator komplemen"


adalah instruksi mode-sisipan karena operan dalam register akumulator
tersisipkan dalam definisi instruksi. Faktanya, semua instruksi referensi
register yang menggunakan akumulator adalah instruksi mode-sisipan.
Instruksi alamat-nol di komputer yang terorganisasi stack adalah
instruksi mode-sisipan karena operan sisipan berada di atas stack.

M ode Langsung: Dalam mode ini operan ditentukan dalam instruksi

itu sendiri. Dengan kata lain, instruksi mode-langsung memiliki field


operan daripada field alamat. Field operan berisi operan aktual yang
akan digunakan bersama dengan operasi yang ditentukan dalam
instruksi. Instruksi mode-langsung berguna untuk menginisialisasi
register ke nilai konstan.

Telah disebutkan sebelumnya bahwa field alamat instruksi dapat menentukan


word memori atau register prosesor. Ketika field alamat menentukan register
prosesor, instruksi dikatakan berada dalam mode register.

M ode R egister: Dalam mode ini operan berada di register yang berada

di dalam CPU. Register tertentu dipilih dari field register dalam instruksi.
Field k-bit dapat menentukan salah satu dari register 2k.

23
M ode Tidak Langsung R egister: Dalam mode ini instruksi

menentukan register di CPU yang isinya memberikan alamat operan


dalam memori. Dengan kata lain, register yang dipilih berisi alamat
operan daripada operan itu sendiri. Sebelum menggunakan instruksi
mode tidak langsung register, pemrogram harus memastikan bahwa
alamat memori operan ditempatkan dalam register prosesor dengan
instruksi sebelumnya. Referensi ke register kemudian sama dengan
menentukan alamat memori. Keuntungan dari instruksi mode tidak
langsung register adalah bahwa field alamat instruksi menggunakan bit
lebih sedikit untuk memilih register daripada yang diperlukan untuk
menentukan alamat memori secara langsung.

M ode A uto-naik atau A uto-turun: Ini mirip dengan mode tidak

langsung register kecuali bahwa register dinaikkan atau diturunkan


setelah (atau sebelum) nilainya digunakan untuk mengakses memori.
Ketika alamat yang disimpan dalam register mengacu pada tabel data
dalam memori, perlu untuk menaikkan atau menurunkan register setelah
setiap akses ke tabel. Ini dapat dicapai dengan menggunakan instruksi
kenaikan atau penurunan. Namun, karena ini adalah persyaratan yang
umum, beberapa komputer memasukkan mode khusus yang secara
otomatis menaikkan atau menurunkan isi register setelah akses data.

Field alamat instruksi digunakan oleh unit kontrol di CPU untuk mendapatkan
operan dari memori. Terkadang nilai yang diberikan dalam field alamat adalah
alamat operan, tetapi kadang-kadang hanya alamat dari mana alamat
penghitungan operan. Untuk membedakan antara berbagai mode pengalamatan,
perlu untuk membedakan antara bagian alamat dari instruksi dan alamat efektif
yang digunakan oleh kontrol ketika menjalankan instruksi. Alamat efektif
didefinisikan sebagai alamat memori yang diperoleh dari perhitungan yang
ditentukan oleh mode pengalamatan yang diberikan. Alamat efektif adalah

24
alamat operan dalam instruksi tipe-komputasi. Ini adalah alamat di mana
kontrol cabang menanggapi instruksi tipe-cabang.

M ode A lam at Langsung: Dalam mode ini alamat efektif sama dengan

bagian alamat dari instruksi. Operan berada di memori dan alamatnya


diberikan langsung oleh field alamat instruksi. Dalam instruksi tipe-
cabang, field alamat menentukan alamat cabang yang sebenarnya.

M ode A lam at Tid ak Langsung: Dalam mode ini field alamat

instruksi memberikan alamat di mana alamat efektif disimpan dalam


memori. Kontrol mengambil instruksi dari memori dan menggunakan
bagian alamatnya untuk mengakses memori lagi untuk membaca alamat
efektif.

Beberapa mode pengalamatan mengharuskan field alamat instruksi


ditambahkan ke isi register tertentu dalam CPU. Alamat efektif dalam mode
ini diperoleh dari perhitungan berikut:

alamat efektif = bagian alamat dari instruksi + isi register CPU

Register CPU yang digunakan dalam perhitungan dapat berupa penghitung


program, register indeks, atau register basis. Dalam kasus mana pun kita
memiliki mode pengalamatan yang berbeda yang digunakan untuk aplikasi yang
berbeda.

M ode A lam at R elatif: Dalam mode ini isi ditambahkan ke bagian

alamat dari instruksi untuk mendapatkan alamat efektif. Bagian alamat


dari instruksi biasanya angka signed (dalam representasi komplemen
2an) yang dapat berupa positif atau negatif. Ketika angka ini
ditambahkan ke isi penghitung program, hasilnya menghasilkan alamat
efektif yang posisinya dalam memori relatif terhadap alamat instruksi
berikutnya. Untuk mengklarifikasikan dengan contoh, asumsikan bahwa
penghitung program berisi angka 825 dan bagian alamat dari instruksi

25
berisi angka 24. Instruksi di lokasi 825 dibaca dari memori selama fase
fetch dan penghitung program kemudian ditambahkan oleh satu ke satu.
826. Perhitungan alamat efektif untuk mode alamat relatif adalah 826 +
24 = 850. Ini merupakan 24 lokasi memori lebih lanjut dari alamat
instruksi berikutnya. Pengalamatan relatif sering digunakan dengan
instruksi tipe-cabang ketika alamat cabang berada di sekitar kata
instruksi itu sendiri. Ini menghasilkan field alamat yang lebih pendek
dalam format instruksi karena alamat relatif dapat ditentukan dengan
jumlah bit yang lebih kecil dibandingkan dengan jumlah bit yang
diperlukan untuk menunjuk seluruh alamat memori.

M ode P engalam atan Terindeks: Dalam mode ini isi register indeks

ditambahkan ke bagian alamat instruksi untuk mendapatkan alamat


efektif. Register indeks adalah register CPU khusus yang berisi nilai
indeks. Field alamat instruksi menentukan alamat awal array data dalam
memori. Setiap operan dalam array disimpan dalam memori relatif
terhadap alamat awal. Jarak antara alamat awal dan alamat operan
adalah nilai indeks yang disimpan dalam register indeks. Setiap operan
dalam array dapat diakses dengan instruksi yang sama asalkan register
indeks berisi nilai indeks yang benar. Register indeks dapat ditambahkan
untuk memudahkan akses ke operan berturut-turut. Perhatikan bahwa
jika instruksi tipe-indeks tidak menyertakan field alamat dalam
formatnya, instruksi akan dikonversi ke operasi mode tidak langsung
register.

Beberapa komputer mendedikasikan satu register CPU untuk berfungsi hanya


sebagai register indeks. Register ini terlibat secara implisit ketika instruksi
mode-indeks digunakan. Di komputer dengan banyak register prosesor, salah
satu register CPU dapat berisi nomor indeks. Dalam kasus seperti itu register
harus ditentukan secara eksplisit dalam field register dalam format instruksi.

26
M ode P engalam atan R egistrasi D asar: Dalam mode ini, isi register

basis ditambahkan ke bagian alamat instruksi untuk mendapatkan


alamat yang efektif. Ini mirip dengan mode pengalamatan terindeks
kecuali bahwa register sekarang disebut register basis dan bukan register
indeks. Perbedaan antara dua mode tersebut adalah dalam cara mereka
digunakan daripada dalam cara mereka dihitung. Register indeks
diasumsikan memiliki nomor indeks yang relatif terhadap bagian alamat
instruksi. Register basis diasumsikan memiliki alamat basis dan field
alamat dari instruksi memberikan perpindahan relatif terhadap alamat
basis ini. Mode pengalamatan register basis digunakan di komputer
untuk memfasilitasi relokasi program dalam memori. Ketika program
dan data dipindahkan dari satu segmen memori ke yang lain, seperti
yang diperlukan dalam sistem multi-pemrograman, nilai alamat instruksi
harus mencerminkan perubahan posisi ini. Dengan register basis, nilai
perpindahan dari instruksi tidak harus berubah. Hanya nilai register
basis yang membutuhkan pembaruan untuk mencerminkan awal segmen
memori baru.

4.5.1 C ontoh N um erik


Untuk menunjukkan perbedaan antara berbagai mode, kita akan menunjukkan
efek dari mode pengalamatan pada instruksi yang didefinisikan pada Gambar
4.5.2. Instruksi dua-word di alamat 200 dan 201 adalah instruksi "muat ke AC"
dengan field alamat sama dengan 500. Word pertama dari instruksi menentukan
kode dan mode operasi, dan word kedua menentukan bagian alamat. PC
memiliki nilai 200 untuk mengambil instruksi tersebut. Isi register prosesor R1
adalah 400, dan isi register indeks XR adalah 100. AC menerima operan setelah
instruksi dijalankan. Gambar tersebut mencantumkan beberapa alamat terkait
dan menunjukkan isi memori di masing-masing alamat tersebut.

27
Alamat Memori

PC = 200 200 Muat ke AC Mode


201 Alamat = 500
R1 = 400
202 Instruksi selanjutnya

XR = 100

AC 450
399
400 700

500 800

600 900

702 325

800 300

Gambar 4.5.2 Contoh numerik untuk mode pengalamatan

Field mode instruksi dapat menentukan salah satu dari sejumlah mode. Untuk
setiap mode yang memungkinkan, kita menghitung alamat efektif dan operan
yang harus dimuat ke AC.

Dalam mode alamat langsung, alamat efektif adalah bagian alamat dari
instruksi 500 dan operan yang akan dimuat ke AC adalah 800.

Dalam mode langsung, word kedua dari instruksi tersebut diambil sebagai
operan daripada alamat, jadi 500 adalah dimuat ke AC. (Alamat efektif dalam
kasus ini adalah 201.)

Dalam mode tidak langsung, alamat efektif disimpan dalam memori pada
alamat 500. Oleh karena itu, alamat efektif adalah 800 dan operan adalah 300.

28
Dalam mode relatif, alamat efektif adalah 500 + 202 = 702 dan operan adalah
325. (Perhatikan bahwa nilai dalam PC setelah fase fetch dan selama fase
execute adalah 202.)

Dalam mode indeks, alamat efektif adalah XR + 500 = 100 + 500 = 600 dan
operan adalah 900.

Dalam mode register, operan berada dalam R1 dan 400 dimuat ke AC. (Tidak
ada alamat efektif dalam kasus ini.)

Dalam mode tidak langsung register, alamat efektif adalah 400, yaitu isi R1 dan
operan yang dimuat ke AC adalah 700.

Mode auto-naik sama dengan mode tidak langsung register, kecuali bahwa R1
bertambah menjadi 401 setelah eksekusi instruksi. Mode auto-turun
menurunkan R1 menjadi 399 sebelum eksekusi instruksi. Operan yang dimuat
ke AC sekarang adalah 450.

Tabel 4.5.1 mendaftar nilai-nilai alamat efektif dan operan dimuat ke AC untuk
sembilan mode pengalamatan.

Tabel 4.5.1 Daftar Tabel Contoh Numerik

Mode Pengalamatan Alamat Efektif Isi AC


Alamat langsung 500 800
Operan immediate 201 500
Alamat tidak langsung 800 300
Alamat relatif 702 325
Alamat terindeks 600 900
Register – 400
Tidak langsung register 400 700
Auto-naik 400 700
Auto-turun 399 450

4.6 T R A N SFER D A N M A N IP U LA SI D A TA
Komputer menyediakan serangkaian instruksi yang luas untuk memberikan
pengguna fleksibilitas untuk melakukan berbagai tugas komputasi. Set instruksi
dari komputer yang berbeda berbeda satu sama lain, sebagian besar dalam cara

29
operan ditentukan dari field alamat dan mode. Operasi yang sebenarnya
tersedia dalam set instruksi tidak jauh berbeda dari satu komputer ke komputer
lainnya. Kebetulan penentuan kode biner dalam field kode operasi berbeda di
komputer yang berbeda, bahkan untuk operasi yang sama. Mungkin juga bahwa
nama simbolis yang diberikan untuk instruksi dalam notasi bahasa assembly
berbeda di komputer yang berbeda, bahkan untuk instruksi yang sama. Namun
demikian, ada satu set operasi dasar yang sebagian besar, jika tidak semua,
komputer termasuk dalam daftar instruksi mereka.

Sebagian besar instruksi komputer dapat diklasifikasikan ke dalam tiga


kategori:

1. Instruksi transfer data


2. Instruksi manipulasi data
3. Instruksi kontrol program

4.6.1 Instruksi Transfer D ata


Instruksi transfer data memindahkan data dari satu tempat ke tempat lain
tanpa mengubah isi data. Transfer yang paling umum adalah antara register
memori dan prosesor, antara register prosesor dan input atau output, dan
antara register prosesor itu sendiri. Tabel 4.6.1 memberikan daftar delapan
instruksi transfer data yang digunakan di banyak komputer. Setiap instruksi
disertai simbol mnemonik. Harus diperhatikan bahwa komputer yang berbeda
menggunakan mnemonik yang berbeda untuk nama instruksi yang sama.

Tabel 4.6.1 Instruksi Transfer Data Tipikal

Nama Mnemonik
Muat LD
Simpan ST
Pindah MOV
Tukar XCH
Input IN
Output OUT
Push PUSH
Pop POP

30
Instruksi muat sebagian besar telah digunakan untuk menunjuk sebuah transfer
dari memori ke register prosesor, biasanya akumulator. Instruksi simpan
menunjuk sebuah transfer dari register prosesor ke memori. Instruksi pindah
telah digunakan di komputer dengan banyak register CPU untuk menunjuk
sebuah transfer dari satu register ke register lainnya. Ini juga telah digunakan
untuk transfer data antara register CPU dan memori atau antara dua word
memori. Instruksi tukar bertukar informasi antara dua register atau register dan
word memori. Instruksi input dan output mentransfer data di antara register
prosesor dan terminal input atau output. Instruksi push dan pop mentransfer
data antara register prosesor dan stack memori.

Beberapa konvensi bahasa assembly memodifikasi simbol mnemonik untuk


membedakan antara mode pengalamatan yang berbeda. Misalnya, mnemonik
untuk muat langsung menjadi LDI. Konvensi bahasa assembly lainnya
menggunakan karakter khusus untuk menunjuk mode pengalamatan. Misalnya,
mode langsung dikenali dari tanda pagar # yang ditempatkan sebelum operan.
Bagaimanapun, yang penting adalah untuk menyadari bahwa setiap instruksi
dapat terjadi dengan berbagai mode pengalamatan. Sebagai contoh, perhatikan
instruksi muat ke akumulator ketika digunakan dengan delapan mode
pengalamatan yang berbeda.

Konvensi
Mode Transfer Register
Assembly
Alamat langsung LD ADR AC ← M[ADR]
Alamat tidak langsung LD @ADR AC ← M[M[ADR]]
Alamat relatif LD $ADR AC ← M[PC + ADR]
Operan langsung LD #NBR AC ← NBR
Pengalamatan indeks LD ADR(X) AC ← M[ADR + XR]
Register LD R1 AC ← R1
Tidak langsung register LD (R1) AC ← M[R1]
Auto-naik LD (R1)+ AC ← M[R1], R1 ← R1 + 1
Tabel 4.6.2 Delapan Mode Pengalamatan untuk Instruksi Muat

Tabel 4.6.2 menunjukkan konvensi bahasa assembly yang direkomendasikan dan


transfer yang sebenarnya dilakukan dalam setiap kasus. ADR singkatan dari

31
alamat, NBR adalah angka atau operan, X adalah register indeks, Rl adalah
register prosesor, dan AC adalah register akumulator. Karakter @
melambangkan alamat tidak langsung. Karakter $ sebelum alamat membuat
alamat relatif ke penghitung program PC. Karakter # mendahului operan
dalam instruksi mode-langsung. Instruksi mode terindeks dikenali oleh register
yang ditempatkan dalam tanda kurung setelah alamat simbolik. Mode register
dilambangkan dengan memberikan nama register prosesor. Dalam mode tidak
langsung register, nama register yang menyimpan alamat memori dilampirkan
dalam tanda kurung. Mode auto-naik dibedakan dari mode tidak langsung
register dengan menempatkan nilai tambah setelah register dikurung. Mode
auto-turun akan menggunakan minus sebagai gantinya. Untuk dapat menulis
program bahasa assembly untuk komputer, perlu mengetahui jenis instruksi
yang tersedia dan juga harus terbiasa dengan mode pengalamatan yang
digunakan di komputer tertentu.

4.6.2 Instruksi M anipulasi D ata


Instruksi manipulasi data melakukan operasi pada data dan memberikan
kemampuan komputasi untuk komputer. Instruksi manipulasi data dalam
komputer tipikal biasanya dibagi menjadi tiga tipe dasar:

1. Instruksi aritmatika
2. Instruksi manipulasi logis dan bit
3. Instruksi geser

Harus diperhatikan bahwa setiap instruksi ketika dieksekusi di komputer harus


melalui fase fetch untuk membaca nilai kode binernya dari memori. Operan juga
harus dibawa ke register prosesor sesuai dengan aturan mode pengalamatan
instruksi. Langkah terakhir adalah menjalankan instruksi dalam prosesor.
Langkah terakhir ini dilaksanakan melalui operasi mikro atau melalui ALU dan
penggeser seperti yang ditunjukkan pada Gambar 4.2.1. Beberapa instruksi
aritmatika memerlukan sirkuit khusus untuk implementasinya.

32
4.6.2.1 Instruksi A ritm atika

Empat operasi aritmatika dasar adalah penjumlahan, pengurangan, perkalian,


dan pembagian. Sebagian besar komputer memberikan instruksi untuk keempat
operasi.

Daftar instruksi aritmatika tipikal diberikan pada Tabel 4.6.3. Instruksi naik
menambahkan 1 ke nilai yang disimpan dalam register atau word memori. Salah
satu karakteristik umum dari operasi naik ketika dieksekusi dalam register
prosesor adalah bahwa angka biner dari semua 1 ketika dinaikkan menghasilkan
hasil semua 0. Instruksi turun mengurangi 1 dari nilai yang disimpan dalam
register atau word memori. Angka dengan semua 0, ketika diturunkan,
menghasilkan angka dengan semua 1.

Nama Mnemonik
Naik INC
Turun DEC
Tambah ADD
Kurang SUB
Kali MUL
Bagi DIV
Tambah dengan bawaan ADDC
Kurang dengan pinjaman SUBB
Negasi (komplemen 2an) NEG
Tabel 4.6.3 Instruksi Aritmatika Tipikal

Instruksi tambah, kurang, kali, dan bagi mungkin tersedia untuk berbagai jenis
data. Tipe data yang diasumsikan berada dalam register prosesor selama
pelaksanaan operasi aritmatika ini termasuk dalam definisi kode operasi.
Instruksi aritmatika dapat menentukan data titik-tetap atau titik-mengambang,
data biner atau desimal, data presisi-tunggal atau presisi-ganda. Tidak jarang
menemukan komputer dengan tiga atau lebih instruksi tambah: satu untuk
bilangan bulat biner, satu untuk operan titik-mengambang, dan satu untuk
operan desimal. Mnemonik untuk tiga instruksi tambahan yang menentukan
tipe data berbeda ditunjukkan di bawah ini.

ADDI Tambah dua angka bilangan bulat biner

33
ADDF Tambah dua angka titik-mengambang
ADDD Tambah dua angka desimal dalam BCD

4.6.2.2 Instruksi M anipulasi Log is dan B it

Instruksi logis melakukan operasi biner pada string bit yang disimpan dalam
register. Mereka berguna untuk memanipulasi bit secara individu atau
sekelompok bit yang mewakili informasi kode-biner. Instruksi logis
mempertimbangkan setiap bit operan secara terpisah dan memperlakukannya
sebagai variabel Boolean. Dengan aplikasi yang tepat dari instruksi logis, ada
lah mungkin untuk mengubah nilai bit, untuk menghapus sekelompok bit, atau
untuk memasukkan nilai bit baru ke dalam operan yang disimpan dalam register
atau word memori.

Beberapa instruksi manipulasi logis dan bit tipikal tercantum pada Tabel 4.6.4.
Instruksi hapus menyebabkan operan yang ditentukan digantikan oleh D's.
Instruksi komplemen menghasilkan komplemen 1an dengan membalikkan
semua bit operan. Instruksi AND, OR, dan XOR menghasilkan operasi logis
yang sesuai pada bit individual dari operan. Meskipun mereka melakukan
operasi Boolean, ketika digunakan dalam instruksi komputer, instruksi logis
harus dianggap sebagai melakukan operasi manipulasi bit. Ada tiga operasi
manipulasi bit yang mungkin: bit yang dipilih dapat dihapus ke 0, atau dapat
diatur ke 1, atau dapat dilengkapi. Tiga instruksi logis biasanya diterapkan
untuk melakukan hal itu.

Tabel 4.6.4 Instruksi Manipulasi Logis dan Bit Tipikal

Nama Mnemonik
Hapus CLR
Komplemen COM
AND AND
OR OR
Exclusive-OR XOR
Hapus bawaan CLRC
Setel bawaan SETC
Komplemen bawaan COMC

34
Aktifkan interupsi EI
Nonaktifkan interupsi DI

Beberapa instruksi manipulasi bit lainnya termasuk dalam Tabel 4.6.4. Masing-
masing bit seperti bawaan dapat dibersihkan, disetel, atau dikomplemen dengan
instruksi yang sesuai. Contoh lain adalah flip-flop yang mengontrol fasilitas
interupsi dan diaktifkan atau dinonaktifkan dengan cara instruksi manipulasi
bit.

4.6.2.3 Instruksi G eser

Instruksi untuk menggeser isi operan cukup berguna dan sering diberikan dalam
beberapa variasi. Geser adalah operasi di mana bit word dipindahkan ke kiri
atau kanan. Bit yang digeser di akhir word menentukan tipe geser yang
digunakan. Instruksi geser dapat menentukan pergeseran logis, pergeseran
aritmatika, atau operasi tipe-putar. Dalam kasus mana pun, pergeseran
mungkin ke kanan atau ke kiri.

Tabel 4.6.5 Instruksi Geser Tipikal

Nama Mnemonik
Geser kanan logis SHR
Geser kiri logis SHL
Geser kanan aritmatika SHRA
Geser kiri aritmatika SHLA
Putar kanan ROR
Putar kiri ROL
Putar kanan melalui bawaan RORC
Putar kiri melalui bawaan ROLC

Tabel 4.6.5 mencantumkan empat jenis instruksi geser. Pergeseran logis


memasukkan 0 ke posisi bit akhir. Posisi ujung adalah bit paling kiri untuk
bergeser ke kanan dan posisi bit paling kanan untuk menggeser ke kiri.
Pergeseran aritmatika biasanya sesuai dengan aturan untuk bilangan
komplemen 2an yang signed. Instruksi geser-kanan aritmatika harus
mempertahankan bit sign di posisi paling kiri. Bit sign digeser ke kanan
bersama-sama dengan sisa nomor, tetapi bit sign itu sendiri tidak berubah. Ini

35
adalah operasi geser-kanan dengan bit akhir tetap sama. Instruksi geser-kiri
aritmatika memasukkan 0 ke posisi akhir dan identik dengan instruksi geser-
kiri logis. Untuk alasan ini banyak komputer tidak memberikan instruksi geser-
kiri aritmatika yang berbeda ketika instruksi geser-kiri logis sudah tersedia.

Instruksi putar menghasilkan pergeseran melingkar. Bit yang digeser keluar di


suatu ujung word tidak hilang seperti dalam pergeseran logis tetapi diputar
kembali ke ujung yang lain. Instruksi putar melalui bawaan memperlakukan bit
bawaan sebagai perpanjangan register yang word-nya sedang diputar. Jadi,
instruksi putar-kiri melalui bawaan memindahkan bit bawaan ke posisi bit
paling kanan register, mentransfer posisi bit paling kiri ke bawaan, dan pada
saat yang sama, menggeser seluruh register ke kiri.

Beberapa komputer memiliki format multi-field untuk instruksi geser. Satu field
berisi kode operasi dan yang lainnya menentukan jenis pergeseran dan berapa
kali operan akan digeser. Format kode instruksi yang memungkinkan dari
instruksi geser dapat mencakup lima field sebagai berikut:

OP REG TYPE RL COUNT

Di sini OP adalah field kode operasi; REG adalah alamat register yang
menentukan lokasi operan; TYPE adalah field 2-bit yang menentukan empat
jenis pergeseran yang berbeda; RL adalah field 1-bit yang menentukan
pergeseran ke kanan atau kiri; dan COUNT adalah bidang k-bit yang
menetapkan hingga 2k – 1 pergeseran. Dengan format seperti itu, dimungkinkan
untuk menentukan jenis pergeseran, arah, dan jumlah pergeseran, semuanya
dalam satu instruksi.

4.7 K ON TR OL P R OG R A M
Instruksi selalu disimpan di lokasi memori yang berurutan. Saat diproses dalam
CPU, instruksi diambil dari lokasi memori berurutan dan dieksekusi. Setiap kali
instruksi diambil dari memori, penghitung program dinaikkan sehingga berisi

36
alamat instruksi berikutnya secara berurutan. Setelah pelaksanaan transfer data
atau instruksi manipulasi data, kontrol kembali ke siklus pengambilan dengan
penghitung program yang berisi alamat instruksi selanjutnya secara berurutan.
Di sisi lain, suatu tipe instruksi kontrol program, ketika dieksekusi, dapat
mengubah nilai alamat di penghitung program dan menyebabkan aliran kontrol
diubah. Dengan kata lain, instruksi kontrol program menentukan kondisi untuk
mengubah isi penghitung program, sementara instruksi transfer dan manipulasi
data menentukan kondisi untuk operasi pemrosesan data. Perubahan nilai
penghitung program sebagai hasil dari pelaksanaan instruksi kontrol program
menyebabkan jeda dalam urutan pelaksanaan instruksi. Ini adalah fitur penting
dalam komputer digital, karena menyediakan kontrol atas aliran eksekusi
program dan kemampuan untuk bercabang ke segmen program yang berbeda.

Nama Mnemonik
Cabang BR
Lompat JMP
Lewat SKP
Panggil CALL
Kembali RET
Banding (dengan pengurangan) CMP
Uji (dengan meng-AND-kan) TST
Tabel 4.7.1 Instruksi Kontrol Program Tipikal

Beberapa instruksi kontrol program tipikal tercantum pada Tabel 4.7.1.


Instruksi cabang dan lompat digunakan secara bergantian untuk mengartikan
hal yang sama, tetapi kadang-kadang digunakan untuk menunjukkan mode
pengalamatan yang berbeda. Cabang biasanya merupakan instruksi satu alamat.
Itu ditulis dalam bahasa assembly sebagai BR ADR, di mana ADR adalah nama
simbolis untuk alamat. Saat dijalankan, instruksi cabang menyebabkan transfer
nilai ADR ke penghitung program. Karena penghitung program berisi alamat
instruksi yang akan dieksekusi, instruksi selanjutnya akan datang dari lokasi
ADR.

37
Instruksi cabang dan lompat mungkin bersyarat atau tanpa syarat. Instruksi
cabang tanpa syarat menyebabkan cabang ke alamat yang ditentukan tanpa
persyaratan apa pun. Instruksi cabang bersyarat menentukan kondisi seperti
bercabang jika positif atau bercabang jika nol. Jika kondisi terpenuhi,
penghitung program dimuat dengan alamat cabang dan instruksi berikutnya
diambil dari alamat ini. Jika kondisi tidak terpenuhi, penghitung program tidak
berubah dan instruksi berikutnya diambil dari lokasi berikutnya secara
berurutan.

Instruksi lewat tidak memerlukan field alamat dan karenanya disebut instruksi
alamat-nol. Instruksi lewat bersyarat akan melewati instruksi berikutnya jika
kondisinya terpenuhi. Ini dilakukan dengan menaikkan penghitung program
selama fase execute selain dinaikkan saat fase fetch. Jika kondisi tidak terpenuhi,
kontrol melanjutkan dengan instruksi berikutnya dalam urutan di mana
pemrogram memasukkan instruksi cabang tanpa syarat. Dengan demikian
sepasang instruksi lewat-cabang menyebabkan cabang jika kondisinya tidak
terpenuhi, sedangkan instruksi cabang bersyarat tunggal menyebabkan cabang
jika kondisinya terpenuhi.

Instruksi panggil dan kembali digunakan bersama dengan subrutin. Instruksi


banding dan uji tidak mengubah urutan program secara langsung. Mereka
terdaftar dalam Tabel 4.7.1 karena aplikasi mereka dalam menetapkan kondisi
untuk instruksi cabang bersyarat berikutnya. Instruksi banding melakukan
pengurangan antara dua operan, tetapi hasil operasi tidak dipertahankan.
Namun, kondisi bit status tertentu ditetapkan sebagai hasil dari operasi.
Demikian pula, instruksi tes melakukan AND dari dua operan dan memperbarui
bit status tertentu tanpa mempertahankan hasil atau mengubah operan. Bit
status yang penting adalah bit bawaan, bit sign, indikasi nol, dan kondisi
overflow.

38
4.7.1 K ondisi B it Status
Kadang-kadang baik untuk melampirkan rangkaian ALU di CPU dengan
register status di mana kondisi bit status dapat disimpan untuk analisis lebih
lanjut. Bit status juga disebut bit kode-kondisi atau bit flag. Gambar 4.7.1
menunjukkan diagram blok ALU 8-bit dengan register status 4-bit. Keempat
bit status dilambangkan dengan C, S, Z, dan V. Bit disetel atau dihapus sebagai
hasil dari operasi yang dilakukan dalam ALU.

1. Bit C (carry) disetel ke 1 jika ujung bawaan C8 adalah 1. Ini dihapus ke


0 jika bawaannya adalah 0.
2. Bit S (sign) disetel ke 1 jika bit orde-tertinggi F7 adalah 1. Ini disetel ke
0 jika bit adalah 0.
3. Bit Z (zero) disetel ke 1 jika output dari ALU berisi semua 0. Ini dihapus
ke 0 jika sebaliknya. Dengan kata lain, Z = 1 jika outputnya nol dan Z
= 0 jika outputnya tidak nol.
4. Bit V (overflow) disetel ke 1 jika exclusive-OR dari dua bawaan terakhir
sama dengan 1, dan dihapus ke 0 jika sebaliknya. Ini adalah kondisi
untuk overflow ketika angka negatif berada dalam komplemen 2an.
Untuk ALU 8-bit, V = 1 jika output lebih besar dari +127 atau kurang
dari –128.

39
Gambar 4.7.1 Bit Register Status

4.7.2 Instruksi C abang B ersyarat


Tabel 4.7.2 memberikan daftar instruksi cabang yang paling umum. Jika kondisi
yang dinyatakan benar, kontrol program ditransfer ke alamat yang ditentukan
oleh instruksi. Jika tidak, kontrol berlanjut dengan instruksi yang mengikuti.
Instruksi bersyarat dapat dikaitkan juga dengan jenis instruksi kontrol program
lompat, lewat, panggil, atau kembali.

Tabel 4.7.2 Instruksi Cabang Bersyarat

Mnemonik Kondisi cabang Kondisi yang diuji


BZ Cabang jika nol Z=1
BNZ Cabang jika tidak nol Z=0
BC Cabang jika ada bawaan C=1
BNC Cabang jika tidak ada bawaan C=0
BP Cabang jika positif S=0
BM Cabang jika negatif S=1
BV Cabang jika overflow V=1
BNV Cabang jika tidak overflow V=0

40
Kondisi perbandingan unsigned (A – B)
BHI Cabang jika lebih tinggi A >B
BHE Cabang jika lebih tinggi atau sama A ≥B
BLO Cabang jika lebih rendah A <B
BLOE Cabang jika lebih rendah atau sama A ≤B
BE Cabang jika sama A =B
BNE Cabang jika tidak sama A ≠B
Kondisi perbandingan signed (A – B)
BGT Cabang jika lebih besar A >B
BGE Cabang jika lebih besar atau sama A ≥B
BLT Cabang jika lebih kecil A <B
BLE Cabang jika lebih kecil atau sama A ≤B
BE Cabang jika sama A =B
BNE Cabang jika tidak sama A ≠B

Pertimbangkan ALU 8-bit seperti yang ditunjukkan pada Gambar 4.7.1. Nomor
unsigned terbesar yang dapat ditampung dalam 8 bit adalah 255. Kisaran angka
signed adalah antara +127 dan –128. Pengurangan dua angka adalah sama
walaupun signed atau unsigned dalam representasi komplemen 2an. Misalkan A
= 11110000 dan B = 00010100. Untuk melakukan A – B, ALU mengambil
komplemen 2an dari B dan menambahkannya ke A.

Instruksi banding memperbarui bit status seperti yang ditunjukkan. C = 1


karena ada bawaan yang keluar dari tahap terakhir. S = 1 karena bit paling
kiri adalah 1. V = 0 karena dua bawaan terakhir sama dengan 1, dan Z = 0
karena hasilnya tidak sama dengan 0.

4.7.3 P anggil dan K em bali Subrutin


Subrutin adalah urutan instruksi berdikari yang melakukan tugas komputasi
yang diberikan. Selama pelaksanaan suatu program, subrutin dapat dipanggil
untuk menjalankan fungsinya berkali-kali di berbagai titik di program utama.
Setiap kali sebuah subrutin dipanggil, cabang dieksekusi ke awal subrutin untuk

41
mulai mengeksekusi set instruksi. Setelah subrutin dijalankan, cabang dibuat
kembali ke program utama.

Instruksi yang mentransfer kontrol program ke subrutin dikenal dengan nama


yang berbeda. Nama yang paling umum digunakan adalah panggil subrutin,
lompat ke subrutin, cabangkan ke subrutin, atau cabangkan dan simpan alamat.
Instruksi panggil subrutin terdiri dari kode operasi bersama dengan alamat yang
menentukan awal subrutin. Instruksi dijalankan dengan melakukan dua operasi:
(1) alamat instruksi berikutnya yang tersedia di penghitung program (alamat
kembali) disimpan di lokasi sementara sehingga subrutin tahu ke mana harus
kembali, dan (2) kontrol ditransfer ke awal dari subrutin. Instruksi terakhir dari
setiap subrutin, yang biasa disebut kembali dari subrutin, mentransfer alamat
kembali dari lokasi sementara ke penghitung program. Ini menghasilkan transfer
kontrol program ke instruksi yang alamatnya semula disimpan di lokasi
sementara.

Komputer yang berbeda menggunakan lokasi sementara yang berbeda untuk


menyimpan alamat kembali. Beberapa menyimpan alamat kembali di lokasi
memori pertama subrutin, beberapa menyimpannya di lokasi tetap di memori,
beberapa menyimpannya di register prosesor, dan beberapa menyimpannya di
stack memori. Cara paling efisien adalah menyimpan alamat kembali dalam
stack memori. Keuntungan menggunakan stack untuk alamat kembali adalah
bahwa ketika rangkaian subrutin dipanggil, alamat kembali berurutan dapat di-
push ke dalam stack. Instruksi kembali dari subrutin menyebabkan stack di-pop
dan isi dari atas stack dipindahkan ke penghitung program. Dengan cara ini,
akan kembali selalu ke program yang terakhir memanggil sebuah subrutin.
Panggilan subrutin diimplementasikan dengan operasi mikro berikut:

SP ← SP – 1 Turunkan stack pointer


M[SP] ← PC Push isi dari PC ke dalam stack
PC ← alamat efektif Transfer kontrol ke subrutin

42
Jika subrutin lain dipanggil oleh subrutin saat ini, alamat kembali baru di-push
ke dalam stack, dan seterusnya. Instruksi kembali dari subrutin terakhir
diimplementasikan oleh operasi mikro berikut:

PC ← M[SP] Stack di-pop dan transfer isinya ke PC


SP ← SP + 1 Naikkan stack pointer

4.7.4 Interupsi P rogram


Konsep interupsi program digunakan untuk menangani berbagai masalah yang
muncul dari urutan program normal. Interupsi program mengacu pada transfer
kontrol program dari program yang sedang berjalan ke program layanan lain
sebagai hasil dari permintaan eksternal atau internal yang dihasilkan. Kontrol
kembali ke program semula setelah program layanan dijalankan.

Setelah sebuah program diinterupsi dan rutin servis telah dijalankan, CPU
harus kembali ke kondisi yang sama persis ketika terjadi interupsi. Hanya jika
ini terjadi maka program yang terinterupsi dapat melanjutkan persis seolah-
olah tidak ada yang terjadi. Keadaan CPU pada akhir siklus eksekusi (ketika
interupsi dikenali) ditentukan dari:

1. Isi penghitung program


2. Isi semua register prosesor
3. Isi kondisi status tertentu

Kumpulan semua kondisi bit status dalam CPU kadang-kadang disebut word
status program atau PSW (program status word). PSW disimpan dalam register
perangkat keras terpisah dan berisi informasi status yang mencirikan kondisi
CPU. Biasanya, ini termasuk bit status dari operasi ALU terakhir dan itu
menentukan interupsi yang diizinkan terjadi dan apakah CPU beroperasi dalam
mode pengawas atau pengguna. Banyak komputer memiliki sistem operasi tetap
yang mengontrol dan mengawasi semua program lain di komputer. Ketika CPU
menjalankan program yang merupakan bagian dari sistem operasi, dapat
dikatakan bahwa itu berada dalam mode supervisor atau sistem. Instruksi

43
tertentu diistimewakan dan hanya dapat dijalankan dalam mode ini. CPU
biasanya dalam mode pengguna saat menjalankan program pengguna. Mode di
mana CPU beroperasi pada waktu tertentu ditentukan dari bit status khusus
di PSW.

Beberapa komputer hanya menyimpan penghitung program saat merespons


interupsi. Program layanan kemudian harus memasukkan instruksi untuk
menyimpan status dan isi register sebelum sumber daya ini digunakan. Hanya
beberapa komputer yang menyimpan penghitung program dan semua status
dan isi register sebagai tanggapan terhadap interupsi. Sebagian besar komputer
hanya menyimpan penghitung program dan PSW. Dalam beberapa kasus, ada
dua set register prosesor di dalam komputer, satu untuk setiap mode CPU.
Dengan cara ini, ketika program beralih dari pengguna ke mode pengawas (atau
sebaliknya) sebagai respons terhadap interupsi, tidak perlu menyimpan konten
register prosesor karena setiap mode menggunakan set register sendiri.

Prosedur perangkat keras untuk memproses interupsi sangat mirip dengan


pelaksanaan instruksi panggil subrutin. Keadaan CPU di-push ke stack memori
dan alamat awal rutin layanan ditransfer ke penghitung program. Alamat awal
rutin layanan ditentukan oleh perangkat keras daripada field alamat instruksi.
Beberapa komputer menetapkan satu lokasi memori di mana interupsi akan
ditransfer. Rutin layanan kemudian harus menentukan apa yang menyebabkan
interupsi dan melanjutkan untuk memperbaikinya. Beberapa komputer
menetapkan lokasi memori untuk setiap kemungkinan interupsi. Terkadang,
interupsi perangkat keras menyediakan alamatnya sendiri yang mengarahkan
CPU ke rutin layanan yang diinginkan. Bagaimanapun, CPU harus memiliki
beberapa bentuk prosedur perangkat keras untuk memilih alamat cabang untuk
melayani interupsi.

CPU tidak merespons interupsi sampai akhir eksekusi instruksi. Sebelum pergi
ke tahap fetch berikutnya, kontrol memeriksa apakah ada sinyal interupsi. Jika

44
ada interupsi yang menunggu, kontrol beralih ke siklus interupsi perangkat
keras. Selama siklus ini, isi PC dan PSW di-push ke stack. Alamat cabang untuk
interupsi tertentu kemudian ditransfer ke PC dan PSW baru dimasukkan ke
dalam register status. Program layanan sekarang dapat dijalankan mulai dari
alamat cabang dan memiliki mode CPU seperti yang ditentukan dalam PSW
baru.

Instruksi terakhir dalam program layanan adalah intruksi kembali dari interupsi.
Ketika instruksi ini dijalankan, stack di-pop untuk mengambil PSW yang lama
dan alamat kembali. PSW ditransfer ke register status dan alamat kembali ke
penghitung program. Dengan demikian keadaan CPU dipulihkan dan program
semula dapat melanjutkan eksekusi.

4.7.5 Tipe Interupsi


Ada tiga jenis interupsi utama yang menyebabkan penghentian dalam
pelaksanaan normal suatu program. Mereka dapat diklasifikasikan sebagai:

1. Interupsi eksternal
2. Interupsi internal
3. Interupsi perangkat lunak

Interupsi eksternal berasal dari perangkat input/output (I/O), dari perangkat


pengaturan waktu, dari sirkuit yang memantau catu daya, atau dari sumber
eksternal lainnya. Contoh yang menyebabkan gangguan eksternal adalah
perangkat I/O yang meminta transfer data, perangkat I/O selesai mentransfer
data, waktu yang telah berlalu dari suatu event, atau kegagalan daya. Interupsi
timeout dapat dihasilkan dari program yang berada dalam loop tanpa akhir dan
dengan demikian melebihi alokasi waktunya. Interupsi kegagalan daya mungkin
memiliki program rutin yang mentransfer status lengkap CPU ke memori tak
rusak dalam beberapa milidetik sebelum daya mati.

Interupsi internal muncul dari penggunaan instruksi atau data yang ilegal atau
salah. Interupsi internal juga disebut perangkap. Contoh interupsi yang

45
disebabkan oleh kondisi kesalahan internal adalah register overflow, upaya
untuk membagi dengan nol, kode operasi tidak valid, stack overflow, dan
pelanggaran perlindungan. Kondisi kesalahan ini biasanya terjadi sebagai akibat
dari penghentian dini dari pelaksanaan instruksi. Program layanan yang
memproses interupsi internal menentukan langkah yang benar yang harus
diambil.

Perbedaan antara interupsi internal dan eksternal adalah bahwa interupsi


internal dimulai oleh beberapa kondisi pengecualian yang disebabkan oleh
program itu sendiri daripada oleh peristiwa eksternal. Interupsi internal sinkron
dengan program sementara interupsi eksternal asinkron. Jika program
dijalankan kembali, interupsi internal akan terjadi di tempat yang sama setiap
kali. Interupsi eksternal tergantung pada kondisi eksternal yang independen
terhadap program yang sedang dijalankan saat itu.

Interupsi eksternal dan internal dimulai dari sinyal yang terjadi pada perangkat
keras CPU. Interupsi perangkat lunak dimulai dengan mengeksekusi instruksi.
Interupsi perangkat lunak adalah instruksi panggilan khusus yang berperilaku
seperti interupsi daripada panggilan subrutin. Ini dapat digunakan oleh
pemrogram untuk memulai prosedur interupsi pada titik yang diinginkan dalam
program. Penggunaan interupsi perangkat lunak yang paling umum dikaitkan
dengan instruksi pangawas panggil. Instruksi ini menyediakan sarana untuk
beralih dari mode pengguna CPU ke mode pengawas. Operasi tertentu di
komputer bisa ditetapkan hanya untuk mode pengawas, seperti misalnya,
prosedur transfer input atau output yang kompleks. Program yang ditulis oleh
pengguna harus dijalankan dalam mode pengguna. Ketika transfer input atau
output diperlukan, mode supervisor diminta melalui instruksi pengawas panggil.
Instruksi ini menyebabkan gangguan perangkat lunak yang menyimpan status
CPU lama dan membawa PSW baru yang termasuk dalam mode pengawas.
Program panggilan harus meneruskan informasi ke sistem operasi untuk
menentukan tugas tertentu yang diminta.

46
4.8 R ED U C ED I N STR U TION S ET C OM P U TER (R ISC )
Pada awal 1980-an, sejumlah perancang komputer merekomendasikan agar
komputer menggunakan lebih sedikit instruksi dengan konstruksi sederhana
sehingga mereka dapat dieksekusi lebih cepat dalam CPU tanpa harus
menggunakan memori sesering mungkin. Jenis komputer ini diklasifikasikan
sebagai komputer dengan instruksi yang direduksi atau RISC (reduced
instruction set computer). Komputer dengan sejumlah besar instruksi
diklasifikasikan sebagai komputer set instruksi yang kompleks, disingkat CISC
(complex instruction set computer).

4.8.1 K arakteristik C ISC


Desain set instruksi untuk komputer harus mempertimbangkan tidak hanya
konstruksi bahasa mesin, tetapi juga persyaratan yang dikenakan pada
penggunaan bahasa pemrograman tingkat tinggi. Terjemahan dari program
bahasa tingkat tinggi ke mesin dilakukan dengan menggunakan program
kompiler. Salah satu alasan tren menyediakan serangkaian instruksi yang
kompleks adalah keinginan untuk menyederhanakan kompilasi dan
meningkatkan kinerja komputer secara keseluruhan. Tugas kompiler adalah
untuk menghasilkan urutan instruksi mesin untuk setiap pernyataan bahasa
tingkat tinggi. Tugas ini disederhanakan jika ada instruksi mesin yang
mengimplementasikan pernyataan secara langsung. Tujuan penting dari
arsitektur CISC adalah untuk mencoba memberikan instruksi tunggal untuk
setiap pernyataan yang ditulis dalam bahasa tingkat tinggi.

Karakteristik lain dari arsitektur CISC adalah penggabungan dengan format


instruksi yang panjangnya berubah-ubah. Instruksi yang memerlukan register
operan mungkin panjangnya hanya dua byte, tetapi instruksi yang
membutuhkan dua alamat memori mungkin perlu lima byte untuk memasukkan
seluruh kode instruksi. Jika komputer memiliki word 32-bit (empat byte),
instruksi pertama menempati setengah word, sedangkan instruksi kedua

47
membutuhkan satu word dan satu byte di kata berikutnya. Pengemasan format
instruksi variabel dalam word memori dengan panjang tetap membutuhkan
sirkuit peng-dekode khusus yang menghitung byte dalam kata-kata dan
menyusun instruksi sesuai dengan panjang byte mereka.

Instruksi dalam prosesor CISC tipikal memberikan manipulasi langsung dari


operan yang berada di memori. Misalnya, instruksi ADD dapat menentukan
satu operan dalam memori melalui pengalamatan indeks dan operan kedua
dalam memori melalui pengalamatan langsung. Lokasi memori lain dapat
dimasukkan dalam instruksi untuk menyimpan jumlahnya. Ini membutuhkan
tiga referensi memori selama pelaksanaan instruksi. Meskipun prosesor CISC
memiliki instruksi yang hanya menggunakan register prosesor, ketersediaan
mode operasi lain cenderung menyederhanakan kompilasi bahasa tingkat tinggi.
Namun, karena lebih banyak instruksi dan mode pengalamatan dimasukkan ke
dalam komputer, semakin banyak logika perangkat keras yang diperlukan untuk
mengimplementasikan dan mendukungnya, dan ini dapat menyebabkan
perhitungan melambat. Singkatnya, karakteristik utama dari arsitektur CISC
adalah:

1. Sejumlah besar instruksi—biasanya dari 100 hingga 250 instruksi


2. Beberapa instruksi yang melakukan tugas khusus dan jarang digunakan
3. Berbagai macam mode pengalamatan—biasanya dari 5 hingga 20 mode
berbeda
4. Format instruksi dengan panjang yang berubah-ubah
5. Instruksi yang memanipulasi operan dalam memori

4.8.2 K arakteristik R ISC


Konsep arsitektur RISC melibatkan upaya untuk mengurangi waktu eksekusi
dengan menyederhanakan set instruksi komputer. Karakteristik utama dari
prosesor RISC adalah:

1. Instruksi yang relatif sedikit

48
2. Mode pengalamatan relatif sedikit
3. Akses memori terbatas untuk memuat dan menyimpan instruksi
4. Semua operasi dilakukan dalam register CPU
5. Format instruksi dengan panjang tetap, yang mudah diterjemahkan
6. Eksekusi instruksi siklus-tunggal
7. Kontrol bawaan daripada diprogram dengan mikro

Serangkaian instruksi kecil dari prosesor RISC umumnya terdiri dari operasi
register-ke-register, dengan hanya memuat dan menyimpan operasi sederhana
untuk akses memori. Dengan demikian setiap operan dimasukkan ke dalam
register prosesor dengan instruksi muat. Semua perhitungan dilakukan di antara
data yang disimpan dalam register prosesor. Hasil ditransfer ke memori dengan
menggunakan instruksi simpan. Fitur arsitektur ini menyederhanakan set
instruksi dan mendorong optimalisasi manipulasi register. Penggunaan hanya
beberapa mode pengalamatan hasil dari fakta bahwa hampir semua instruksi
memiliki pengalamatan register sederhana. Mode pengalamatan lain dapat
dimasukkan, seperti operan langsung dan mode relatif.

Dengan menggunakan format instruksi yang relatif sederhana, panjang instruksi


dapat tetap dan disejajarkan dengan batas word. Aspek penting dari format
instruksi RISC adalah mudahnya meng-dekode. Dengan demikian kode operasi
dan field register kode instruksi dapat diakses secara bersamaan oleh kontrol.
Dengan menyederhanakan instruksi dan formatnya, ini juga menyederhanakan
logika kontrol. Untuk operasi yang lebih cepat, kontrol bawaan lebih baik
daripada kontrol yang diprogram secara mikro.

Karakteristik prosesor RISC adalah kemampuan mereka untuk mengeksekusi


satu instruksi per siklus clock. Ini dilakukan dengan tumpang tindih fase fetch,
decode, dan execute dari dua atau tiga instruksi dengan menggunakan prosedur
yang disebut sebagai pipelining. Instruksi muat atau simpan mungkin
memerlukan dua siklus clock karena akses ke memori membutuhkan waktu lebih

49
lama daripada operasi register. Pipelining yang efisien, serta beberapa
karakteristik lainnya, terkadang dikaitkan dengan RISC. meskipun mereka
mungkin ada di arsitektur non-RISC juga. Karakteristik lain yang dikaitkan
dengan arsitektur RISC adalah:

1. Jumlah register yang relatif besar di unit prosesor


2. Penggunaan lingkup register bersamaan untuk mempercepat panggilan
prosedur dan kembali
3. Pipeline instruksi yang efisien
4. Dukungan kompiler untuk terjemahan efisien program bahasa tingkat
tinggi ke dalam program bahasa mesin

Sejumlah besar register berguna untuk menyimpan hasil sementara dan untuk
mengoptimalkan referensi operan. Keuntungan dari penyimpanan register
daripada penyimpanan memori adalah bahwa register dapat mentransfer
informasi ke register lain jauh lebih cepat daripada transfer informasi ke dan
dari memori. Dengan demikian operasi register-ke-memori dapat diminimalkan
dengan menjaga operan yang paling sering diakses dalam register. Studi yang
menunjukkan peningkatan kinerja untuk arsitektur RISC tidak membedakan
antara efek dari set instruksi yang dikurangi dan efek dari file register yang
besar. Karena alasan ini, sejumlah besar register di unit pemrosesan kadang-
kadang dikaitkan dengan prosesor RISC.

4.8.3 Lingkup R egister B ersam aan


Panggil dan kembali prosedur terjadi cukup sering dalam bahasa pemrograman
tingkat tinggi. Ketika diterjemahkan ke dalam bahasa mesin, panggilan
prosedur menghasilkan urutan instruksi yang menyimpan nilai register,
meneruskan parameter yang diperlukan untuk prosedur, dan kemudian
memanggil subrutin untuk mengeksekusi tubuh prosedur. Setelah prosedur
kembali, program mengembalikan nilai register lama, meneruskan hasil ke
program panggilan, dan kembali dari subrutin. Menyimpan dan mengembalikan

50
register dan meneruskan parameter dan hasil melibatkan operasi yang memakan
waktu. Beberapa komputer menyediakan beberapa bank register, dan setiap
prosedur dialokasikan bank register sendiri. Ini menghilangkan kebutuhan
untuk menyimpan dan mengembalikan nilai register. Beberapa komputer
menggunakan stack memori untuk menyimpan parameter yang diperlukan oleh
prosedur, tetapi ini membutuhkan akses memori setiap kali stack diakses.

Ciri khas beberapa prosesor RISC adalah penggunaan lingkup register


bersamaan untuk menyediakan parameter terusan dan menghindari perlunya
menyimpan dan mengembalikan nilai register. Setiap panggilan prosedur
menghasilkan alokasi lingkup baru yang terdiri dari satu set register dari file
register untuk digunakan oleh prosedur baru. Setiap panggilan prosedur
mengaktifkan lingkup register baru dengan menambah pointer, sedangkan
pernyataan kembali menurunkan pointer dan menyebabkan aktivasi lingkup
sebelumnya. Lingkup untuk prosedur yang berdampingan memiliki register
yang tumpang tindih yang dibagikan untuk meneruskan parameter dan hasil.

Secara umum, organisasi lingkup register akan memiliki hubungan berikut:

G = jumlah register global


L = jumlah register lokal di setiap lingkup
C = jumlah register yang sama untuk dua lingkup
W = jumlah lingkup

Jumlah register yang tersedia untuk setiap lingkup dihitung sebagai berikut:

ukuran lingkup = L + 2C + G

Jumlah total register yang diperlukan dalam prosesor adalah

file register = (L + C)W + G

Konsep lingkup register bersama diilustrasikan pada Gambar 4.8.1. Sistem ini
memiliki total 74 register. Register R0 hingga R9 adalah register global yang
menyimpan parameter yang dibagikan oleh semua prosedur. 64 register lainnya

51
dibagi menjadi empat lingkup untuk mengakomodasi prosedur A, B, C, dan D.
Setiap lingkup register terdiri dari 10 register lokal dan dua set 6 register yang
sama untuk register yang berdampingan. Register lokal digunakan untuk
variabel lokal. Register sama digunakan untuk pertukaran parameter dan hasil
sementara prosedur yang berdampingan. Register yang tumpang tindih
memungkinkan parameter untuk diteruskan tanpa pergerakan data yang
sebenarnya. Hanya satu lingkup register yang diaktifkan pada waktu tertentu
dengan pointer yang menunjukkan lingkup yang aktif. Setiap panggilan
prosedur mengaktifkan lingkup register baru dengan menambah pointer.
Register tinggi dari prosedur yang memanggil tumpang tindih dengan register
rendah dari prosedur yang dipanggil, dan oleh karena itu parameter secara
otomatis ditransfer dari prosedur pemanggil ke yang dipanggil.

52
R15
Sama untuk D dan A
R10

R73
Lokal untuk D
R64

R63
Sama untuk C dan D
R58

Pros D R57
Lokal untuk C
R48

R47
Sama untuk B dan C
R42

Pros C R41
Lokal untuk B
R32

R31
Sama untuk A dan B
R26

Pros B R25
Lokal untuk A
R16

R9 R15
Sama untuk semua
Sama untuk A dan D
prosedur
R0 R10

Register Pros A
Global

Gambar 4.8.1 Lingkup Register Bersama

Sebagai contoh, misalkan prosedur A memanggil prosedur B. Register R26


hingga R31 adalah sama untuk kedua prosedur, dan oleh karena itu prosedur
A menyimpan parameter untuk prosedur B dalam register ini. Prosedur B
menggunakan register lokal R32 hingga R41 untuk penyimpanan variabel lokal.

53
Jika prosedur B memanggil prosedur C, ia akan melewati parameter melalui
register R42 hingga R47. Ketika prosedur B siap untuk kembali pada akhir
perhitungannya, program menyimpan hasil perhitungan dalam register R26
melalui R31 dan mentransfer kembali ke lingkup register prosedur A.
Perhatikan bahwa register R10 hingga R15 adalah sama untuk prosedur A dan
D karena keempat lingkup memiliki organisasi melingkar dengan A
berdampingan dengan D.

Dalam contoh Gambar 4.8.1 kita memiliki G = 10, L = 10, C = 6, dan W = 4.


Ukuran lingkup adalah 10 + 12 + 10 = 32 register, dan file register terdiri dari
(10 + 6) * 4 + 10 = 74 register.

54
5 P EN U TU P

5.1 K ESIM P U LA N
Bagian dari komputer yang melakukan sebagian besar operasi pemrosesan data
disebut unit pemrosesan pusat dan disebut sebagai CPU. CPU terdiri dari tiga
bagian utama. Set register menyimpan data perantara yang digunakan selama
pelaksanaan instruksi. Unit logika aritmatika (ALU) melakukan operasi mikro
yang diperlukan untuk menjalankan instruksi. Unit kontrol mengawasi transfer
informasi di antara register dan menginstruksikan ALU mengenai operasi yang
harus dilakukan.

CPU melakukan berbagai fungsi yang ditentukan oleh jenis instruksi yang
tergabung dalam komputer. Arsitektur komputer kadang-kadang didefinisikan
sebagai struktur dan perilaku komputer seperti yang terlihat oleh pemrogram
yang menggunakan instruksi bahasa mesin. Ini termasuk format instruksi, mode
pengalamatan, set instruksi, dan organisasi umum register CPU.

Satu batasan di mana perancang komputer dan pemrogram komputer melihat


mesin yang sama adalah bagian dari CPU yang terkait dengan set instruksi.
Dari sudut pandang perancang, set instruksi komputer menyediakan spesifikasi
untuk desain CPU. Desain CPU adalah tugas yang sebagian besar melibatkan
pemilihan perangkat keras untuk mengimplementasikan instruksi mesin.
Pengguna yang memprogram komputer dalam mesin atau bahasa assembly
harus mengetahui set register, struktur memori, tipe data yang didukung oleh
instruksi, dan fungsi yang dilakukan oleh setiap instruksi.

5.2 S A R A N
Setelah selesainya makalah ini, mungkin masih banyak kekurangan yang
pembaca rasakan. Maka kami selaku penyusun makalah ini berharap kritik dan

55
saran yang sifatnya membangun dari pembaca, karena kami masih dalam tahap
belajar. Atas kritik dan saran yang akan dikemukakan kami mengucapkan
terima kasih dan semoga makalah ini berguna bagi penyusun dan pembacanya.

56

Anda mungkin juga menyukai