IKI10230 Pengantar Organisasi Komputer Kuliah no

Slides:



Advertisements
Presentasi serupa
Pemrograman Terstruktur
Advertisements

Struktur CPU Delta Ardy Prima, S.ST.
Basic I/O Operations and Processing Unit
PENGANTAR TEKNOLOGI INFORMASI (A)
Struktur CPU.
Struktur CPU Organisasi Komputer TATA SUMITRA M.KOM HP
BAB IV MODE PENGALAMATAN
Mikrokontroller Berbasiskan RISC 32 bits
Mikrokontroller Berbasiskan RISC 8 bits
1 IKI10230 Pengantar Organisasi Komputer Kuliah no. A4: Bahasa Rakitan AVR Conditional & Branch Instructions 21 Maret 2003 Bobby Nazief
Set-Set Instruksi MCS-51 (Pendahuluan)
Arsitektur Komputer “Instruksi Set Arsitektur”
Mode Pengalamatan.
Chapter 20 Pembentukan Kode.
Pertemuan ke - 5 Struktur CPU
Pertemuan 3 Arsitektur Komputer II
© 2009 Fakultas Teknologi Informasi Universitas Budi Luhur Jl. Ciledug Raya Petukangan Utara Jakarta Selatan Website:
Organisasi dan Arsitektur Komputer
IKI10230 Pengantar Organisasi Komputer Solusi UTS
Struktur CPU By Serdiwansyah N. A..
Situasi Saat Program Berjalan (Run-time Environment)
1 IKI10230 Pengantar Organisasi Komputer Kuliah no. A1: AVR Assembler & Studio 28 Februari 2003 Bobby Nazief Qonita Shahab
ARSITEKTUR SET INSTRUKSI
BAB III RAM Internal pada MCS-51
IKI20210 Pengantar Organisasi Komputer Kuliah Minggu ke-5a: Prosesor
ARSITEKTUR SET INSTRUKSI
SEJARAH KOMPUTER GENERASI PERTAMA TABUNG VAKUM ENIAC
Organisasi dan Arsitektur Komputer
ORGANISASI KOMPUTER Mode Pengalamatan 10-Apr-17.
ADDRESSING MODE (PENGALAMATAN DATA).
1 IKI10230 Pengantar Organisasi Komputer Kuliah no. A5: Bahasa Rakitan AVR Stacks & SubRoutine Calls 28 Maret 2003 Bobby Nazief Qonita.
WISNU HENDRO MARTONO,M.Sc
ARSITEKTUR SET INSTRUKSI
Processing Unit Operations 2
10. Set Intruksi : Karakteristik dan Fungsi
SET INSTRUKSI.
LOKASI DAN OPERASI MEMORI
Prosesor RISC dan CISC.
1 IKI10230 Pengantar Organisasi Komputer Kuliah no. A3: Bahasa Rakitan AVR Arithmetic & Logic Instructions 14 Maret 2003 Bobby Nazief
ORGANISASI & ARSITEKTUR KOMPUTER 2 STRUKTUR & FUNGSI CPU IBP WIDJA, MT
Arsitektur Komputer CISC dan RISC
Pertemuan 4 (Set Instruksi ARM)
Reduced Instruction Set Computers
Central Processing Unit
Pengenalan Assembler.
ARSITEKTUR SET INSTRUKSI
Set Instruksi:.
Pertemuan 3 (Bahasa Assembly)
MODE PENGALAMATAN DAN SET INSTRUKSI
SISTEM MIKROPROSESOR PERTEMUAN 4.
Matakuliah : H0162/ Mikroprosesor Tahun : 2006 Versi : 1/0
ARSITEKTUR SET INSTRUKSI
Struktur CPU.
ORGANISASI & ARSITEKTUR KOMPUTER 2 SET INSTRUKSI IBP WIDJA, MT
ARSITEKTUR KOMPUTER.
Pengenalan Assembler.
Set Instruksi:.
William Stallings Computer Organization and Architecture
Reduced Instruction Set Computers
Computer Organization and Architecture
ARSITEKTUR SET INSTRUKSI
Organisasi dan Arsitektur Komputer
IDENTIFIKASI TREND CONTOH
ARSITEKTUR SET INSTRUKSI
BAB VII MIKROKONTROLLER
Memori & Pemrograman MCS-51
Struktur CPU.
Arsitektur Komputer Pertemuan - 1 Oleh : Tim Pengajar.
ARSITEKTUR SET INSTRUKSI
Karakteristik Set Instruksi 14 JP. Karakteristik Set Instruksi Pengertian Set Instruksi Set instruksi adalah kumpulan dari instruksi yang dapat dijalankan.
Transcript presentasi:

IKI10230 Pengantar Organisasi Komputer Kuliah no IKI10230 Pengantar Organisasi Komputer Kuliah no. A2: Bahasa Rakitan AVR Data Transfer Instructions Sumber: 1. AVR AT90S8515 Data Sheet. 2. Materi kuliah CS152, th. 1997, UCB. 7 Maret 2003 Bobby Nazief (nazief@cs.ui.ac.id) Qonita Shahab (niet@cs.ui.ac.id) bahan kuliah: http://www.cs.ui.ac.id/~iki10230/

Why RISC? Reduced Instruction Set Computing (RISC) Hanya terbatas jenis/jumlah instruksi untuk operasi dasar Arithmetic, load/store, branches and jumps Instruksi umum dan sering digunakan: sederhana dan cepat make common case: simple and fast

Why AVR 8-bit RISC RISC: kinerja (performance) komputer meningkat Pilihan teknologi rancangan prosesor modern (PowerPC, Sun Sparc, MIPS dll) Fast with reduced complexity! Atmel AVR 8-bit RISC Sederhana (bentuk minimalis dari RISC): mudah dipelajari ! Target operasi: microcontroller (embedded systems) Berbagai aplikasi dan peralatan elektronis (ponsel, home appliances, mobil, dll) Controller untuk pabrik, proses kimia, mesin dll. “Vast opportunity”: karir, wira-usaha dll. (more embedded computers than PCs!!!) Why not X86 (Intel, mikroprosesor paling populer) Terlalu rumit (complex): operasi beragam dan sangat banyak variasinya Akses langsung ke register di PC kita? 

Arsitektur AVR AT90S8515

AVR Registers (1/3) Register AVR disebut “general purpose” Semua register tersambung langsung ke ALU  dua register dapat diakses dengan satu instruksi dalam satu clock cycle Semua register seragam sebagai variabel operand Data akses dari dan ke memori dilakukan melalui register dengan instruksi load dan store Semua register dapat digunakan untuk “load” data dari memori, tempat operasi dilakukan, dan “store” data ke memori Karakteristik register AVR: Menyimpan 1 word adalah 8 bit (1 byte) Terdapat 32 Register Konvensi penamaan: R0 …. R31 (supaya mudah di-ingat/ kode)

AVR Registers (2/3) PC SP

AVR Registers (3/3) “pointer registers” addressing 16 bit untuk menunjuk ke lokasi di SRAM (X,Y,Z) atau di program memory (Z)

Set Instruksi AVR Instruksi dapat dikelompokkan sesuai dengan fungsi: Transfer Data (31) Aritmatika & Logika (22) Bit & Bit-Test (31) Pencabangan (Branch) (34) Instruksi diusahakan reguler (mengikuti format yang baku): hanya 6 jenis format OP d 4 16 r 9 Rr/Rd 20 31 16 LSBs P 5 n 10 q k 11 I II III IV V VI

Set Instruksi AVR: Rangkuman

Contoh Program AVR Assembly: ;asumsi register Z menunjuk ke var. i ;register Y, menunjuk ke var. j ---- ld R1, Z ; R1 berisi var. i ld R2, Y ; R2 berisi var. Y cpi i, 0 ; compare i dengan 0 breq TEST ; if Z flag set then branch TEST add R1,R2 ; i = i + j jmp EXIT ; unconditional jump; skip TEST: ldi R1, 50 ; i = 50 EXIT: …………

Instruksi: Data Transfer

Assembly Operands: Memory Variabel HLL disimpan pada register; Bagaimana struktur data yang besar, mis. array? Remember: memory (salah satu komponen utama komputer) dapat menyimpan data yang besar Tapi instruksi arithmetik AVR hanya beroperasi pada register (sebagai operand), tidak dapat langsung pada memory Instruksi Data Transfer memindahkan/transfer data antara register dan memory: Memory ke register (sering disebut “load”) Register ke memory (sering disebut “store”)

Effective Address pada Instruksi AVR Tanpa Effective Address: Register: MOV Rd, Rr ; Rd  Rr Immediate: LDI Rd, K8 ; Rd  K8, 16 <= d <= 31 Dengan Effective Address: Absolute/Direct: LDS Rd, k ; Rd  M[k] Indirect: LD Rd, X ; Rd  M[X] LD Rd, X+ ; Rd  M[X], X  X + 1 LD Rd, -X ; X  X – 1, Rd  M[X] Index/Indirect with Displacement LDD Rd, Y+q6 ; Rd  M[Y + q6] STD Y+q6, Rr ; M[Y + q6]  Rr

Data Transfer: Memory to Register Untuk melakukan transfer satu word data pada AVR, kita harus menentukan dua hal, yakni: Register: tentukan register yang mana (dari R0 s/d R31) Alamat Memori (memory address) => lokasi di memori Memori: Dapat dilihat sebagai array satu dimensi, dan kita mendapatkan lokasi memori dengan melakukan indexing pada array tersebut => dikenal istilah pointer Dengan model pointer (indexing) maka kita dapat mengakses lokasi tersebut berdasarkan posisi pointer tersebut Misalkan menaikkan atau menurunkan pointer tersebut Sering disebut “indirect”.

Load Instruction AVR instruksi Load Indirect: Contoh: 1 2,3 dimana 1 2,3 dimana (1) nama operasi (mis. LD) (2) register yang akan menerima data (mis. R1) (3) register set menyimpan pointer ke memori (X, Y, Z) Contoh: LD R1, X (load satu word ke R1 dari lokasi memori yang ditunjuk oleh register X)

Example: Load Indirect LD R1, X 16 bit pointer 178 X-register R27 R26 178 1200 R1 Alamat memori Instruksi ini akan mengambil pointer pada X-register dan load isi dari memori yang ditunjuk oleh pointer tersebut

Data Transfer: Register to Memory Kita ingin menyimpan nilai dari register ke memori: instruksi Store Instruksi Store identik dengan sintaks instruksi Load Nama Instruksi AVR: st (singkatan Store), dengan argumen pertama pointer register (X, Y, Z) dan argumen kedua register (data) yang akan disimpan (Rr) st X, R1 ; (X) = Rr Contoh di atas diasumsikan data berada pada R1, dan lokasi memori yang akan disimpan ditunjuk oleh pointer register X

Example: Store Indirect st X, R1 ; (X) = R1 16 bit pointer 299 X-register R27 R26 299 1900 R1 Alamat memori Instruksi ini akan mengambil pointer pada X-register dan store nilai R1 ke lokasi memori yang ditunjuk oleh pointer tersebut

Load Immediates “Immediates” adalah konstan (bilangan) Lihat definisi: Hamacher (bab 2.4: Addressing modes) Penggunaan konstan sangat diperlukan dalam penulisan program Misalkan inisialisasi variabel dengan nilai konstan 0; Diperlukan instruksi khusus untuk konstan tersebut: ldi (Load Immediates) mengisi register dengan suatu konstan: ldi Rd, K ; AVR: Rd = K Load konstan “K” (0 s/d 255) ke register Rd Contoh: ldi R16, 25 ; load R16 dengan bil. desimal 25

Contoh Program Load - Store ldi R16,1 ;memasukkan angka 1 ke dalam R16 st X,R16 ;menyimpan angka tsb ke dalam memori yg ;ditunjuk oleh X clr R16 ;hapus isi R16 ld R16,X ;mengembalikan isi R16 dengan mengambilnya ;dari memori yg ditunjuk oleh X

Load Program Memory (1/2) Load Program Memory (LPM) diperlukan untuk mengakses data yang dialokasikan di awal program (dengan directive .DB) Misalnya: menyimpan sebuah string untuk kemudian diakses dalam eksekusi program Pengaksesan data tersebut: ‘ditunjuk’ oleh pointer, yaitu register X, Y, Z Tetapi fungsi LPM hanya mengambil data yang ditunjuk oleh register Z, langkah-langkahnya: program ‘menunjuk’ data tersebut dengan menggunakan register Z LPM mengambil data itu dan meletakkannya di R0 program membaca isi R0  berisi data tersebut

Load Program Memory (2/2) LDI ZH,high(DATA*2) LDI ZL,low(DATA*2) LPM ;data yg ditunjuk oleh Z disimpan di R0 ;R0 sekarang berisi byte pertama dari DATA ADIW ZL,1 ;melangkah 1 word ke address berikut LPM ;data yg ditunjuk oleh Z disimpan di R0 ;R0 sekarang berisi byte kedua dari DATA ;ADIW dst sebanyak jumlah byte DATA ;Z menunjuk ke memori ;yang berisi data Asumsi DATA berisi angka 100 Bisakah hal di bawah ini dilakukan?: LDI ZH,high(100) LDI ZL,low(100)

Contoh Program LPM (1/3) MYCODE: .DB "AB“ ;data berisi string “AB” = 2 bytes rjmp main main: ldi ZH,high(MYCODE*2) ldi ZL,low(MYCODE*2) lpm ;memindah byte pertama data ke R0 mov R16,R0 ;simpan ke R16, maka isi R16 adalah 0x41, yaitu ;nilai ASCII dari huruf A (65) adiw ZL,1 ;increment ke byte berikutnya lpm ;memindah byte kedua data ke R0 mov R17,R0 ;simpan ke R17, maka isi R17 adalah 0x42, yaitu ;nilai ASCII dari huruf B (66) ;Z menunjuk ke memori ;yang berisi data

Contoh Program LPM (2/3) MYCODE: .DB 10, 20 ;data berisi 2 bytes, tiap bytes ;berisi angka (max: 8 bit = 255) rjmp main main: ldi ZH,high(MYCODE*2) ldi ZL,low(MYCODE*2) lpm ;memindah byte pertama data ke R0 mov R16,R0 ;simpan ke R16, maka isi R16 adalah 0x0A, yaitu ;nilai hex dari angka 10 adiw ZL,1 ;increment ke byte berikutnya lpm ;memindah byte kedua data ke R0 mov R17,R0 ;simpan ke R17, maka isi R17 adalah 0x14, yaitu ;nilai hex dari angka 20 ;Z menunjuk ke memori ;yang berisi data

Contoh Program LPM (3/3) Jika register X yang digunakan ldi XH,high(MYCODE*2) ldi XL,low(MYCODE*2) mov ZH,XH mov ZL,XL lpm mov R16,R0 ;X menunjuk ke memori ;yang berisi data ;data harus di-copy ke Z ;supaya bisa di-load Jika data dalam .DB jumlah byte-nya tidak genap, apa yang terjadi? (hint: memory addressing) Mengapa harus dilakukan hal di bawah ini? (hint: word) LDI ZH,high(DATA*2) LDI ZL,low(DATA*2)

Referensi AVR Assembler User Guide http://www.avr-asm-tutorial.net AVR AT90S8515 Data Sheets