Senin, 20 Februari 2012

Instruksi Logika Perintah bahasa Assembler 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

1. "Blog ini Do Follow, silakan post untuk mendapatkan Backlink"
2. "Anda Follow, pasti saya Followback"
3. "Kalau mau Copy-Paste artikel boleh saja, tapi sumbernya ke blog ini"
4. "Terima Kasih Lagi . . . !!!"

Komentar Anda Sangat Kami Harapkan Untuk Kemajuan Blog Ini. isikan komentar anda disini !