MATA KULIAH:
ORGANISASI KOMPUTER
INSTRUKSI MESIN DAN PROGRAM PRODI PENDIDIKAN TEKNIK INFORMATIKA DAN KOMPUTER JURUSAN PENDIDIKAN TEKNIK ELEKTRO FAKULTAS TEKNIK UNIVERSITAS NEGERI MAKASSAR 2011 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 dishift 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). Instruksi shift logika dan aritmatika
CONTOH DIGIT-PACKING
0
R0
C Sebelum
0
0
1
1
1
Sesudah
1
1
1
0
. . . 0 1
(a.) Logical shift left
0
. . . 0
1
1
1
0
0
Lshift#2,R0
By: AYU ANGGRIANI H_092904010
26
R0 Before :
0
1
1 1
After :
0
0 0
C 0
0 . . . 0 1 1
1 1
1
0 . . . 0
1 LShiftR #2,R0
(b) Logical shift right
R0
C
Before :
1
0 0 1 1 . . . 0 1 0
0
After :
1
1
1
1
0
0
1
(c) Arithmetic shift right
1
. . . 0
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
Instruksi rotate
R0
C Sebelum :
0
0
1 1
Sesudah :
1
1
1
1 0
. . . 0 1
0 . . . 0 1
(a) Rotate left without carry
1
1 0 1
RotateL #2,R0
R0
C Sebelum :
C
0
1
1
1
0
. . . 0
1
1
Sesudah :
C
0
1
1
1
0
. . . 0
1
1
(b) Rotate left whith carry
RotateLC #2,R0
By: AYU ANGGRIANI H_092904010
29
R0 Sebelum :
0
1 1
Sesudah :
1 1
1 0
0 1
C 1
0
. . . 0
1
. . . 0 1
1 1
0
(c) Rotate right without carry
RotateR #2,R0
R0
C
Sebelum :
0
1
1
1
0
. . . 0
Sesudah :
1
0
0
1
1
1
(d) Rotate right with carry
0
1
1
0
. . . 0
1
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
•PROGRAM BYTE-SORTING Program byte-sorting menggunakan penyortiran straight-selection. •Program bahasa-C untuk sorting
(j=n - 1 ; j > 0 ; j = j – 1)
For
{for (k = j – 1; k >= 0 ; k = k – 1) {if (LIST [k] > LIST [j]
{ TEMP = LIST [k]; LIST[k] = LIST [j]; LIST[j] = TEMP; } }
}
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