ORGANISASI KOMPUTER
MATA KULIAH:
PRODI PENDIDIKAN TEKNIK INFORMATIKA DAN KOMPUTER JURUSAN PENDIDIKAN TEKNIK ELEKTRO
FAKULTAS TEKNIK UNIVERSITAS NEGERI MAKASSAR
2011
INSTRUKSI MESIN DAN PROGRAM
By: AYU ANGGRIANI H_092904010 1
CREATED BY: AYU ANGGRIANI H
092904010
PTIK A 2009
By: AYU ANGGRIANI H_092904010 2
Bahasa Assembly 1. Assembler Directive 2. Assembler dan Eksekusi Program 3. Notasi Bilangan
Operasi input/output dasar Stack dan Queu Subroutine
1. Subroutine Nesting dan Stack Prosesor 2. Parameter Passing 3. Stack Frame
Instruksi Tambahan 1. Instruksi Logika 2. Instruksi Shift dan Rotate 3. Perkalian dan Pembagian
Program Contoh 1. Program Vector Dot Product 2. Program Byte-Sorting 3. Linked List
Encoding Instruksi Mesin By: AYU ANGGRIANI H_092904010 3
PENDAHULUAN
Instruksi Mesin dan Program membahas cara program
dieksekusi dalam komputer dari sudut pandang instruksi
mesin. Penekanannya adalah pada konsep dasar. Kita
menggunakan cara umum untuk mendeskripsikan instruksi
mesin dan metode pengalamatan operand yang biasanya
terdapat pada prosesor komersial. Sejumlah instruksi dan
metode pengalamatan diperkenalkan untuk membantu kita
menampilkan program realistik yang lengkap untuk
menjalankan suatu tugas sederhana. Program umum ini
ditetapkan pada tingkat bahasa assembly.
Bahasa assembly adalah representasi bahasa mesin yang
dapat dibaca untuk prosesor. Fitur hubungan antara bahasa
tingkat-tinggi dan bahasa mesin adalah pertimbangan utama
dalam desain komputer.
By: AYU ANGGRIANI H_092904010 4
A. BAHASA ASSEMBLY
Set lengkap nama simbolik semacam dan aturan penggunaannya
membentuk bahasa pemrograman, yang biasanya disebut sebagai
bahasa assembly. Set aturan untuk menggunakan mnemonic
dalam spesifikasi instruksi dan program lengkap disebut syntax
bahasa.
Program yang ditulis dalam bahasa assembly dapat secara
otomatis ditranslasikan ke rangkaian instruksi mesin oleh suatu
program yang disebut assembler. Program assembler adalah salah
satu kumpulan program yang merupakan bagian dari software
sistem.
By: AYU ANGGRIANI H_092904010 5
•ASSEMBLER DIRECTIVE
Selain menyediakan mekanisme untuk menyatakan instruksi
dalam suatu program, bahasa assembly memungkinkan
programer untuk menetapkan informasi lain yang diperlukan
untuk mentranslasikan source program ke dalam object
program.
By: AYU ANGGRIANI H_092904010 6
By: AYU ANGGRIANI H_092904010 7
By: AYU ANGGRIANI H_092904010 8
•ASSEMBLY DAN EKSEKUSI PROGRAM
Source program yang ditulis dalam bahasa assembly harus
diassemblem menjadi object program bahasa mesin sebelum
dapat dieksekusi. Hal ini dilakukan oleh program assembler,
yang mengganti semua simbol untuk mode operasi dan
penggalamatan dengan kode biner yang digunakaa dalam
instruksi mesin, dan mengganti semua nama dan label dengan
nilai sebenarnya.
By: AYU ANGGRIANI H_092904010 9
•NOTAS1 BILANGAN
Pada saat berhadapan dengan nilai numerik, seringkali lebih
mudah untuk menggunakan notasi desimal yang telah dikenal.
Tentu saja, nilai tersebut disimpan dalam komputer sebagai
bilangan biner. Pada beberapa situasi, lebih mudah untuk
menetapkan pola biner secara langsung. Kebanyakan
assembler memungkinkan bilangan numerik dinyatakan
dengan berbagai cara yang berbeda, menggunakan konvensi
yang ditetapkan oleh syntax bahasa assembly.
By: AYU ANGGRIANI H_092904010 10
B. OPERASI INPUT/OUTPUT DASAR
Bagian sebelumnya dalam bab ini mendeskripsikan instruksi
mesin dan mode pengalamatan. Kita telah mengasumsikan bahwa
data yang dikenai operasi instruksi ini telah disimpan dalam
memori. Kita sekarang membahas sarana yang digunakan untuk
mentransfer data antara memori komputer dan dunia luar. Operasi
Input/Output (I/O) sangat penting, dan cara operasi tersebut
dijalankan dapat memiliki efek yang signifikan pada performa
komputer.
By: AYU ANGGRIANI H_092904010 11
By: AYU ANGGRIANI H_092904010 12
C. STACK DAN QUEU
Program komputer seringkali memerlukan subtask tertentu
yang menggunakan struktur subroutine yang umum. Untuk
mengatur hubungan kontrol dan infonnasi antara program utama
dan subrotine, maka digunakan suatu struktur data yang disebut
stack. Bagian ini akan mendeskripsikan stack, dan struktur data
yang berhubungan erat dengannya yang disebut queu.
By: AYU ANGGRIANI H_092904010 13
By: AYU ANGGRIANI H_092904010 14
By: AYU ANGGRIANI H_092904010 15
D. SUBROUTINE
Pada suatu program, seringkali perlu untuk melakukan
subtask tertentu berulangkali pada nilai data yang berbeda.
Subtask semacam itu biasanya disebut subroutine. Misalnya,
suatu subroutine dapat mengevaluasi fungsi sinus atau
mensortir suatu list nilai menjadi urutan meningkat atau
menurun.
Instruksi Call hanyalah instruksi branch khusus yang melakukan
operasi berikut:
• Menyimpan isi PC dalam link register
• Branch ke alamat target yang ditetapkan oleh instruksi
Instruksi Return adalah instruksi branch khusus yang melakukan
operasi berikut:
• Branch ke alamat yang terdapat dalam link register.
By: AYU ANGGRIANI H_092904010 16
•SUBROUTINE NESTING DAN STACK PROSESOR
Praktek pemrograman umum, yang disebut subroutine nesting,
adalah menggunakan satu sub routine untuk memanggil
subroutine lain. Dalam hat ini, return address call yang kedua juga
disimpan dalam link register, menghancurkan isi sebelumnya.
By: AYU ANGGRIANI H_092904010 17
• PARAMETER PASSING
Pada saat calling suatu subroutine, suatu program harus
menyediakan parameter ke subroutine, yaitu operand atau
alamatnya, yang akan digunakan dalam komputasi.
Selanjutnya, subroutine mengembalikan parameter lain, dalam
hal ini, hasil komputasi tersebut. Pertukaran informasi antara
calling program dan subroutine disebut sebagai parameter
passing. Parameter passing dapat dilakukan dengan beberapa
cara. Parameter tersebut dapat ditempatkan dalam register atau
dalam lokasi memori, sehingga dapat diakses oleh subroutine.
Atau alternatif lainnya, parameter tersebut dapat ditempatkan
pada stack prosesor yang digunakan untuk menyimpan return
address.
By: AYU ANGGRIANI H_092904010 18
By: AYU ANGGRIANI H_092904010 19
•STACK FRAME
Sekarang amatilah bagaimana stack digunakan dalam contoh pada
Gambar 2.26. Selama eksekusi subroutine, enam lokasi pada puncak
stack berisi entri yang diperlukan oleh subroutine tersebut. Lokasi
ini merupakan ruang kerja privat untuk subroutine, dibuat pada saat
subroutine dimasuki dan dikosongkan pada saat subroutine
mengembalikan kontrol ke calling program. Ruang semacam itu
disebut stack frame. Jika subroutine memerlukan lebih banyak ruang
untuk variabel mernori lokal, maka dapat juga dialokasikan pada
stack.
By: AYU ANGGRIANI H_092904010 20
By: AYU ANGGRIANI H_092904010 21
By: AYU ANGGRIANI H_092904010 22
By: AYU ANGGRIANI H_092904010 23
E. INSTRUKSI TAMBAHAN
Sejauh ini kita telah memperkenalkan instruksi berikut:
Move, Load, Store, Clear, Add, Subtract, Increment,
Decrement, Branch, Testbit, Compare, Call, dan Return. 13
Instruksi ini, bersama dengan mode pengalamatan dalam
Tabel 2.1, telah memungkinkan kita untuk menuliskan
routine untuk mengilustrasikan operasi memory-mapped I/O
dasar.
By: AYU ANGGRIANI H_092904010 24
a. INSTRUKSI LOGIKA
Operasi logika,seperti AND, OR, dan NOT yang diterapkan pada
bit individu, adalah blok bangunan dasar dari sirkuit digital,
sebagaimana dideskripsikan dalam Apendiks A. Juga akan
menggunakan instruksi yang menerapkan operasi ini ke semua bit
word atau byte secara mandiri dan paralel.
b. INSTRUKSI SHIF DAN ROTATE
Terdapat banyak aplikasi yang meminta bit suatu operand di-
shift sejumlah posisi bit tertentu ke kanan atau kiri. Detil
bagaimana shift tersebut dilakukan tergantung pada apakah
operand tersebut adalah bilangan bertanda atau beberapa
informasi binary-code yang lebih umum.
By: AYU ANGGRIANI H_092904010 25
SHIFT LOGIKA
Diperlukan dua instruksi shift logika, satu untuk menggeser ke
kiri (LshiftL) dan yang lain untuk menggeser ke kanan (LshiftR).
R0 C
0 1 1 1 0 . . . 0 1 1
0
1 1 0 . . . 0 1 1 0 0 1
0 Sebelum
Sesudah
(a.) Logical shift left Lshift#2,R0
CONTOH DIGIT-PACKING Instruksi shift logika dan aritmatika
By: AYU ANGGRIANI H_092904010 26
R0
0 1 1 1 0 . . . 0 1 1
0 0 0 1 1 1 0 . . . 0
1 1 1 0 0 1 1 . . . 0
1 0 0 1 1 . . . 0 1 0
R0
C
0
1
C
0
1
Before :
After :
(b) Logical shift right LShiftR #2,R0
Before :
After :
(c) Arithmetic shift right AShiftR #2,R0
By: AYU ANGGRIANI H_092904010 27
SHIFT ARITMATIKA
Suatu studi tentang representasi bilangan biner 2’s-complement pada
Gambar 2.1 menyatakan bahwa pergeseran posisi bit nomor satu ke
kiri setara dengan mengalikannya dengan 2; dan menggesernya ke
kanan setara dengan membaginya dengan 2.
OPERASI ROTASI
Pada operasi pergeseran, bit yang bergeser di luar operand hilang,
kecuali bit terakhir yang digeser akan disimpan dalam flag Carry C.
By: AYU ANGGRIANI H_092904010 28
R0
0 1 1 1 0 . . . 0 1 1
0 1 1 1 0 . . . 0 1 1
0 1 1 1 0 . . . 0 1 1
1 1 0 . . . 0 1 1 0 1
R0
C
0
1
C
C
C
(a) Rotate left without carry RotateL #2,R0
Sebelum :
Sesudah :
Sebelum :
Sesudah :
(b) Rotate left whith carry RotateLC #2,R0
Instruksi rotate
By: AYU ANGGRIANI H_092904010 29
R0
0 1 1 1 0 . . . 0 1 1
R0
1 1 0 1 1 1 0 . . . 0
0 1 1 1 0 . . . 0 1 1
1 0 0 1 1 1 0 . . . 0
C
0
1
C
0
1
Sebelum :
Sesudah :
Sebelum :
Sesudah :
(c) Rotate right without carry RotateR #2,R0
(d) Rotate right with carry RotateRC #2,R0
By: AYU ANGGRIANI H_092904010 30
F.. PROGRAM CONTOH
Pada bagian ini kita menampilkan tiga contoh yang
mengilustrasikan lebih lanjut penggunaan instruksi mesin.
•PROGRAM VECTOR DOT PRODUCT
Contoh pertama adalah aplikasi numerik yang merupakan
ekstensi program loop .
By: AYU ANGGRIANI H_092904010 31
For (j=n - 1 ; j > 0 ; j = j – 1)
{for (k = j – 1; k >= 0 ; k = k – 1)
{if (LIST [k] > LIST [j]
{ TEMP = LIST [k];
LIST[k] = LIST [j];
LIST[j] = TEMP;
}
}
}
Program byte-sorting menggunakan penyortiran straight-selection.
•Program bahasa-C untuk sorting
•PROGRAM BYTE-SORTING
By: AYU ANGGRIANI H_092904010 32
•LINKED LIST
Banyak program aplikasi nonnumerik mensyaratkan bahwa list
informasi yang berurutan direpresentasikan dan disimpan dengan
suatu cara srhingga mudah untuk menambahkan item ke list
tersebut atau untuk menhapus item dari list pada posisi apapun
dengan tetap menjaga urutan item yang diinginkan
By: AYU ANGGRIANI H_092904010 33
G. ENCODING INSTRUKSI MESIN
Kita telah memperhatikan instruksi yang menjalankan operasi seperti
penambahan, pengurangan, pemindahan, pergeseran, rotasi, dan
branch. Instruksi ini dapat menggunkana operand dengan ukuran
yang berbeda, seperti 32-bit dan 8-bit bilangan atau karakter 8-bit
ASCII-encoded. Tipe operasi yang dilakukan dan tipe operand yang
digunakan dapat ditentukan menggunakan pola biner ter-encode
yang disebut sebagai OP code untuk instruksi tertentu.
By: AYU ANGGRIANI H_092904010 34
By: AYU ANGGRIANI H_092904010 35