Pengantar Organisasi Komputer - PowerPoint PPT Presentation

1 / 21
About This Presentation
Title:

Pengantar Organisasi Komputer

Description:

2. Materi kuliah COMP1300/2300 UQ. 2. Warming Up (1/3) ... Berapakah lama delay dalam potongan program di bawah ini? DELAY: ldi R18, 255. LOOP3: ... – PowerPoint PPT presentation

Number of Views:177
Avg rating:3.0/5.0
Slides: 22
Provided by: bobbyn4
Category:

less

Transcript and Presenter's Notes

Title: Pengantar Organisasi Komputer


1
IKI10230Pengantar Organisasi KomputerKuliah no.
A8 Bahasa Rakitan AVRLatihan
Sumber1. AVR AT90S8515 Data Sheet.2. Materi
kuliah COMP1300/2300 UQ
23 Mei 2003 Bobby Nazief (nazief_at_cs.ui.ac.id)Qoni
ta Shahab (niet_at_cs.ui.ac.id) bahan kuliah
http//www.cs.ui.ac.id/iki10230/
2
Warming Up (1/3)
  • Tuliskan instruksi AVR yang melakukan hal-hal di
    bawah ini
  • increment register 5
  • inc r5
  • load nilai 24 ke dalam register 17
  • ldi r17, 24
  • atau
  • ldi r17, 18 (notasi hexadecimal)
  • logical AND register 23 dan register 5, kemudian
    menyimpan hasilnya di register 5
  • and r5, r23

3
Warming Up (2/3)
  • set bit-bit dalam register 18 menjadi 1 semua
  • ldi r18, 255
  • atau
  • ser r18
  • set bit-bit dalam register 18 menjadi 0 semua
  • ldi r18,0
  • atau
  • clr r18
  • negasikan register 10
  • neg r10

4
Warming Up (3/3)
  • invert isi register 10
  • com r10
  • pindahkan (copy) isi register 3 ke register 4
  • mov r4, r3
  • set direction utk IO pada port B menjadi output
  • ser r16
  • out DDRB, r16
  • baca isi IO port C untuk disimpan di register 20
  • in r20, PINC
  • tulis isi register 21 ke IO port B
  • out PORTB, r21

5
  • Data Transfer, Arithmetics, Branch

6
Soal 1
  • Jika isi register 17 lebih besar daripada 75
    (decimal), tukarlah isi register 3 register 4
    (jika sebaliknya, do nothing)

.def temp r16 ldi temp, 75 cp temp, r17
brlt swap rjmp continue otherwise, do
nothing swap mov temp, r3 mov r3, r4 mov
r4, temp continue program would
continue here
7
Soal 1 contoh jawaban lain
  • .def temp r16
  • cpi r17,75
  • brlt continue use brlo for unsigned
  • breq continue
  • if we get here, r17 gt 75
  • code to swap r3 and r4 follows
  • mov temp, r3
  • mov r3, r4
  • mov r4, temp
  • continue
  • program would continue here
  • What about brge?

8
Soal 2
  • Tentukan apakah nilai yang disimpan dalam memory
    dengan alamat 100 adalah nilai ASCII untuk huruf
    A (65)

.def temp r16 ldi XH, high(100) could say
clr XH ldi XL, low(100) could say ldi XL,
100 ld temp, X read memory cpi temp, 65
compare with 65 breq matchesA equal go
somewhere matchesA nyatakan bahwa memang
benar isinya huruf A
9
Soal 3
  • Clear (set menjadi 0) isi memory dengan alamat
    128 s.d. 191.

.def temp r16 ldi XH, high(128) could say
clr XH ldi XL, low(128) could say ldi XL, 128
clr temp store 0 in temp loop st X,
temp write temp(0) out now need to check
if loop is finished cpi XL, 192 brne loop
continue here when finished
10
  • Stacks, Subroutines

11
Soal 1 (a)
  • Buatlah sebuah procedure (subroutine) yg
    melakukan pertukaran isi register r3 dan r4.
    Tidak boleh ada isi register apapun yg
    diubah-ubah, kecuali r5. Tulis kodenya dengan
    menunjukkan pemanggilan subroutine-nya.

main rcall swap use push pop of
stack swap push r5 only r5 used, no
others mov r5,r3 mov r3,r4 mov r4,r5 pop
r5 ret its a procedure/subroutine, then return
12
Soal 1 (b)
  • Bagaimana jika benar-benar tidak ada register
    lain yang boleh digunakan (r5 juga tidak boleh)?

main rcall swap use push pop of
stack swap push r3 stores r3 value on
stack mov r3,r4 puts r4 value into r3 pop r4
puts original r3 val into r4 ret its a
procedure/subroutine, then return
13
Soal 1 (b) contoh jawaban lain
  • Untuk menukarkan isi dari dua register, kita
    dapat menggunakan 3 kali instruksi eor (exclusive
    OR).

main rcall swap use push pop of
stack swap eor r3,r4 eor r4,r3 eor
r3,r4 ret its a procedure/subroutine, then
return
14
  • I/O, Interrupts

15
Soal 1 (a)
  • Buatlah sebuah ISR (interrupt service routine)
    yang membaca isi PORTB dan mengeluarkan nilai
    PORTB itu ke PORTC. Interrupt ini bekerja pada
    INT1.

.def temp r16 EXT_INT1 in temp,PINB read
the data out PORTC,temp output the data reti
return from int
16
Soal 1 (b)
  • Bagaimana jika dalam ISR ingin juga dilakukan
    sebuah operasi arithmetic yang kemungkinan
    menghasilkan Carry atau Zero flag? Hint di dalam
    status register juga ada interrupt flag!

.def temp r16 EXT_INT1 in temp,SREG get
the status reg. push temp save the sreg
value in temp,PINB read port B ... ...do
some arithmetics operation out PORTC,temp
output the data pop temp retrieve sreg
value out SREG,temp restore the sreg reti
return from interrupt
17
  • Miscellaneous

18
Macro
  • Buatlah sebuah macro yg menukar isi r3 dan r4.

.macro swap34 push r3 Save old r3 mov r3,
r4 Copy old r4 to r3 pop r4 Old r3 to r4
.endmacro
  • Bagaimana pemanggilannya di dalam program?

ldi r16, 33 mov r3, r16 Give distinct value
ldi r16, 44 mov r4, r16 Similarly r4
swap34 Call the macro
19
Delay
  • Berapakah lama delay dalam potongan program di
    bawah ini?

DELAY ldi R18, 255 LOOP3 ldi R19,
255 LOOP4 dec R19 brne LOOP4 dec R18 brn
e LOOP3
256 256 65536. 1 instruksi 0.25 microsecond
(utk 1 MHz) 65536/4 16384 microsecond 16.384
milisecond
20
Persiapan UAS Tugas 5
  • Buatlah sebuah procedure (big subroutine) yang
    menghitung powers of 2 (pangkat 2) secara
    rekursif. Prosedur ini dapat menerima argumen di
    r0 (nilai 0 s.d. 7) dan memberikan jawaban (2r0)
    di register r1.
  • Buat versi loop dari pertanyaan di atas.
  • Buatlah sebuah procedure yang mengkalkulasi nth
    Fibonacci fib(n) secara rekursif, dimana fib(n)
    fib(n-1) fib(n-2) dan fib(1) fib(2) 1
    (urutannya 1,1,2,3,5,8,13,21,34,). Argumen n
    diakses di register r0 dan hasilnya disimpan di
    register r1. Asumsi hasil kalkulasi maksimal
    tidak melebihi 255.

21
  • Selamat belajar ?
Write a Comment
User Comments (0)
About PowerShow.com