Pertemuan 3-instruksi-mesin-dan-program-bagian-23

35

Transcript of Pertemuan 3-instruksi-mesin-dan-program-bagian-23

Page 1: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

ORGANISASI KOMPUTER

MATA KULIAH:

PRODI PENDIDIKAN TEKNIK INFORMATIKA DAN KOMPUTER JURUSAN PENDIDIKAN TEKNIK ELEKTRO

FAKULTAS TEKNIK UNIVERSITAS NEGERI MAKASSAR

INSTRUKSI MESIN DAN PROGRAM

1

2013

Page 2: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

CREATED BY:

2

FRANS RUMENGAN D.1129040049

PTIK 02 2011

Page 3: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

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 3

Page 4: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

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.

4

Page 5: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

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.

5

Page 6: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

•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.

6

Page 7: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

7

Page 8: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

8

Page 9: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

•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.

9

Page 10: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

•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.

10

Page 11: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

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.

11

Page 12: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

12

Page 13: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

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.

13

Page 14: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

14

Page 15: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

15

Page 16: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

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.

16

Page 17: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

•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.

17

Page 18: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

• 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.

18

Page 19: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

19

Page 20: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

•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.

20

Page 21: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

21

Page 22: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

22

Page 23: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

23

Page 24: Pertemuan 3-instruksi-mesin-dan-program-bagian-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.

24

Page 25: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

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.

25

Page 26: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

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

26

Page 27: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

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

27

Page 28: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

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.

28

Page 29: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

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

29

Page 30: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

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

30

Page 31: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

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 .

31

Page 32: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

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

32

Page 33: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

•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

33

Page 34: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

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.

34

Page 35: Pertemuan 3-instruksi-mesin-dan-program-bagian-23

35