Web viewset instruksi: karakteristik dan fungsioleh :rini andini1129040148ptik 02ptik 02prodi ptik...
Transcript of Web viewset instruksi: karakteristik dan fungsioleh :rini andini1129040148ptik 02ptik 02prodi ptik...
DAFTAR ISI
Halaman
HALAMAN JUDUL 1
DAFTAR ISI 2
SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI 4
A. Machine Instruction Characteristics 4
1. Elemen Instruksi 4
2. Instruksi Representasi 5
3. Jenis Instruksi 7
4. Jumlah Alamat 8
5. Rancangan Set Instruksi 8
B. Types of Operand 9
1. Number 10
2. Karakter 11
3. Tipe Data 12
Tipe Dasar 12
Tipe bentukan 13
C. Pentium and PowerPC Data Types 15
1. Pentium Data Types 15
2. PowerPC Data Types 16
D. Types Of Operations 17
1. Data Transfer 17
2. Arithmetic 18
3. Logical 19
4. Conversion 22
5. Input / Output 23
6. Sistem Kontrol 23
E. Pentium and PowerPC Operation Types 28
1. Jenis-jenis OperasiPC 28
2. Instruksi-instruksi berorientasi percabangan 30
2SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI
3. Instruksi-instruksi Load/Store 30
F. Assembly Language 31
3SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI
BAB 10
SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI
A. Karakteristik Mesin Instruksi
Dari sudut pandang desainer, set instruksi mesin menyediakan kebutuhan
fungsional untuk CPU: Menerapkan CPU adalah tugas yang sebagian besar
melibatkan melaksanakan set instruksi mesin. Dari sisi pengguna, pengguna yang
memilih untuk program dalam bahasa mesin (sebenarnya, dalam bahasa
assembly) menjadi dasar struktur register dan memori, jenis data langsung
didukung oleh mesin, dan fungsi dari ALU.
1. Elemen Instruksi
Setiap instruksi harus memiliki unsur-unsur yang mengandung informasi
yang diperlukan oleh CPU untuk dieksekusi. Unsur-unsur ini adalah sebagai
berikut :
Operasi kode: Menentukan operasi yang akan dilakukan (misalnya ADD, I/
O). Operasi ini ditentukan oleh kode biner, yang dikenal sebagai kode
operasi, atau opcode.
Sumber operan referensi: Operasi mungkin melibatkan operand sumber satu
atau lebih yaitu operand yang input untuk operasi.
4SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI
Hasil operan referensi: Operasi mungkin menghasilkan hasil.
Referensi instruksi berikutnya: ini memberitahu CPU dimana untuk
mengambil instruksi berikutnya setelah pelaksanaan instruksi ini selesai.
Instruksi berikutnya yang akan diambil terletak di memori utama atau,
dalam kasus system memori virtual, baik di memori utama atau memori sekunder
(disk). Dalam kebanyakan kasus, instruksi berikutnya akan diambil segera
mengikuti instruksi saat ini. Dalam kasus tersebut, tidak ada referensi eksplisit
untuk instruksi berikutnya. Sumber dan hasil operand dapat berada di salah satu
dari tiga bidang :
Memori utama atau virtual: Seperti referensi instruksi berikutnya, alamat
memori utama atau virtual harus diberikan.
CPU register: Dengan pengecualian langka, CPU berisi satu atau lebih
register yang dapat direferensikan oleh instruksi mesin. Jika hanya satu
mendaftar ada, referensi untuk itu mungkin implisit. Jika lebih dari satu
dan instruksi harus berisi jumlah dari register yang diinginkan.
I / O device: Instruksi harus menentukan (dia modul I / O dan perangkat
untuk operasi. Jika memori-mapping I / O digunakan, ini hanyalah alamat
memori utama atau virtual.
2. Instruksi Representasi
Dalam komputer, setiap instruksi diwakili oleh urutan bit. Instruksi ini
dibagi menjadi bidang, sesuai dengan unsur-unsur pokok dari instruksi. Sebuah
contoh sederhana dari format instruksi ditunjukkan pada Gambar 10.2. Sebagai
contoh lain, format instruksi IAS ditunjukkan pada Gambar 2.2. Dengan set
instruksi yang paling, lebih dari satu format yang digunakan. Selama eksekusi
instruksi, instruksi dibaca ke register instruksi (IR) dalam CPU. CPU harus dapat
mengekstrak data dari berbagai bidang instruksi untuk melakukan operasi yang
diperlukan.
Sulit bagi programmer dan pembaca buku teks berurusan dengan
representasi biner dari instruksi mesin. Dengan demikian, telah menjadi praktek
umum untuk menggunakan representasi simbolis dari instruksi mesin. Contoh ini
5SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI
digunakan untuk set instruksi IAS, pada Tabel 2.1.
Opcodes diwakili oleh singkatan, yang disebut mnemonik, yang menunjukkan
operasi. Contoh umum termasuk
ADD add
SUB Subtract
MPY Multiply
DIV Divide
LOAD Load data from memory
STOR Store data to memory
Operand juga diwakili secara simbolis. Sebagai contoh, instruksi
ADD R Y
Mungkin berarti menambahkan nilai yang terkandung di Y data lokasi ke isi
register R. Dalam contoh ini, Y mengacu ke alamat sebuah lokasi di memori, dan
R mengacu pada sebuah register tertentu. Perhatikan bahwa operasi dilakukan
pada isi lokasi, bukan di alamat itu.
Dengan demikian, adalah mungkin untuk menulis sebuah program bahasa
mesin dalam bentuk simbolis. Setiap opcode simbolis memiliki representasi biner
tetap, dan programmer menentukan lokasi setiap operan simbolis. Sebagai contoh,
programmer bisa mulai dengan daftar definisi:
X = 513
Y = 514
Dan sebagainya. Sebuah program sederhana akan menerima masukan simbolis,
mengkonversi opkode dan referensi operan ke bentuk binary, dan membangun
instruksi mesin biner.
Mesin-bahasa programer jarang ke titik noneksistensi. Kebanyakan program
sekarang ditulis dalam bahasa tingkat tinggi atau, bila tidak, bahasa assembly,
yang dibahas pada akhir bab ini. Howefer, bahasa mesin simbolik tetap menjadi
alat yang berguna untuk mendeskripsikan instruksi mesin, dan kami akan
menggunakannya untuk tujuan itu.
6SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI
Simple Instruction Format
3. Jenis Instruksi
Sebuah instuksi yang dapat diekspresikan dalam bahasa BASIC atau
FORTRAN. X = X+Y Pernyataan ini menginstruksiakna komputer untuk
menambahkan nilai yang tersimpan di Y ke nilai yang tersimpan di X dan
menyimpan hasilnya di X. Variabel X dan Y berkorespondensi dengan lokasi 513
dan 514. Jika kita mengasumsikan set instruksi mesin yang sederhana, maka
operasi ini dapat dilakukan dengan tiga buah instruksi :
1. Muatkan sebuah register dengan isi lokasi memori 513
2. Tambahkan isi lokasi memori ke register
3. Simpan isi register di lokasi memori 513
Suatu komputer harus memiliki set instruksi yang memungkinkan pengguna
untuk memformulasikan pengolahan data atau dengan memperhatikan
kemampuan pemrograman bahasa tingkat tinggi. Agar dapat dieksekusi, setiap
program yang ditulis dalam bahasa program tingkat tinggi harus diterjemahkan ke
dalam bahasa mesin. Jadi, set instruksi mesin harus dapat mengekspresikan setiap
instruksi bahas atingkat tinggi.
Adapun Jenis-jenis instrusi sebagai berikut:
Pengolahan Data: Instrusi-instruksi aritmatika dan logika
Penyimpanan Data: Instriksi-instruksi memori
Perpindahan Data : Instruksi I/O
7SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI
Kontrol: Instruksi pemeriksaan dan percabangan
4. Jumlah Alamat
Salah satu cara tradisional dalam menjelaskan arsitektur prosesor adalah
dengan memakai jumlah alamat yang terdapat pada masing-masing instruksi.
Instruksi aritmatika dan logika memerlukan operand yang berjumlah banyak.
Secara virtual, seluruh operasi eritmatika dan logika merupakan uner/unary (satu
operand) atau biner (dua operand). Dengan demikian, memerlukan maksimum
dua alamat untuk acuan operand. Hasil sebuah operasi akan memerlukan alamat
ketiga.
Dengan demikian, instruksi perlu memiliki empat buah acuan alamat: dua
buah operand, sebuah hasil operasi, dan sebuah alamat instruksi berikutnya.
Sebagian besar CPU merupakan variasi satu, dua, atau tiga alamat dengan alamat
instruksi berikutnya merupakan implisit (diperoleh dari pencacah program).
Format tiga alamat tidak umum digunakan, karena instruksi-instruksi tersebut
memerlukan bentuk instruksi yang lebih relatif lebih panjang untuk menampung
acuan-acuan tiga alamat. Sedangkan bentuk dua alamat mengurangi kebuatuahan
ruang akan tetapi menimbulkan kesulitan. Instruksi yang lebih sederhana adalah
instruksi satu alamat. Agar alamat ini dapat berfungsi, alamat perlu diimplisitkan.
5. Rancangan Set Instruksi
Salah satu hal yang paling menarik tentang rancangan komputer adalah
rancangan set instruksi. Karena rancangan ini mempengaruhi banak aspek sistem
komputer, maka rancangan set instruksi sangat kompleks. Set instruksi
menentukan banyak fungsi yang akan dilakukan oleh CPU dan karena itu
memiliki efek yang sangat menentukan implementasi CPU. Set instruksi
merupakan alat bagi pemrogram untuk mengontrol CPU. Dengan demikian,
kebutuhan-kebutuhan pemrogram harus menjadi bahan pertimbangan dalam
merancang set instruksi.
Masalah rancangan fundamental yang paling signifikan meliputi:
8SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI
Repertoi Operasi: Berapa banyak dan opersai-operasi apa yang harus
disediakan, dan sekompleks apakah operasi itu seharusnya.
Jenis data: berbagai jenis data pada saat operasi dijalankan
Bentuk instruksi : Panjang instruksi (dalam bit), jumlah alamat, ukuran
bidang, dan sebagainya.
Register: Jumlah register CPU yang dapat diacu oleh instruksi, dan
fungsinya.
Pengalamatan: Mode untuk menspesifikasikan alamat suatu operand.
Masalah-masalah ini saling berkaitan dan harus diperhatikan dalam
merancang set instruksi.
B. Type Operand
Instruksi mesin beroperasi pada data. Kategori umum yang paling penting
dari data adalah:
Alamat
Angka
Karakter
Data logis.
Akan kita lihat, dalam membahas mode pengalamatan dalam bab 11, bahwa
alamat sebenarnya, sebuah peternakan data. Dalam banyak kasus, beberapa
perhitungan harus dilakukan pada referensi operan dalam instruksi
untuk menentukan utama pada alamat memori virtual. Di alamat
ini, konteks. dalam konteks ini, alamat dapat dianggap sebagai unsigned integer.
Tipe umum data yaitu :
Angka
Karakter
Data logis
Secara singkat dibahas dalam bagian ini. beberapa devine mesin, khusus tipe
data ataupun struktur data. Misalnya, mungkin ada mesin operator yang
beroperasi langsung di daftar pada sengatan karakter.
9SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI
1. Number
Semua bahasa mesin termasuk jenis data numerik. Bahkan dalam
pengolahan data non numerik. Ada kebutuhan untuk nomor untuk bertindak
sebagai counter, lebar lapangan, dan sebagainya. Perbedaan penting
antara nomor yang digunakan dalam matematika biasa dan nomor yang
tersimpan di komputer adalah bahwa surat itu terbatas. Ini benar dalam dua
pengertian. Pertama, ada batas dengan besarnya nomor representable pada
mesin dan kedua, dalam kasus floating-point, batas untuk presisi mereka. Dengan
demikian, programmer dapat memahami konsekuensi dari pembulatan,
overflow dan underflow.
Tiga jenis data numerik yang umum di komputer:
integer atau titik tetap
floating point
Decimal
Kami memeriksa pertama yang secara rinci dalam bab 9 itu
masih mengatakan beberapa kata tentang angka desimal.
Meskipun semua operasi komputer internal atau biner, pengguna dari
kesepakatan sistem dengan angka desimal. Dengan demikian, ada
kebutuhan untuk konversi dari desimal ke biner pada input dan dari biner ke
desimal pada output. Untuk aplikasi di mana ada banyak I / O dan relatif sedikit.
Perhitungan relatif sederhana adalah lebih baik untuk menyimpan
dan beroperasi pada angka dalam bentuk desimal. Representasi paling
umum untuk tujuan ini adalah kemasan desimal.
Dengan desimal dikemas, setiap digit desimal diwakili oleh kode 4-bit,
dengan cara yang jelas. Dengan demikian,
0 = 0000
1 = 0001
8 = 1000
9 = 1001
Mencatat bahwa ini adalah kode lebih efisien karena hanya 10 dari
16 mungkin 4 bit nilai digunakan. untuk membentuk angka, 4 bit kode dirangkai,
10SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI
biasanya dalam kelipatan 8 bit. dengan demikian, kode
untuk 246 adalah 0000001001000110. Kode ini jelas kurang kompak
dari biner langsung diwakili oleh termasuk tanda 4 bit digit baik ditribun kiri atau
kanan untuk tanda minus.
Mesin yang menyediakan instruksi untuk melakukan
operasi arithmatic langsung padaangka desimal paket. Algoritma yang
cukup mirip dengan yang diuraikan dalam bagian 9.3 tapi harus
memperhitungkan operasi membawa desimal.
2. Karakter
Data bentuk umum adalah teks atau string karakter, sedangkan
data tekstual adalah makhluk paling convinient, mereka tidak dapat dalam
bentuk karakter,dengan mudah disimpan atau dikirimkan oleh pengolahan data
dan sistem komunikasi. Sistem ini dirancang untuk data biner. Dengan
demikian, sejumlah kode telah dibuat oleh karakter yang diwakili oleh urutan bit.
Mungkin contoh umum awal ini adalah kode Morse, Hari ini, kode karakter
yang paling umum digunakan dalam American Standard Kode untuk Informasi
Interchange. IRA juga banyak digunakan di luar Amerika Serikat. Setiap
karakter dalam kode ini diwakili oleh pola 7 bit yang unik, dengan demikian, 128
karakter differnt dapat direpresentasikan. Ini adalah jumlah yang lebih
besar daripada yang diperlukan untuk mewakili karakter yang dapat dicetak,
dan beberapa pola mewakili karakter kontrol. Beberapa karakter kontrol pada
halaman.
Lain yang bersangkutan dengan prosedur komunikasi. IRA-
encoded karakter yang hampir selalu disimpan dan dikirim menggunakan 8 bit per
karakter. Delapan bit mungkin digunakan sebagai bit paritas
untuk mendeteksi kesalahan dalam kasus yang terakhir. Bit diatur sedemikian
rupa sehingga jumlah total biner dalam setiap oktet selalu ganjil (paritas
ganjil) atau selalu genap (even parity). Bahwa untuk 011XXXX pola
bit IRA, angka 0 sampai 9 yang diwakili
oleh biner setara mereka, 0000 melalui 1001, di paling kanan 4 bit. Ini adalah
11SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI
kode yang sama seperti desimal dikemas. Ini memfasilitasi konversi antara IRA 7
bit dan 4 bit representasi desimal dikemas.
Kode lain yang digunakan untuk mengkodekan karakter
adalah Binary Coded Perluasan Kode Desimal Interchange
(EBCDIC). EBCDIC digunakan pada IBM S/390 mesin. Itu
adalah kode bit 8. Seperti IRA, EBCDIC kompatibel dengan desimal dikemas
dalam kasus EBCDIC kode 11110000 11111001 melalui mewakil1 angka 0
sampai 9.
Tipe Data
Setiap data memiliki tipe data, angka bulat ( integer ), angka biasa ( real ),
atau berupa karakter ( char ), dan sebagainya.
Ada 2 kategori dari tipe data yaitu :
1. Tipe dasar
a. Bilangan bulat ( integer )
Bilangan atau angka yang tidak memiliki titik desimal atau pecahan,
seperti 10, +225, -10,+25.
Tipe dituliskan sebagai integer atau int
Jangkauan nilai bergantung pada implementasi perangkat keras komputer,
misalnya dari -11 s/d +12; untuk algoritma tidak kita batasi.
Operasi aritmetik: tamabah+, kurang-, kali*, bagi/, sisa hasil bagi%
Operasi pembanding:lebih kecil=, sama=, tidak sama>< .
b. Bilangan biasa ( real )
Bilangan atau angka yang bisa memiliki titik desimal atau pecahan, dan
ditulis sebagai : 235.45, +13.99, -87.76 atau dalam notasi ilmiah seperti :
1.245E+03, 7.45E-02, dsb.
Tipe dituliskan sebagai : real
Jangkauan nilai : bergantung pada implementasi perangkat keras
komputer, misalnya dari -2.9E-39 s/d +1.7E+38, untuk algoritma tidak
dibatasi.
12SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI
Operasi aritmatik dan pembandingan juga berlaku bagi bilangan biasa.
c. Bilangan tetap ( const )
Bilangan tetap ( const ) adalah tipe bilangan, tidak bernilai bulat maupun
tidak, yang nilainya tidak berubah selama algoritma dilaksanakana.
Tipe dituliskan sebagai const .
Jangkauan nilai meliputi semua bilangan yang mungkin.
d. Karakter ( character )
Karakter adalah data tunggal yang mewakili semua huruf, simbol baca,
dan juga simbol angka yang tidak dapat dioprasikan secara matematis,
misalnya: ’A’, ’B’, .....,’Z’, ’?’,’!’, dst.
Tipe dituliskan sebagai char
Jangkauan nilai meliputi semua karakter dalam kode ASCII, atau yang
tertera pada setiap tombol keyboard.
Operasi pembanding dapat dilakukan dan dievaluasi menurut urutan kode
ASCII, sehingga huruf ’A’ (Hex 41) sebenarnya lebih kecil dari huruf ’a’
(Hex 61).
e. Logik ( logikal )
Tipe data logik adalah tipe data yang dipergunakan untuk memberi nilai
pada hasil pembandingan, atau kombinasi pembandingan.
Tipe dituliskan sebagai boolean
Jangkauan nilai ada dua : true dan false
2. Tipe bentukan
a. Array ( larik )
Array adalah tipe data bentukan, yang merupakan wadah untuk
menampung beberapa nilai data yang sejenis. Kumpulan bilangan bulat
adalah array integer, kumpulan bilangan tidak bulat adalaharray real.
Cara menefinisikan ada 2 macam, yaitu:
Nilai_ujian : array [ 1..10] of integer, atau
Int nilai_ujian[10];
13SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI
Kedua definisi diatas menunjukkan bahwa nilai_ujian adalah kumpulan dari
10 nilai bertipe bilanganbulat.
b. String
String adalah tipe data bentukan yang merupakan deretan karakter yang
membentuk satu kata atau satu kalimat, yang biasanya diapit oleh dua
tanda kutip.
Sebagai contoh: nama, alamat, dan judul adalah tipe string.
- Cara mendefinisikannya adalah:
* string nama, alamat; atau
* nama,alamat : string;
c. Record ( rekaman )
Record adalah tipe data bentukan yang merupakan wadah untuk
menampung elemen data yang tipenya tidak perlu sama dengan tujuan
mewakili satu jenis objek.
Sebagai contoh, mahasiswa sebagai satu jenis objek memiliki beberapa
elemen data seperti : nomer_stb, nama, umur, dll.
- Cara mendefinisikan record mahasiswa tersebut adalah sebagai berikut:
Type dataMhs : record
< nomer_stb : integer,
Nama_mhs : string,
Umur : integer,
>
2. Variabel
Variabel adalah nama yang mewakili suatu elemen data seperti : jenkel
untuk jenis kelamin, t4lahir untuk tempat lahir, dan sebagainya. Ada aturan
tertentu yang wajib diikuti dalam pemberian nama variable, antara lain:
Harus dimulai dengan abjad, tidak boleh dengan angka atau symbol.
Tidak boleh ada spasi diantaranya.
Jangan menggunakan simbol yang bisa membingungkan seperti titik dua,
titik koma, koma, dan sebagainya.
Sebaiknya memiliki arti yang sesuai denagn elemen data.
14SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI
Sebaiknya tidak terlalu panjang.
C. Pentium and Power PC Data Types
1. Pentium Data Types
Pentium dapat menangani jenis data 8 (byte), 16 (kata), 32 (doubleword),
dan 64 (quadword) bit panjangnya. Untuk memungkinkan fleksibilitas maksimum
dalam struktur data dan penggunaan memori yang efisien, kata-kata tidak perlu
selaras pada alamat merata habis dibagi 4 dan quadwords tidak perlu selaras pada
alamat merata dibagi 8. Namun, ketika data yang diakses di 32 bus bit, transfer
data berlangsung dalam satuan doublewords, dimulai pada alamat yang habis
dibagi 4. Prosesor ini mengubah permintaan misaglined.
Table Pentium data types
Data type DescriptionGeneral Byte,word (16 bytes),doubleword (32 bits) and quadword
(64 bits) location with arbitrary binary contentsInteger A signed binary value contained in a byte,word or
doubleword, using twos complement representationOrdinal An unsigned integer contained in a byte, word or
doublewordUnpacked binary coded decintal (BCD)
A representation of a BCD digit in the range 0 through 0 with one digit in each byte
Packed BCD Packed byte representation of two BCD digits value in the range 0 to 99
Near pointer A 32 bit effective addresses that represents the offset within a segment. Used for all pointers in a nonsegmented memory and for references within a segment in a segmented memory
Bit field A conliguous sequence of bits in which the position of each bit is considered as an independent unit. A bit string can begin at any bit position of any byte and can contain up to 232 – 1 bits
Byte string A contiguous sequence of bytes, words or doublewords, containing form zero to 232 – 1 bits
Floating point See figure 10.4
Nilai dalam urutan permintaan untuk transfer bus. Seperti semua dari intel
80 × 86 mesin, Pentium menggunakan gaya sedikit-endian: yang, byte paling
15SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI
signifikan disimpan dalam alamat terendah (lihat lampiran 10B untuk pembahasan
endiannes).
Byte, kata, doubleword dan quadword disebut sebagai tipe data
umum. Selain itu, Pentium mendukung jajaran tipe data khusus yang diakui dan
dioperasikan oleh instruksi tertentu. Tabel 10.2 merangkum jenis.
Gambar 10.4 mengilustrasikan jenis Pentium data numerik. Bilangan bulat
ditandatangani adalah intwos melengkapi representasi dan mungkin 16,32 atau 64
bit panjang. Jenis floating point sebenarnya mengacu pada satu set jenis yang
digunakan oleh unit floating-point dan dioperasikan oleh instruksi floating-
point. Ketiga representasi floating-point sesuai dengan IEEE 754 standar.
2. Daya Jenis Data Tipe
PowerPC dapat menangani jenis data 8 (byte), 16 (sindiran), 32 (kata) dan
64 (doubleword) bit panjangnya. Beberapa instruksi mengharuskan operan
memori akan berjajar dalam batas 32-bit. Secara umum, bagaimanapun,
keselarasan tidak diperlukan. Salah satu fitur menarik dari PowerPC adalah dapat
menggunakan salah satu gaya little-endian atau big-endian, yaitu byte paling
signifikan disimpan dalam alamat terendah atau tertinggi (lihat lampiran 10B
untuk diskusi endiannes). Byte, sindiran, kata dan doubleword bersifat umum tipe
data. Prosesor menafsirkan isi dari sebuah item yang diberikan data tergantung
pada instruksi. Prosesor fixed-point mengakui jenis data berikut.
byte unsigned: dapat digunakan untuk operasi aritmatika logis atau
integer. Hal ini diambil dari memori ke sebuah register umum dengan nol
memperluas di sebelah kiri dengan ukuran mendaftar penuh.
Unsigned sindiran: sebagai untuk byte unsigned, tetapi untuk 16-bit jumlah
Ditandatangani sindiran: digunakan untuk operasi aritmatika; dimuat ke
memori dengan tanda memperluas di kiri ke ukuran register penuh (yaitu,
bit tanda direplikasi di semua posisi kosong)
Unsigned kata: digunakan untuk operasi logis dan sebagai pointer alamat.
Sign kata: digunakan untuk operasi aritmatika
Unsigned doubleword: digunakan sebagai pointer alamat
16SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI
Byte string: 0-128 byte panjang
Selain itu, PowerPC mendukung jenis data tunggal dan double-presisi
floating-point yang didefinisikan dalam IEEE 754.
D. Types of Operation
Jumlah opcode berbeda sangat bervariasi dari mesin ke mesin. Namun, jenis umum
yang sama operasi ditemukan pada mesin semua. Sebuah kategorisasi berguna dan khas
adalah sebagai berikut.
1. Data transfer
2. Arithmetic
3. Logical
4. Conversion
5. Input output
1. Data transfer
Jenis yang paling mendasar dari instruksi mesin adalah instruksi transfer data
tersebut. instruksi transfer data harus menentukan beberapa hal. Pertama, lokasi dari
sumber dan operan tujuan harus ditentukan. Setiap lokasi dapat memori, register, atau
bagian atas stack. kedua, panjang data yang akan ditransfer harus ditunjukkan. ketiga,
karena dengan semua instruksi dengan operan, modus pengalamatan untuk operan
masing-masing harus ditentukan. Poin terakhir ini dibahas dalam bab 11.
Pilihan instruksi transfer data untuk memasukkan dalam set instruksi
mencontohkan jenis off perdagangan desainer harus membuat. misalnya, lokasi
umum (memori atau pendaftaran) dari operand dapat ditunjukkan baik dalam
spesifikasi opcode atau operan. Tabel 10.5 menunjukkan contoh dari S/390 data
yang paling umum IBM instruksi transfer. dicatat bahwa ada varian untuk
menunjukkan jumlah data yang akan ditransfer (8, 16, 32, atau 64 bit). juga, ada
instruksi yang berbeda untuk mendaftar untuk mendaftar, mendaftar ke memori,
dan memori untuk mendaftar transfer. Sebaliknya, pendekatan VAX agak lebih
mudah bagi programmer, yang memiliki lebih sedikit mnemonik untuk
menangani. Namun, juga agak kurang kompak dibandingkan dengan pendekatan
IBM S/390, karena lokasi (pendaftaran dibandingkan memori) dari operan
masing-masing harus ditentukan secara terpisah dalam instruksi. kita akan
17SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI
kembali ke perbedaan ini ketika kita membahas format instruksi, dalam bab
berikutnya.
Dalam hal tindakan CPU, operasi transfer data mungkin adalah jenis yang
paling sederhana. jika kedua sumber dan tujuan adalah register, maka CPU hanya
menyebabkan data yang akan ditransfer dari satu mendaftar ke yang lain: ini
merupakan operasi internal ke CPU. jika salah satu atau kedua Operand berada
dalam memori, maka CPU harus melakukan beberapa atau semua tindakan
berikut:
1. menghitung alamat memori, berdasarkan modus alamat.
2. jika alamat mengacu pada memori virtual, menerjemahkan dari virtual ke alamat
memori yang sebenarnya.
3. menentukan apakah item yang dibahas adalah dalam cache
4. jika tidak, mengeluarkan perintah ke modul memori
2. Arithmetic
Kebanyakan mesin menyediakan operasi aritmatika dasar menambah, mengurangi,
mengalikan, dan membagi. ini yang selalu disediakan untuk ditandatangani integer
(fixed-point) angka. operasi lain yang mungkin mencakup berbagai tunggal operan
instruksi: misalnya,
1. absolut: mengambil nilai absolut dari operan
2. meniadakan: meniadakan operan
3. selisih: tambahkan 1 ke operand
4. pengurangan: kurangi 1 dari operand
18SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI
Gambar Shift and Rotate Operations
eksekusi instruksi aritmatika mungkin melibatkan operasi data transfer ke posisi
operan untuk input ke ALU, dan untuk memberikan output dari ALU. Angka 3,5
menggambarkan gerakan yang terlibat dalam transfer data dan operasi aritmatika. di
samping itu, tentu saja, bagian ALU dari CPU melakukan operasi yang diinginkan.
3. Logical
Mesin paling juga menyediakan berbagai usaha untuk memanipulasi bis individu
dari sebuah kata atau unit dialamatkan lain, sering disebut sebagai "sedikit memutar-
mutar". mereka didasarkan pada operasi Boolean.
Beberapa operasi dasar yang logis dapat dilakukan pada data boolean atau
biner ditunjukkan pada tabel 10.6. operasi NOT membalikkan sedikit. AND, OR,
dan XOR adalah fungsi logis yang paling umum dengan dua operan. EQUAL
adalah tes biner berguna.
Operasi ini logis dapat diterapkan bitwise untuk unit n bit data logis.
demikian, jika dua register berisi data.
(R1) = 10100101
(R2) = 00001111
Then
19SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI
(R1) AND (R2) = 00000101
Dimana notasi (X) maens isi lokasi X. dengan demikian, DAN operasi dapat digunakan
sebagai masker yang memilih bit tertentu dalam sebuah kata dan nol keluar bit remaning.
sebagai contoh lain, jika dua register berisi.
(R1) = 10100101
(R2) = 11111111
Then
(R1) XOR (R2) = 01011010
Dengan satu kata diatur untuk semua 1s. operasi XOR membalikkan semua bit dalam
kata lain. Selain menyediakan berbagai pergeseran dan fungsi rotasi. operasi paling dasar
diilustrasikan pada Gambar 10.5. dengan pergeseran logis, bit-bit dari sebuah kata yang
bergeser kiri atau kanan. pada salah satu ujungnya, sedikit bergeser keluar hilang. di
ujung, 0 yang digeser masuk pergeseran logis berguna terutama untuk mengisolasi bidang
dalam sebuah kata. 0s yang bergeser menjadi sebuah kata menggantikan informasi yang
tidak diinginkan yang digeser dari ujung lainnya.
Basic logical operations
P Q NOT P P AND Q P OR Q P XOR Q P=Q
0 0 1 0 0 0 1
0 1 1 0 1 1 0
1 0 0 0 1 1 0
1 1 0 1 1 0 1
Sebagai contoh, misalkan kita ingin mengirimkan data karakter ke karakter
I/O 1 perangkat pada satu waktu. jika setiap kata memori adalah 16 bit panjang
dan berisi dua karakter, kita harus membongkar karakter sebelum mereka dapat
dikirim. untuk mengirim dua karakter dalam satu kata.
1. memuat kata ke register
2. AND dengan nilai 1111111100000000. ini masker keluar karakter di
sebelah kanan.
20SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI
3. bergeser ke kanan delapan kali. pergeseran karakter yang tersisa ke bagian
kanan dari register.
4. melakukan I / O. modul I / O membaca urutan lebih rendah dari 8 bit data
bus.
Hasil langkah sebelumnya dalam mengirimkan karakter tangan kiri. untuk
mengirim karakter tangan kanan.
1. memuat kata lagi ke register.
2. AND dengan 0000000011111111.
3. melakukan I / O.
Operasi pergeseran aritmatika memperlakukan data sebagai integer
ditandatangani dan tidak bergeser sedikit tanda. pada pergeseran aritmatika yang
benar, sedikit tanda direplikasi ke posisi bit ke kanan. pada pergeseran aritmatika
kiri, pergeseran logis kiri dilakukan pada semua bit tapi sedikit tanda, yang
dipertahankan. operasi ini dapat mempercepat operasi aritmatika tertentu. dengan
nomor dalam notasi komplemen dua, pergeseran aritmatika tepat terkait dengan
pembagian dengan 2, dengan pemotongan untuk nomor lama. baik pergeseran
aritmatika kiri dan shift kiri yang logis sesuai dengan perkalian dengan 2 bila ada
tidak meluap. jika overflow terjadi, aritmatika dan logika operasi shift kiri
menghasilkan hasil yang berbeda, tetapi pergeseran kiri aritmatika
mempertahankan tanda nomor. karena potensi untuk overflow, processrors banyak
yang tidak termasuk instruksi ini, termasuk daya PC dan Itanium. lain, seperti
IBM S/390, lakukan menawarkan instruksi. anehnya, architercture pentium
mencakup pergeseran aritmatika kiri tetapi mendefinisikannya menjadi identik
dengan pergeseran kiri logis. Memutar, atau siklik pergeseran, operasi
melestarikan semua bit yang dioperasi. salah satu kemungkinan penggunaan rotate
adalah untuk membawa setiap bit berurutan ke dalam bit paling kiri, di mana ia
dapat diidentifikasi dengan menguji tanda data (diperlakukan sebagai angka).
seperti dengan operasi aritmatika, operasi logis melibatkan aktivitas ALU dan bisa
melibatkan operasi data transfer. tabel 10,7 memberi contoh semua shift dan
memutar operasi dibahas pada pembahasan ini.
21SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI
4. Conversion
Instruksi konversi adalah mereka yang mengubah format atau beroperasi
pada format data. contoh adalah mengkonversi dari desimal ke biner. contoh dari
instruksi editing yang lebih kompleks adalah instruksi menerjemahkan S/390.
instruksi ini dapat digunakan untuk mengkonversi dari satu 8 bit kode ke yang
lain, dan dibutuhkan tiga operand:
TR R1, R2, L
R2 operan berisi alamat awal tabel 8 bit kode. byte L mulai dari alamat yang
ditentukan dalam R1 dijabarkan, setiap byte yang diganti
Table 10.7 examples of shift and rotate operations
Input Operation Result
10100110 Logical right shift (3 bit) 00010100
10100110 Logical left shift (3 bit) 00110000
10100110 Arithmetic right shift (3 bit) 11110100
10100110 Arithmetic left ahift (3 bit) 10110000
10100110 Right rotate (3 bit) 11010100
10100110 Left rotate (3 bit) 00110101
oleh isi dari entri tabel diindeks oleh byte itu. misalnya, untuk menerjemahkan dari
EBCDIC ke IRA, pertama kita membuat tabel byte 256 di lokasi penyimpanan,
katakanlah, 1000-10FF heksadesimal. tabel berisi karakter dari kode IRA di urutan
representasi biner dari kode EBCDIC: yaitu, kode IRA ditempatkan di meja di lokasi
relatif sama dengan nilai biner dari kode EBCDIC dari karakter yang sama. dengan
demikian, lokasi 10F0 melalui 10F9 akan berisi nilai 30 sampai dengan 39, karena F0
adalah kode EBCDIC untuk digit 0, dan 30 adalah kode untuk IRA 0 digit, dan
seterusnya sampai 9 digit. sekarang misalkan kita memiliki EBCDIC untuk digit 1984
mulai dari lokasi 2100 dan kita ingin menerjemahkan ke IRA. menganggap hal berikut:
- Lokasi 2100 - 2103 cantain F1 F9 F8 F4
- R1 berisi 2100
22SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI
- R2 berisi 1000
kemudian, jika kita menjalankan
TR R1, R2, 4
lokasi 2100 - 2103 akan berisi 31 39 38 34
5. Input / output (I/O)
Input/output petunjuk dibahas secara rinci dalam bab 7. seperti yang kita
lihat, ada berbagai appoaches diambil, termasuk diprogram terisolasi I/O. memori
dipetakan diprogram I/O, DMA, dan penggunaan prosesor I/O. implentations
banyak hanya memberikan fiew instruksi I/O, dengan tindakan spesifik yang
ditentukan oleh parameter, kode, atau kata-kata perintah.
6. Sistem Kontrol
Sistem instruksi kontrol adalah mereka yang dapat dieksekusi hanya ketika
prosesor dalam keadaan istimewa tertentu atau sedang
mengeksekusi program dalam arcaistimewa khusus
dari memori. biasanya petunjuk ini dicadangkan untuk penggunaan sistem operasi
Beberapa contoh operasi sistem kontrol adalah sebagai
berikut, istructions sistem kontrol mungkin membaca
atau mengubah kontrol mendaftar kita kontrol diskus
registerdi capters 12 contoh lain adalah instruksi untuk membaca
atau memodifikasi kuncipenyimpanan perlindungan seperti digunakan
dalam S/390 memori sistem contoh lain adalah akses untuk
memproses blok kontrol dalam sistem multiprogramming
Transfer kontrol untuk semua jenis operasi dibahas sejauh instruksi
berikutnya yang akan dilakukanadalah salah satu
yang segera mengikuti instruksi memori saat ini namun fraksi yang signifikan dari
instruksi dalam program apapun miliki sebagai fungsi
mereka mengubahurutan instruksi untuk mengeksekusi instruksi-instruksi yang op
23SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI
erasi dilakukan oleh CPU adalah untuk memperbarui program
counter untuk berisi alamat dari beberapainstruksi dalam memori.
Ada beberapa alasan mengapa transfer-of-control operasi yang diperlukan. Di
antara yang paling penting adalah sebagai berikut :
1. Dalam penggunaan partical komputer, adalah penting untuk
dapat mengeksekusi setiap instruksi lebih dari sekali
dan mungkin jutaan instruksi untuk menerapkan apllication ini
akan unthank kable jika setiap
instruksi harus ditulis sepparately jika atable atau daftar item adalah
untuk akan memproses semua data
2. Hampir semua program melibatkan beberapa pengambilan
keputusan kami ingin komputer untuk melakukan satu hal jika satu
syarat memegang dan hal lain jika kondisi lain berlaku. untuk
contoh urutan instruksi komputer akar kuadrat dari angka. Pada
awalurutan tanda nomor diuji jika nomor tersebut
adalah negatif perhitungan tidak dilakukan, tapi kondisi
kesalahan dilaporkan
3. Untuk menulis dengan benar sebuah program komputer yang
besar atau bahkanukuran sedang adalah tugas yang sangat
sulit. membantu jika ada machanism untuk melanggar tugas menjadi
potongan kecil yang dapat bekerja pada satu per satu cabang instruksi
Sebuah instruksi cabang, juga disebut instruksi jump memiliki sebagai
salah satuoperand-nya alamat dari instruksi berikutnya yang
akan dieksekusi paling seringinstruksi adalah
cabang kondisi instruksi cabang yang dibuat hanya jika kondisi
tertentuterpenuhi. jika tidak, instruksi berikutnya dalam
urutan dijalankan (increment program counter seperti biasa)
melewatkan instruksi lain bentuk umum dari transfer-of-
control instruksi. instruksi loncat mencakup alamat
tersirat. biasanya, loncat menyiratkan bahwa satu
instruksi dilewati: dengan demikian, alamat tersirat sama
24SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI
dengan alamat instruksi berikutnya ditambah satu instruksi-mengukur
tinggi.
Memproduksi Hubungan Instruksi
Mungkin inovasi yang paling penting dalam
pengembangan bahasa pemrograman
adalah prosedur, prosedur adalah mandiri program
komputer yang incorporatred ke dalam sebuah program besar. Pada setiap titik
dalam program prosedur dapatdipanggil, atau menelepon. prosesor diperintahkan
untuk pergi dan melaksanakanseluruh prosedur dan kembali ke titik dari
mana panggilan berlangsung.
Nested Prosedur
Sebuah prosedur bersarang disebut dari dalam prosedur lain seperti yang
ditunjukkan di bawah ini. Program Utama panggilan prosedur A, yang
menyerukan prosedur B: Ketika jal B instruksi dijalankan, alamat pengirim dalam
register $ ra untuk prosedur A akan ditimpa dengan alamat pengirim untuk
prosedur Prosedur B. B akan kembali dengan benar untuk A, tapi ketika prosedur
Sebuah mengeksekusi instruksi jr, maka akan kembali lagi ke alamat pengirim
untuk B, yang merupakan instruksi berikutnya setelah jal B dalam prosedur A.
Hal ini menempatkan prosedur A dalam infinite loop.
Untuk melaksanakan linkage untuk prosedur bersarang, alamat pengirim
untuk setiap prosedur harus disimpan di tempat lain selain mendaftar $
ra. Perhatikan bahwa prosedur call / kembali urutan adalah proses LIFO: prosedur
terakhir disebut adalah yang pertama untuk kembali. Tumpukan A adalah struktur
data alami untuk menyimpan alamat kembali untuk panggilan prosedur bersarang.
Tumpukan sistem terletak di bagian atas ruang memori pengguna dan
tumbuh ke bawah menuju alamat memori yang lebih kecil. Registrasi $ 29, juga
disebut $ sp, adalah pointer stack untuk stack sistem. Ini berisi alamat dari lokasi
kosong pertama di bagian atas stack. Tumpukan sistem ini dimaksudkan untuk
penyimpanan alamat dan terstruktur untuk kata berukuran data.
25SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI
Tumpukan sistem umumnya digunakan untuk menyimpan alamat
kembali. Mereka dapat didorong pada stack ketika prosedur ini disebut dan
muncul dari mengeksekusi instruksi kembali.
Sebuah alamat pengirim dalam register $ ra dapat didorong ke stack sistem
dengan kode MAL berikut:
sw $ ra, ($ sp)
menambahkan $ sp, -4
Kode berikut muncul alamat pengirim dari atas tumpukan dan
mengembalikannya dalam daftar $ ra:
menambahkan $ sp, 4
lw $ ra, ($ sp)
Setiap prosedur yang memanggil prosedur lain harus menyimpan alamat
pengirim pada stack sistem. Kode kerangka untuk menyimpan alamat pengirim
untuk prosedur adalah :
J: sw $ ra, ($ sp) # menyimpan alamat pengirim
menambahkan $ sp, -4 # pada stack sistem
#
# Tubuh prosedur A
#
menambahkan $ sp, 4 # mengembalikan alamat pengirim
lw $ ra, ($ sp) # dari tumpukan sistem
jr $ ra # kembali ke memanggil program
Di dalam prosedur, jumlah mendorong harus sama dengan jumlah pops
untuk memastikan bahwa stack pointer dikembalikan ke posisi semula setelah
setiap urutan panggilan / prosedur pengembalian. Tertandingi mendorong atau
muncul dari tumpukan sistem merusak hubungan prosedur dan menghasilkan
hasil yang tak terduga, seperti instruksi ilegal atau pelanggaran akses memori.
Cabang Petunjuk
Instruksi cabang digunakan untuk mengimplementasikan JIKA pernyataan
dan loop dalam bahasa assembly. Instruksi cabang tanpa
26SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI
syarat mengeksekusi dengan menetapkan nilai dari label ke PC. Eksekusi
program berlanjut dengan instruksi yang terletak di label.
Unconditional Cabang
Sebuah instruksi cabang bersyarat menguji suatu kondisi. Jika kondisi benar, PC-
resetke label. Jika kondisi salah, instruksi cabang mengeksekusi no-op.
nol Tes
Tes relasional
Catatan:
x dan y mungkin tipe integer atau karakter dan mungkin variabel atau konstanta.
Semua instruksi cabang dapat dibangun menggunakan cabang pada nol.
Instruksi cabang berlebihan disertakan untuk kenyamanan.
contoh:
b berikutnya
setara dengan
beqz 0, berikutnya
beq x, y, sama
dapat ditulis sebagai:
sub t, x, y
beqz t, sama
BLT x, y, label
adalah sama dengan:
bgt y, x, label
27SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI
E. Pentium
1. Jenis – jenis OperasiPC
PowerPC banyak memiliki jenis operasi , berikut disajikan berbagai jenis
operasi pada PowerPC :
Instruksi Uraian
Berorientasi Pencabangan
b Pencabangan tidak bersyarat
bl Bercabang kealamat sasaran dan menaruh alamat efektif instruksi
yang berada setelah pencabangan kedalam link register
bc Pencabangan bersyarat pada Count Register dan/atau pada bit
dalkam Condition Register.
sc System Call untuk membangkitkan layanan sistem operasi
trap Memebandingkan dua buah operand dan membangkitkan system
trap handler bila persyaratan tertentu dipenuhi.
Load/Store
lwzu Memuatkan word dan nol kesebelah kiri; mengupdate register
sumber.
ld Memuatkan dobleword.
lmw Memuatkan word ganda; memuatkan word berurutan ke regiater
yang berdekatan dari register sasaran melalui General Purpose
Register 31.
lswx Memuatkan suatu untaian byte kedalam register yang dimulai
dengan register sasaran; empat byte per-register; diambil semua dari
register 31 hingga register 0.
Arimatika Integer
add Menjumlahkan isi dari dua buah integer dan menyimpannya dalam
register ketiga
subf Mengurangkan isi dua buah register dan menyimpannya dalam
register ketiga.
28SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI
mullw Mengalikan isi dua buah register orde rendah 32-bit dan menyimpan
hasil perkaliannya dalam register 64-bit ketiga.
divd Membagi isi dua buah register 64-bit dan menyimpan kuosiennya
dalam register ketiga.
Logika dan Pergeseran
cmp Membandingkan dua buah operand dan menyetel empat buah bit
kondisi dalam field register kondisi tertentu.
crand Condition Register AND : dua bit Condition Register di-AND-kan
dan hasilnya disimpan dalam salah satu dari kedua posisi tersebut.
and Meng-AND-kan isi dua buah register dan menyimpannya dalam
register ketiga
cntlzd Mencacah jumlah bit 0 berturutan yang berawal pada bit nol dalam
register sumber dan menempatkan hasil perhitungan dalam regiater
tujuan.
rldic Merotasikan ke kiri register doubleword, meng-AND-kannya
dengan mask, dan menyimpannya dalam register tujuan.
sld Menggeser kekiri dalam register sumber dan menyimpannya dalam
register tujuan
Titik Mengambang
lfs Memuatkan bilangan floating point 32-bit dari memori,
mengubahnya kedalam format 64 bit, dan menyimpannya dalam
register floating point.
fadd Menjumlahkan dua buah register floating point dan menyimpannya
dalam register ketiga.
fmadd Mengalikan isi dua buah register, menambahkan isi regiater ketiga,
dan menyimpan hasilnya dalam regiater keempat.
fcmpu Membandingkan dua buah operand floating point dan menyetel bit-
bit kondisi.
29SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI
Manajemen Cache
dcbf Membersihkan (flush) blok data cache; melakukan lookup dalam
cache yang terdapat pada alamat sasaran tertentu dan melakukan
operasi pembersihan.
icbi Menginvalidasikan instruksi blok cache
2. Instruksi - Instruksi berorientasi Percabangan
PowerPC memiliki orientasi pencabangan tidak bersyarat dan pencabangan
bersyarat. Instruksi-instruksi pencabangan bersyarat menguji suatu bit tunggal
dari register kondisi apakah benar, salah, atau tidak peduli dan isi dari counter
register apakah nol, bukan nol, atau tidak peduli. Dengan demikian terdapat
sembilan macam kondisi instruksi pencabangan bersyarat yang terpisah. Apabila
counter register diuji apakah nol atau bukan nol, maka sesudah pengujian register
berkurang 1. Hal ini tentunya memudahkan penyiapan loop iterasi. Instruksi dapat
juga mengindikasikan bahwa alamat dari pencabangan itu ditempatkan dalam link
register, hal ini memungkinkan pengolahan call/return.
3. Instruksi-instruksi Load/Store
Dalam arsitektur PowerPC hanya instruksi load/store yang dapat mengakses
lokasi memori, instruksi logika dan aritmetika hanya dilakukan terhadap register.
Terdapat dua fitur yang membedakan instruksi-instruksi load/store :
Ukuran data, dimana data dapat dipindahkan dalam satu byte, halfword,
word, atau doubleword. Instruksi-instruksi juga dapat digunakan untuk
memuat atau menyimpan suatu untai byte ke dalam sejumlah register atau
dari sejumlah register
Perluasan tanda, dimana pada pembuatan word dan halfword, bit-bit
sebelah kiri register 64-bit tujuan yag tidak dipakai dapat diisi dengan
bilangan-bilangan nol atau dengan bit tanda dari kuantitas yang
dimuatkan.
30SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI
6. Bahasa Assembly
CPU dapat memahami dan mengeksekusi instruksi-instruksi mesin.
Instruksi-instruksi itu hanya berupa bilangan-bilangan biner yang tersimpan dalam
computer. Bila pemograman ingin langsung membuat program dalam bahasa
mesin, masalah programnya perlu dibuat dalam bentuk data biner. Perhatikan
pernyataan bahasa BASIC yang sederhana di bawah ini :
N = I + J + K
Misalnya kita ingin memprogram pernyataan ini dalam bahasa mesin dan
mnginisialisasi I, J, dan K masing-masing sebagai 2, 3, dan 4. Program ini
ditunjukkan pada gambar di bawah ini :
Alamat Isi Alamat Instruksi
101 0010 0010 0000 0001 101 LDA 201
102 0001 0010 0000 0010 102 ADD 202
103 0001 0010 0000 0011 103 ADD 203
104 0011 0010 0000 0100 104 STA 204
(a) Program Biner (b) Program Simbolik
Alamat Isi Label Operasi Operand
101 2201 FORMUL LDA I
102 1202 ADD J
103 1203 ADD K
104 3204 STA N
201 0002 I DATA 2
202 0003 J DATA 3
203 0004 K DATA 4
204 0000 N DATA 0
(c) Program Heksadesimal (d) Program Asembly
31SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI
Program tersebut berawal di lokasi 201. Program itu terdiri dari empat buah
instruksi :
1. Masukkan isi lokasi 201 ke dalam AC.
2. Tambahkan isi lokasi 202 ke AC.
3. Tambahkan isi lokasi 203 ke AC.
4. Simpan isi AC di lokasi 204.
Hal ini jelas merupakan proses yang membosankan dan merupakan proses yang
mudah mengalami kesalahan.
Sedikit peningkatan adalah dengan menulis program dalam heksadesimal
daripada dalam notasi biner. Kita akan menuliskan programnya sebagai baris-
baris. Setiap baris terdiri dari alamat lokasi memori dan kode heksadesimal nilai
biner akan disimpan di lokasi tersebut. Kemudian kita memerlukan sebuah
program yang akan menerima input ini, menerjemahkan setiap baris ke dalam
bilangan biner, dan menyimpannya di lokasi tertentu.
Untuk peningkatan yang lebih, kita dapat menggunakan nama simbolik atau
mnemonic pada setiap-setiap instruksi. Ini menghasilkan dalam program simbolik
yang ditunjukkan dalam gambar (c) di atas. Setiap baris input masih
mempresentasikan satu lokasi memori. Setiap baris terdiri dari tiga bidang, yang
dipisahkan dengan spasi. Bidang pertama terdiri dari lokasi memori. Untuk
instruksi, bidang kedua terdiri dari tiga buah symbol bagi opcode. Jika merupakan
instruksi yang mereferensi memori, maka bidang ketiga terdiri dari alamat-alamat.
Untuk menyimpan data yang berubah-ubah dalam sebuah lokasi, kita menemukan
pseudoinstruction (pseudoinstruksi) denga symbol DAT. Hal ini seolah-olah
sebuah indikasi bahwa bidang ketiga pada baris dari bilanganheksadesimal
disimpan dalam lokasi tertentu dalam bidang pertama.
Untuk jenis input ini kita memerlukan program yang sedikit lebih kompleks.
Program menerima setiap baris input, menghasilkan bilangan biner berdasarkan
bidang kedua dan ketiga (jika ada), dan menyimpannya di lokasi yang ditentukan
oleh bidang pertama.
Penggunaan dari suatu program simbolik membuat hidup lebih mudah tetapi
masih janggal. Khususnya, kita harus memberi alamat mutlak untuk setiap word.
32SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI
Hal ini berarti bahwa program dan data dimuatkan hanya ke suatu lokasi dalam
memori, dan kita harus mengetahui tempat itu terlebih dahulu. Lebih buruk,
misalnya, suatu hari kita ingin mengubah program itu dengan menambah atau
menghapus sebuah baris. Hal ini akan mengubah semua almat-alamat word dan
tertentu.
Sistem yang jauh lebih baik, dan lebih umum digunakan adalah dengan
menggunakan alamt-alamat simbolik. Hal ini dijelaskan pada gambar (d) di atas.
Setiaop baris mesin terdiri dari tiga bidang. Bidang pertama masih untuk alamat,
tetapi menggunakan simbolik dan bukan berupa alamat numeric absolut. Beberapa
baris tidak mempunyai alamat, yang berarti bahwa alamat baris itu, maju satu dari
alamat baris sebelumnya. Bagi instruksi referensi memori, bidang ketiga juga
terdiri dari alamat simbolik.
Dengan perbaikan terakhir ini, kita memiliki sebuah bahasa asembly. Prof
yang ditulis dalam bahasa asembly diterjemahkan kedalam bahasa mesin oleh
sebuah bahasa assembler. Program ini tidak hanya harus melakukan penerjemahan
simbolik namun juga menugaskan beberapa bentuk alamat memori menjadi
alamat-alamat simbolik.
Pengembangan bahasa asembly merupakan hal yang sangat penting dalam
evolusi teknologi computer. Ini adalah langkah awal menuju bahasa tingkat tinggi
yang digunakan saat ini. Meskipun sedikit pemrogram yang menggunakan bahasa
asembli, namu sebenarnya semua mesin menyediakannya. Mesin-mesin itu
digunakan untuk program-program system compiler dan rutin-rutin I/O.
33SET INSTRUKSI : KARAKTERISTIK DAN FUNGSI