Assembly | ADD, MOVE, JMP, CLR, RET, RJMP, RCALL, RUTIN CEK, Operasi Aritmatika transfer data
Instruksi
|
Arti
|
contoh
|
LDI Rd,K RD = K .d=16-31. K = 0-255
|
Artinya copy data 8 bit ke GPR (hanya R16~R31).
|
LDI R16, 0xf
LDI R31,8 //desimal 8 |
ADD Rd,Rr
|
Rd = Rd + Rr
| |
LDS Rd,K(LoaD direct to data Space)Rd = isi alamat K , d = 0~31 K = 0~FFFF
|
Copy isi alamat K ke RD
|
LDS R20,0×1.copy alamat 0×0001 (R1) ke R20.
|
STS K, Rr(Store direct To data Space)
|
Mengcopy isi register Rr ke lokasi memory K
|
1) STS 0×1 ,R10copy isi R10 ke alamat 0×0001 (R1).2) LDI R16,0×55
STS 0×38,R16 // 0×38(PortB) = 0×55 |
IN Rd,A
|
isi GPR dgn memori relatif SFR
|
IN R20,0×16 (PINB=mem adress 0×36, relatif adress 0×16)
artinya isi R20 = PINB untuk instruksi IN lebih baik ganti “A” dgn nama jadi IN R20,0×16 sama dengan IN R20 ,PINB |
OUT A,Rr
|
isi reg i/o dengan Rr
|
Out PORTD,R10
|
JMP
|
spt goto bahasa C
|
lagi : IN R16, PINB
OUT PORTC,R16 JMP lagi |
MOV
|
Mengcopy data di antara register GPR
|
MOV R10, R20
|
Instruksi Operasi Aritmatika
Contoh :
| ||
ADD
|
Menambahkan isi dua register.
|
add r15,r14 ; r15=r15+r14
|
ADC
|
Menambahkan isi dua register dan isi carry flag
|
adc r15,r14 ; r15=r15+r14+C
|
SUB
|
Mengurangi isi dua register.
|
sub r19,r14 ; r19=r19-r14
|
MUL
|
Mengalikan
dua register. Perkalian 8 bit dengan 8 bit menghasilkan bilangan 16
bit yang disimpan di r0untuk byte rendah dan di r1 untuk byte tinggi.
Untuk memindahkan bilangan 16 bit antar register registerdigunakan
instruksi movw (copy register word)
|
mul r21,r20 ; r1:r0=r21*r20
|
Instruksi Logika
Instruksi
|
Arti
|
Contoh
|
AND Rm,Rn
|
Rm=Rm & Rn
|
AND Rr23,R27
|
ANDI Rn,kontanta
|
Rn=Rn & konstanta
|
ANDI R25,0b11110000
|
OR
|
R18 = R18 OR R17
|
OR R18, R17
|
ORI
|
Rn = Rn OR konstanta
|
ori r15,0xfe
|
INC
|
Rn = Rn + 1
|
INC R16
|
DEC
|
Rn = Rn – 1
|
DEC R16
|
CLR
|
Rn = 0
|
CLR R15 ; R15=0×00
|
SER
|
Rn=0xFFh
|
SER R16 ; r16=0xff
|
Instruksi I/O
Instruksi
|
Arti
|
Contoh
|
IN
|
membaca data I/O port ke dalam register
|
IN R16,PinA
|
OUT
|
menulis data register ke I/O port
|
OUT PortA,R16
|
LDI(load immediate)
|
menulis konstanta ke register sebelum konstanta tersebut
|
LDI R16,0xFF
|
SBI(set bit in I/O)
|
membuat logika high pada sebuah bit I/O port
|
SBI PortB,7
|
CBI(clear bit in I/O)
|
membuat logika low pada sebuah bit I/O port
|
CBI PortB,5
|
SBIC(skip if bit in I/O is clear)
|
lompati satu instruksi jika bit I/O port dalam kondisi clear/low
|
SBIC PortA,3
|
SBIS(skip if bit in I/O is set)
|
lompati satu instruksi jika bit I/O port dalam kondisi set/high
|
SBIS PortB,3
|
Operasi Percabangan
Instruksi Percabangan
istruksi
|
arti
|
contoh
|
Sbic (skip if bit in I/O is leared)
|
Skip jika bit I/O yang diuji clear
|
SBIC PINB,0; Skip if Bit 0 on port B is 0
RJMP ATarget ; Jump to the label ATarget |
Sbis (skip if bit in I/O is set)
|
Skip jika bit I/O yang diuji set
| |
sbrc (skip if bit in register is lear)
|
Skip jika bit dalam register yang diuji clear
| |
cp (compare)
|
Membandingkan isi dua register
|
cp r16,r18 ;brne lompat ;(menuju lompat jika r16=r18)
|
cpi (compare with immediate)
|
Membandingakan isi register dengan konstanta tertentu
|
cpi r16,5 ; r16=5 ?breq lagi ;(menuju lagi jika r16 = 5
|
breq (branch if equal)
|
Lompat ke label tertentu jika suatu hasil perbandingan adalah sama
| |
brne (branch if not equal)
|
Lompat ke label tertentu jika suatu hasil perbandingan adalah tidaksama
| |
rjmp (relative jump)
|
Lompat ke label tertentu
| |
rcall (relative call)
|
Memanggil subrutin.
| |
ret (return)
|
Keluar dari sub rutin.
| |
CPSE(ComPare Skip if Equal)
|
Compare R1 and R2, skip if equal
|
CPSE R1,R2
|
Tidak ada komentar:
Posting Komentar