28
PRODI PENDIDIKAN INFORMATIKA DAN KOMPUTER JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK UNIVERSITAS NEGERI MAKASSAR 2011 ORGANISA SI KOM PUT ER JUMIATI 092904035 SET INSTRUKSI ARM, MOTOROLA DAN INTEL

Pertemuan 4 set instruksi arm, motorola, dan intel

Embed Size (px)

Citation preview

Page 1: Pertemuan 4 set instruksi arm, motorola, dan intel

PRODI PENDIDIKAN INFORMATIKA DAN KOMPUTER

JURUSAN TEKNIK ELEKTROFAKULTAS TEKNIK

UNIVERSITAS NEGERI MAKASSAR2011

ORGANISASI KOMPUTER

JUMIATI 092904035

SET INSTRUKSI ARM, MOTOROLA DAN INTEL

Page 2: Pertemuan 4 set instruksi arm, motorola, dan intel

PENDAHULUANAdvanced RISC Machines (ARM) limited telah mendesain suatu famili mikroprosesor dan melisensikan desain tersebut ke perusahaan lain untuk fabrikasi chip yang penggunaannya dalam produk komputer dan sistem uang embedded. Perusahan ARM yang relatif baru, merupakan perkembangan dari perusahan Acorn Computer yang mengembangkan desain prosesor pada awal tahun 1980-an. Penggunaan utama mikroprosesor ARM adalah pada aplikasi embedded yang berdaya rendah dan berbiaya rendah, seperti misalnya mobile telephone, modem komunikasi, sistem manejemen mesin mobil, dan hand-held.

Page 3: Pertemuan 4 set instruksi arm, motorola, dan intel

1. REGISTER, AKSES MEMORI, DAN TRANSFER DATA

Dalam arsitektur ARM, memori adalah byte-addressble, menggunakan alamat 32-bit, dan register prosesor memiliki panjang 32-bit. Dua panjang operand digunakan dalam memindahkan data antara memori dan register prosessor : byte (8 bit) dan word (32 bit). Alamat word harus di-align, yaitu harus merupakan kelipatan 4. Arsitektur ARM. Mendukung pengalamatan memori little-endian pilihannya ditetapkan oleh jalur kontrol input eksternal ke prosesor. Ada saat suatu byte di-load dari memori ke register prosesor atau disimpan dari register ke memori, selalu dialokasikan pada posisi byte register low-order.

Page 4: Pertemuan 4 set instruksi arm, motorola, dan intel

A. Struktur Register

Register prosesor yang digunakan oleh program aplikasi ditampilkan pada gambar 3.1 terdapat enam belas register 32 bit berlabel R0 hingga R15 yang terdiri dari lima belas general-purpose register (R0 hingga R14) dan register program counter (PC), R15, yang terdiri dari 15. General purpose register dapat menyimpan alamat memori atau operand data. Current progarm status register (CPRS), atau cukup disebut register status, menyimpan condition code flag (N, Z, C, V), interupt disable flag, dan bit mode prosesor. Disini kita akan mengasumsikan bahw prosesor dalam mode user dan dieksekusi sebagai program aplikasi.terdapat 15 general purpose register tambahn yang yang disebut register banked. Register tersebut menduplikasikan beberapa dari register R0 sampai R 14.register tersebut digunakan pada saat prosesor switch ke mode operasi supervisor atau interupt. Copy dari register status yang tersimpan juga tersedia dalam mode nonuser tersebut.

Page 5: Pertemuan 4 set instruksi arm, motorola, dan intel
Page 6: Pertemuan 4 set instruksi arm, motorola, dan intel

B. Instruksi Akses Memory Dan Mode Pengalamatan

Eksekusi Conditional Instruksi yaitu Fitur yang membedakan dan agak tidak biasa dari prosesor ARM adalah semua instruksinya dieksekusi secara conditional, tergantung pada kondisi yang ditetapkan pada instruksi tersebut.

Mode Pengalamatan Memori yaitu Metode dasar untuk mengalamati operand memori adalah membangkitkan effective address, EA, dari operan tersebut dengan menambahkan offset bertanda keisi base register Rn.

Page 7: Pertemuan 4 set instruksi arm, motorola, dan intel

2. INSTRUKSI ARITMATIKA DAN LOGIKA

Set instruksi ARM memiliki sejumlah instruksi untuk operand aritmatika dan logika pada operand yang berada dalam general-purpose register atau dinyatakan sebagai operand immediate dalam instruksi itu sendiri. Operand memori tidak diperbolehkan untuk instruksi ini. Terdapat instruksi untuk bentuk penambahan dan pengurangan yang berbeda, dan terdapat dua instruksi untuk perkalian. Terdapat instruksi untuk operand logika AND,OR,NOT,XOR, dan bit-clear. Instruksi seperti compare disediakan untuk men-set condition code flag berdasarkan hasil dari operasi aritmatika dan logika pada dua operand. Instruksi tersebut tidak menyimpan hasil akurat dalam register.

Page 8: Pertemuan 4 set instruksi arm, motorola, dan intel

A. INSTRUKSI ARITMATIKA

Ekspresi bahasa assembly dasar untuk instruksi aritmatika adalahOpcode Rd, Rn, Rm

Dimana operasi yang ditetapkan oleh OP code dilakukan menggunakan operand dalam general-purpose register Rn dan Rm. Hasilnya diletakkan dalam register Rd. Misalnya, instruksi

ADD R0, R2, R4Menjalankan operasiR0 [R2] + [R4]Dan instruksi

SUB R0, R6, R5Menjalankan operasi

R0 [R6] – [R5]Selain dimasukkan dalam register Rm, operand kedua dapat dinyatakan

dalam mode immediate. Sehingga,ADD R0, R3, #17

Menjalankan operasiR0 [R3] + 17

Nilai immediate berada dalam field 8-bit dalam bit b7-0 dari instruksi tersebut.

Page 9: Pertemuan 4 set instruksi arm, motorola, dan intel

NEXTOperand kedua dapat digeser atau dirotasi sebelum digunakan dalam operasi

tersebut. Pada saat diperlukan pergeseran atau rotasi, maka ditetapkan paling akhir dalam ekspresi bahasa assembly untuk instruksi tersebut. Instruksi

ADD R0, R1, R5, LSL#4

Beroperasi sebagai berikut: operand kedua yang berada dalam register R5, di geser ke kiri 4 posisi bit (setara dengan [R5]) X 16), dan kemudian ditambahkan ke isi register R1; jumlah tersebut diletakkan dalam register R0.

Tersedia dua versi instruksi multiply. Versi pertama mengalikan isi dua register dan menempatkan 32-bit low-order produk tersebut dalam register ketiga. Bit high-order produk tersebut, jika ada, dibuang. Misalnya, instruksi

MUL R0, R1, R2

Menjalankan operasi

R0 [R1] x [R2]

Versi kedua menempatkan register keempat yang isinya ditambahkan ke produk sebelum menyimpan hasil tersebut dalam register destinasi. Karenanya, instruksi

MLA R0 , R1, R2, R3

Menjalankan operasi

R0 [R1] x [R2] + [R3]

Page 10: Pertemuan 4 set instruksi arm, motorola, dan intel

G. OPERASI PERGESERAN OPERAND

Kita memperhatikan sebelumnya bahwa salah satu fitur yang berbeda dari set instruksi ARM adalah semua instruksi dieksekusi secara CONDITIONAL. Fitur lain yang membedakan adalah operasi pergeseran dan rotasi yang digabungkan ke sebagian operasi instruksi. Pada sebagian besar set instruksi komputer yang lain, operasi pergeseran dilakukan menggunakan instruksi terpisah.

Page 11: Pertemuan 4 set instruksi arm, motorola, dan intel

B. INSTRUKSI LOGIKAOperasi logika AND, OR, XOR, dan Bit-clear diimplementasikan oleh instruksi OP code

AND, ORR, EOR, dan BIC. Kode tersebut memiliki format yang sama dengan instruksi aritmatika. Instruksi

ANDRd, Rn, RmMenjalankan operasi

Rd [Rn] ^ [Rm]Yang merupakan bitwise logical AND antara operand dalam register Rn dan Rm.

Misalnya, jika register R0 berisi pola hexadesimal 02FA62CA dan R1 berisi pola 0000FFFF, maka instruksi

ANDR0, RO, R1Akan menyebabkan pola 000062CA diletakkan dalam register R0. Instruksi bit-clear (BIC) dihubungkan erat dengan instruksi AND. Instruksi ini

mengkomplemen tiap bit dalam operand Rm sebelum meng-AND-kannya dengan bit dalam register Rn. Menggunakan pola bit R0 dan R1 yang sama dengan contoh diatas, instruksi

BIC R0, R0, R1Menghasilkan pola 02FA0000 diletakkan dalam R0.Instruksi move negative, dengan OP-code mnemonic MVN, mengkomplemen bit source

operand dan meletakkan hasilnya dalam Rd. Jika isi R3 adalah pola hexadesimal 0F0F0F0F, maka instruksi

MVN R0, R3Menempatkan hasil F0F0F0F0 dalam register R0.

Page 12: Pertemuan 4 set instruksi arm, motorola, dan intel
Page 13: Pertemuan 4 set instruksi arm, motorola, dan intel

3. INSTRUKSI BRANCH

Instruksi branch CONDITIONAL berisi offset 24-bit, 2’-complement, bertanda yang ditambahkan ke isi ter-update Program Counter untuk menghasilkan alamat target branch. Format untuk istruksi branch ditampilkan pada Gambar 3.6a, dan suatu contoh diberikan pada Gambar 3.6b. Instruksi BEQ (Branch if Equal to 0) menyebabkan suatu branch kjika flag Z di set ke 1.

Page 14: Pertemuan 4 set instruksi arm, motorola, dan intel

A. SETTING CONDITION CODE

beberapa instruksi, seperti compare, dinyatakan sebagai berikut CMP Rn, Rm

Yang menjalankan operasi[Rn] – [Rm]

Memiliki tujuan utama untuk men-set condition code flag berdasar pada hasil operasi pengurangan. Sebaliknya, instruksi aritmatika dan logika mempengaruhi condition code flag hanya jika ditetapkan untuk melakukannya oleh suatu bit dalam field OP-code. Hal ini diindikasikan dengan menambahkan akhiran S ke mnemonic OP-code bahasa assembly. Misalnya, instruksi

ADDS R0, R1, R2Men-set condition code flag, tetapi

ADD R0, R1, R2Tidak.

Page 15: Pertemuan 4 set instruksi arm, motorola, dan intel

B. PROGRAM LOOP UNTUK PENAMBAHAN BILANGAN

Operasi load dan store dilakukan oleh instruksi pertama, kedua, dan terakhir yang digunakan oleh mode pengalamatan relative. Ini mengasumsikan bahwa lokasi memori N, pointer, dan SUM terdapat dalam rentang yang terjangkau oleh offset relatif terhadap PC. Lokasi memori pointer berisi alamat NUM 1 dari bilangan pertama yang akan ditambahkan, N berisi jumlah entri didalam list dan SUM digunakan untuk menyimpan jumlah tersebut.

Page 16: Pertemuan 4 set instruksi arm, motorola, dan intel

4. BAHASA ASSEMBLY

Bahasa assembly ARM memiliki assembler directive untuk menyiapkan ruang penyimpanan, menetapkan nilai numerik ke label alamat dari simbol konstanta, menentukan dimana program dan blok data akan ditempatkan dalam memori, menetapkan akhir teks source program fasilitas tersebut didekskripsikan secara umum.Kita mengilustrasikan ARM directife yang memaparkan source program lengkapuntuk program pada gambar. Area directive yang menggunakan argumen kode atau data , mengindikasikan awal blok memori yang berisi program instruksi atau data.

Page 17: Pertemuan 4 set instruksi arm, motorola, dan intel

A. PSEUDO-INSTRUKTION

Cara alternative untuk me-load alamat NUM1 ke register R2,juga disediakan dalam bahasa assembly. Pseudo instruktion

ADD Rd, ADDRESS Me-load nilai 32- bit address ke Rd. Instruksi ini bukannya instruksi mesin sebenarnya assembler memilih

instruksi mesin riil yang sesuia untuk mengimplementasikan psseudo-instruktion. Misalnya, kombinasi instruksi mesin

LDR R2, POINTERDan directive declarasi data

POINTER DCD NUM1Yang digunakan dalam gambar adalah salah satu cara untuk mengimplementasikan pseudo-instruction

ADR R2, NUM1Cara yang lebih effesien untuk mengimplementasikan instruksi ADR dimungkinkan dalam contoh dan ini

salah satu yang akan dipilih oleh assembler, pada saat nilai alamat di-load oleh instruksi ADR dalam 25 byte isi PC terbaru (R 15), instruksi

ADD Rd, R15, #offsetDapat digunakan untuk mengimplementasikan Adr pseudo-instruction. Jika hal ini dikerja dalam contoh

program, maka tidak diperlukan lokasi POINTER. Assembler mengimplementasikan ADR pseudo-instruction dengan instruction mesin riil

ADR R2, R15, #28Karena NUM1 adalah28 byte diatas Pcter-update pada saat instruksi ADD dieksekusi.instruksi ini

mengasumsikan bahwa area data segera dilanjutkan dalam instruksi STR. Hal ini tidak sepenuhnya benar karena instruksi untuk mengembalikan kontrol ke sistem operasi harus berada setelah instruksi STR, tetapi instruksi telah dihilangkan.

Page 18: Pertemuan 4 set instruksi arm, motorola, dan intel

5. OPERASI INPUT/ OUTPUT

Arsitektur ARM menggunakan memori mapped I/O sebagaimana yang didekskripsikan. Membaca karakter dari keyboard atau mengirim suatu karakter dilakukan menggunakan program –controlled I/O sebagaimana didekskripsikan pda bagian tersebut misalnya bit 3 pada tiap register status prangkat INSTATUS (keyboard ) dan OUTSTATUS (display) masing-masing berisi flag control sin dan sout. Juga asumsikan bahwa register keyboard dataIN dan display dataOUT berada pada alamat instatus +4 dan outstatus +4 tepat pada register status. Asumsika bahwa alamat instatus telah diload keregister R1.Rangkaian instruksiREADWAIT LDR R3, [R1]

TST R3, #8BEQ READWAITLDRB R3, [R1, #4]

Dengan mengasumsikan outstatus alamat telah diload keregister R2, maka rangkaian instruksi WRITEWAIT LDR R4,,[R2]

TST R4, #8BEQ WRITEWAITSTRB R3, [R4, #4]

Page 19: Pertemuan 4 set instruksi arm, motorola, dan intel

6. SUBROUTINE

Instruksi branch and Link (BL) digunakan untuk memanggil subroutine. Instruksi tersebut beroperasi dengan cara yang samadengan instruksi branch lainnya dengan satu langkah tambahan. Return address yang merupakan alamat instruksi beriktnya sehingga instruksi BL di-load keregister R4 yang bertindak sebagai link register.karena subroutine dapat di-nest, maka isi link register harus disimpan dalam stack oleh subroutine. Register R13 biasanya digunakan sebagai pointer untuk stack ini.

Page 20: Pertemuan 4 set instruksi arm, motorola, dan intel
Page 21: Pertemuan 4 set instruksi arm, motorola, dan intel

7. CONTOH PROGRAM

A. PROGRAM VECTOR DOT PRODUCTDua instruksi pertama me-load alamat vector A dan B ke register R1 dan R2. Register tersebut adalah ADR pseudo-instruction yang dideksripsikan pada bagian 3.4 kjika AVEC dan BVEC mendekati program maka instruction Add yang menggunakan nilai terbaru PC dapat digunakan untuk membangkitkan alamat. Mode pengalamatan Relative digunakan untuk meng akses isi N dan DOTPROD,dan mode pengalamatan post-index with writeback digunakan dalam dua dua instruksi pertama dari loop. Instruksi Multiply-Accumulate (MLA) melakukan operasi aritmatika yang diperlukan. Instruksi ini mengalikan element vektor dalam R4 dan R5 dan mengakumulasikan produknya ke R0.

Page 22: Pertemuan 4 set instruksi arm, motorola, dan intel

B. PROGRAM BYTE-SORTING

alamat LIST byte pertama di-load ke register R4 digunakan dalam instruksi compare kedua hingga terakhir untuk menetapkan kapan inner loop (berbasis pada index k) berakhir. R5 berisi alamat LISH +1 dan digunakan pada instruksi compare terkhir untuk menetapkan kapan outer loop (berbasis pada index j) berakhir. Base register R2 digunakan untuk melewati index j secara mundur dari akhir list dalam outer loop. Register R3 melewati index k secara mundur melalui tiap sublist dalam innerloop. Mode pengalamatan pre-indexed with writeback digunakan untuk me-load byte LISH (j) ke register R0 dan untuk me-load byte list (k) ke R1 masing-masing dalam outer loop dan inner loop.Fitur eksekusi CONDITIONAL dari set instruksi ARM digunakan untuk memanfaatkan inner loop pada saat LIST (k) harus dipertukarkan dengan LIST (j). Rangkaian tiga instruksi STR, STR, MOV hanya dieksekusi jika list k lebih besar dari pada list j, sebagaimana diindikasikan oleh akhiran GT.

Page 23: Pertemuan 4 set instruksi arm, motorola, dan intel

C. SUBROUTINE PENYISIPAN DAN PENGHAPUSAN LINKED-LISH

Page 24: Pertemuan 4 set instruksi arm, motorola, dan intel

8. SUBROUTINE PENYISIPAN DAN PENGHAPUSAN LINKED-LISH

Prosesor 68000 dicirikan oleh 16-bit word lenght eksternal karena chip prosesornya memiliki 16 pin data untuk koneksi ke memori. Akan tetapi, data yang dimanipulasi didalam prosessor pada pada register yang berisi 32bit.

Page 25: Pertemuan 4 set instruksi arm, motorola, dan intel

A. Struktur Register

Struktur register 68000 yang ditunjukan pada gambar memiliki 8 register data dan 8 alamat register masing-masing memiliki panjang 32 bit. Register data berfungsi sebagai general purpose accumulator dan sebagai counter. Register alamat menyimpan informasi yang digunakan dalam menentukan alamat operand memori, informasi ini mungkin dinyatakan dalam ukuran long word atau word pada satu alamat suatu memori berada pada register alamat, register tersebut berfungsi sebagai pointer ke lokasi tersebut.

Page 26: Pertemuan 4 set instruksi arm, motorola, dan intel

B. Pengalamatan

Memori komputer 68000 disusun dalam 16 bit word dan merupakan byte addresseble. Dua word berurutan dapat diinterpresentasikan sebagai 32 bit long word tunggal alamat memori ditetapkan sebagaimana ditunjukkan suatu word harus di-align pada batas yang genap yaitu alamatnya harus berupa bilangan genap.digunakan penetapan alamat bigendian. Byte yang berada dalam posisi high order pada suatu word memiliki alamat yang sama dengan word tersebut, sedangkan byte yang berada pada posisi low order memiliki alamat yang lebih tinggi selanjutnya.

Page 27: Pertemuan 4 set instruksi arm, motorola, dan intel

Mode pengalamatan yang ada didefenisikan sebagai berikut :

Mode immadiate Operandnya dimuat dalam instruksi. Empat ukuran operand dapat ditetapkan

Mode absolute Alamat absolut suatu operand ditetapkan dalam instruksi, setelah OP-code

Mode register Operandnya berada dalam register prosesor yang ditetapkan dalam instruksi

Mode register indirect Effective address operanya berada dalam registeralamat yang ditetapkan dalam instruksi

Mode autoincrement Effective address operandnya berada dalam register alamat, an, yang ditetapkan dalam instruksi tersebut

Mode auto decrement Isi suatu register alamat ditentukan oleh instruksi Mode basic index Offset bertanda 16-bit dan register alamat ditentukan

oleh instruksi Mode full index Offset bertanda 8 bit, register alamat register dan data

ditetapkan oleh instruksi Mode basic relative Merupakan mode yang sama dengan mode basic index

kecuali program counter digunakan sebagai pengganti index register An. Mode full relative Merupakan mode yang sama dengan mode full index

kecuili program counter digunakan sebagai pengganti index register An.

Page 28: Pertemuan 4 set instruksi arm, motorola, dan intel

SEKIAN & TERIMA KASIH