Dokumen tersebut membahas tentang instruksi assembly pada arsitektur ARM, Motorola, Intel, dan IA-32. Secara singkat, dokumen tersebut membahas tentang register, mode pengalamatan, kontrol aliran program, operasi logika, I/O, dan subroutine pada masing-masing arsitektur.
1. Pertemuan 5
(SET INSTRUKSI ARM, MOTOROLA, DAN INTEL)
1
3.10 Instruksi
Para desainer berusaha untuk membuat bahasa
assembly ortogonal. Artinya, instruksi dibagi menjadi
operasi dan mode alamat , dan hampir semua mode
alamat yang tersedia untuk hampir semua instruksi.
Banyak programmer tidak menyukai "dekat"
ortogonal, sementara yang lain berterima kasih atas
upaya tersebut. Pada tingkat bit, orang menulis
assembler jelas akan melihat bahwa "petunjuk" bisa
menjadi salah satu dari beberapa-op kode yang berbeda.
Benar-benar suatu kompromi yang bagus karena
memberikan kenyamanan hampir sama dengan mesin
benar-benar ortogonal, namun juga memberikan
kebebasan CPU desainer untuk mengisi tabel op-code.
Selain itu, banyak instruksi dan mode pengalamatan
menambahkan kata-kata tambahan di belakang untuk
alamat, lebih alamat-mode bit, dll
Group 4 PTIK 09
2. 3.11 Bahasa Assembly
2
Pembahasan bahasa assembly kali ini diterapkan
secara umum pada bahasa assembly 68000. Karena
instruksi 68000 dapat menangani tiga ukuran operand
yang berbeda, maka instruksi assembler harus
mengindikasikan ukuran yang dimaksud. Hal ini
dilakukan dengan menambahkan indikator ukuran ke
mnemonic operasi. Indikator ukuran adalah L untuk
long word, W untuk word, B untuk byte. Sehingga, jika
instruksi add beroperasi pada operand long word, maka
mnemonic operasinya ditulis sebagai ADD.L pada saat
tidak ada indikasi ukuran, ukuran operand dianggap
satu word. Hal ini berarti bahwa instruksi ADD.L. pada
saat tidak ada indikasi ukuran, ukuran operand
dianggap satu word. Hal ini berarti bahwa instruksi
ADD.W#20, D1 dan ADD#20, D1 adalah identik.
Group 4 PTIK 09
3. 3.12 Kontrol Aliran Program
3
Instruksi Branch diperlukan untuk
mengmplementasikan struktur program seperti
statement if dan loop. Secara umum, suatu
instruksi branch menguji kondisi branch dan
kemudian, tergantung pada hasil
tersebut, menyebabkan eksekusi dilanjutkan pada
salah satu dari jalur yang ada.
Group 4 PTIK 09
4. 3.13 Operasi I/O
4
Processor 68000 mensyaratkan semua
status dan buffer data dalam antar muka
perangkat I/Omenjadi addressable seperti lokasi
memori.
Group 4 PTIK 09
5. 3.14 Stack dan Subroutine
5
Suatu stack dapat diimplementasikan menggunakan register
alamat apapun sebagai pointer. Mode pengalamatan
autoincrement dan autodecrement memfasilitasi proses ini. Satu
register spesifik, register A7, ditunjuk sebagai pointer stack
prosesor, dan stack yang ditunjuk register ini disebut stack
prosessor. Ini adalah stack yang digunakan dalam semua
operasi stack yang dilakukan processor secara
otomatis, sebagaimana dalam kasus linkage subroutine.
Instruksi Branch-to-Subroutine (BSR) digunakan untuk
memanggil subroutine. Instruksi tersebut diimplementasikan
dengan cara yang sama seperti instruksi branch yang lain, tetapi
juga menyebabkan isi program counter di-push ke stack. Branch
targetnya adalah instruksi pertama dalam subroutine tersebut.
Pada saat subroutine tersebut diselesaikan, Instruksi Return-
from-Subroutine (RTS) digunakan untuk kembali ke calling
program.
Group 4 PTIK 09
6. 3.15 Instruksi Logika
6
Kelompok perintah ini dipakai untuk
melakukan operasi logika mikrokontroler MCS51,
operasi logika yang bisa dilakukan adalah operasi
AND (kode operasi ANL), operasi OR (kode operasi
ORL) dan operasi Exclusive-OR (kode operasi XRL).
Data yang dipakai dalam operasi ini bisa berupa
data yang berada dalam Akumulator atau data
yang berada dalam memori-data, hal ini sedikit
berlainan dengan operasi aritmatik yang harus
melihatkan Akumulator secara aktip. Hasil operasi
ditampung di sumber data yang pertama.
Group 4 PTIK 09
7. 3.16 Contoh Program
7
Pada bagian ini, kita menggunakan versi
program 68000 untuk operasi dot product, byte
sorting, dan linked-list
Group 4 PTIK 09
8. BAGIAN III CONTOH IA-32 PENTIUM
8
Intel cooperation menggunakan nama umum
Intel Architecture (IA) untuk prosesor dalam merek
produknya. Kita akan mendeskripsikan prosesor IA
yang beroperasi dengan alamat memori 32-bit dan
operand-32 bit. Prosesor IA-32 pertama kali adalah
80386 (tahun 1985), 80486 (tahun 1989), Pentium
(tahun 1993), dan Pentium 4 (tahun 2000) telah
diimplementasikan.
Group 4 PTIK 09
9. 3.17 Register dan Pengalamatan
9
Dalam arsitektur IA-32 memori adalah byte
addressable menggunakan alamat 32-bit, dan
instruksi beroperasi pada operand data 8-32 bit.
Ukuran operand ini diebut byte dan doubleword
dalam istilah intel. Operand 16-bit disebut word
pada processor Intel i6-bit awal. Digunaka
pengalamatan little-edian, operand multiple-byte
dapat mulai dari tiap lokasi alamat byte.
Group 4 PTIK 09
10. 3.17.1 Struktur Register IA-32
10
Delapan register 32-bit berlabel R0 hingga R7
adalah general-pupose register yang dapat
digunakan untuk menyimpan operand data atau
informasi pengalamatan. Delapan general-pupose
register menjadi tiga tipe yang berbeda: register
data untuk operand penyimpan, dan register
pointer dan index untuk menyimpan alamat dan
index alamat digunakan untuk metapkan affective
address suatu operand memori.
Group 4 PTIK 09
11. 3.17.2 Mode Pengalamatan IA-32
11
Arsitektur IA-32 memi bliki set mode
pengalamatan yang besar dan fleksibel. Mode
tersebut didesain untuk mengakses item data
individu atau item data yang merupakan anggota
dari list yang berurutan mulai pada alamat memori
terentu. Set lengkap mode pengalamatan IA-32
didefeniskan sebagai berikut:
Group 4 PTIK 09
12. 12
- Mode Immediate - operandnya disertakan
dalaminstruksi. Operand tersebut adalah
bilangan 8-bit atau 32-bit bertanda, dengan
panjang ditetapkan oleh suatu bit dalam OP
code instruksi.
- Mode Direct - alamat memori operand
dinyatakandengan nilai 32-bit dalam instruksi
terebut.
Group 4 PTIK 09
13. 13
- Mode Register - operand disertakan dalam salah
satu dari delapan general-purpose register yang
ditetapkan dalam instruksi.
- Mode Register Indirect - alamat memori operand
disertakan dalam salah satu dari delapan general-
purpose register yang ditetapkan dalam instruksi.
Group 4 PTIK 09
14. 14
- Mode Base with displacement - displacement 8-
bit atau 32-bit bertanda dan salah satu dari
delapan general-purpose register untuk
digunakan sebagai base register ditetapkan
dalam instruksi.
- Mode Index with diplecement - diplecement
bertanda 32-bit, salah satu dari delapan general-
purpose register untuk digunakan sebagai index
register, dan faktor skala 1, 2, 4, atau 8
ditetapkan dalam instruksi.
Group 4 PTIK 09
15. 15
- Mode Base with index - dua dari delapan genera-
purpose register dan faktor skala 1, 2, 4, atau 8
ditetapkan dalam instruksi.
- Mode Base with index and diplecement -
diplecement 8-bit atau 32-bit bertanda, dua dari
delapan register general-purpose dan faktor skala
1, 2, 4, atau8 ditetapkan dalam instruksi.
Group 4 PTIK 09
16. 3.18 Instruksi IA-32
16
Set instruksi IA-32 adalah eksensif. Instruksi
tersebut di-encode dalam format instruksi variabl-
length yang tidak memilik layout regular
sepenuhnya. Kebanyakaninstruksi IA-32 memilki
satu atau dua operand. Dalam satu atau dua
operand, hanya satu operand yang berada dalam
memori. Operand lain harus berada dalam
registerprosesor. Selain instruksi untu
memindahkan data antara memori dan register
prosesor, dan melakukan operasi aritmatika, set
instruksi menyertakan sejumlah operasi logika da
pergesera/rotasi yang berbeda pada data.
Group 4 PTIK 09
17. 3.19 Bahasa Assembly
17
Aspek dasar bahasa assembly IA-32
untuk menetapkan OP code, mode
pengalamatan, dan label alamat instruksi yang
diilustrasikan oleh program. Assembler directive
diperluka untuk mendefinisikan area data suatu
program dan untuk mendefinisikan hubungan
antara nama simbolik lokasi data dan nilai alamat
fisik aktual.
Group 4 PTIK 09
18. 3.20 Kontrol Aliran Program
18
Terdapat dua cara utama untuk
menvariasi aliran eksekusi instruksi dari straight-
line sequencing. Panggilan ke subroutine dan
kembali dari subroutine tersebut memutuskan
straight-line sequencing, juga gangguan instruksi
branch, baik conditional maupun
unconditional, dapat menyebabkan suatu break.
Group 4 PTIK 09
19. 3.21 Instruksi Logic dan Shift/Rotate
19
3.21.1 Operasi Logika
Arsitektur IA-32memiliki instruksi yang
menjalankan operasi logika AND, OR, dan XOR. Operasi
tersebut dijalankan bitwise pada dua operand, dan
hasilnya ditempatkan pada lokasi destinasi.
3.21.2 Operasi Pergeseran dan Rotasi
Suatu operand dapat digeser ke kiri atau ke kanan
dengan sejumlah posisi bit ditetapkan dengan count
tertentu. Terdapat empat instruksi shift yaitu:
SHL, SHR, SAL, SAR.
Group 4 PTIK 09
20. 3.22 Operasi I/O
20
3.22.1 Memory-Mapped I/O
Regiser buffer perangkat input/output
merupakan yang paling umum diakses dalam
computer modern oleh metode memory-mapped
I/O. instruksi Move IA-32 dapat digunakan untuk
mentransfer directive ke perangkat I/O, dan untuk
mentransfer informasi status dan data ke dan dari
perangkat.
Group 4 PTIK 09
21. 3.22.2 I/O Terisolasi
21
Set instruksi IA-32 juga memiliki dua
instruksi, dengan OP code IN dan OUT, yang
hanya digunakan untuk tujuan I/O. alamat yang
dinyatakan dalam instruksi tersebut berada dalam
ruang alamat yang terpisah dari ruang alamat
memori yang digunakan oleh instruksi
lain.pengaturan ini diebut isolated I/O utuk
membedakanya dari memori-mapped I/O dimana
lokasi addressable dalam perangkat I/O berada
dalam ruang alamat yang sama dengan lokasi
memori.
Group 4 PTIK 09
22. 3.22.3 Transfer Blok
22
Arsitektur IA-32 juga memiliki dua blok
instruksi transfer I/O ; REPINSD dan REPOUTS.
Instruksi tersebut mentransfer suatu blok item
data secara serial,satu item pada satu
waktu, antara memori dan perangkat I/O.
Group 4 PTIK 09
23. 3.23 Subroutine
23
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. Sangat
dimungkinkan untuk menyertakan blok instruksi yang terdiri dari
subroutine pada setiap tempat yang memerlukan program tersebut.
Akan tetapi untuk menghemat ruang, hanya satu copy dari instruksi
yang merupakan subroutine ditempatkan dalam memori, tiap
program yang perlu menggunakan subroutine tersebut hanya perlu
branch ke lokasi mulainya. Pada saat sualu program branch ke
suatu subroutine kita katakan program tersebut memanggil
subroutine. Instruksi yang melakukan operasi branch ini disebut
instruksi Call. Setelah subroutine dieksekusi, calling program hams
mcresume eksekusi, melanjutkan dengan segera setelah instruksi
yang memanggil subroutine tersebut. Subroutine kembali ke
program yang memanggilnya dengan mengeksekusi instruksi
Return.
Group 4 PTIK 09