manba kodi talablari
Kompilyator ko'rsatmalar, teglar va direktivalarni o'z ichiga olgan manba fayllari bilan ishlaydi. Ko'rsatmalar va ko'rsatmalar odatda bir yoki bir nechta operandlarga ega.
Kod qatori 120 belgidan oshmasligi kerak. Har
qanday satr yorliq bilan boshlanishi mumkin, bu ikki nuqta bilan tugaydigan belgilar to'plamidir. teglar ishlatiladi
o'tish paytida boshqaruv o'tkaziladigan joyni ko'rsatish, shuningdek o'zgaruvchilar nomlarini ko'rsatish.
Kirish satri to'rtta shakldan birini olishi mumkin:
[label:] direktiva [operandlar] [Izoh] [label:] ko'rsatma [operandlar] [Izoh] [;Izoh] Bo'sh qator
Sharh quyidagi shaklga ega: ; [Matn]
Kvadrat qavs ichidagi pozitsiyalar ixtiyoriy. Nuqtali verguldan (;) keyin va satr oxirigacha bo'lgan matn kompilyator tomonidan e'tiborga olinmaydi. Yorliqlar, ko'rsatmalar va ko'rsatmalar quyida batafsilroq tavsiflanadi.
Misollar:
label: .EQU var1=10 ; Var1 ni 10 ga o'rnatadi (bu ko'rsatma)
.EQU var2=200 ; var2 dan 200 gacha testlarni o'rnatadi: rjmptest; Infinite Loop (Bu ko'rsatma); Faqat bitta
izohli qator
; Izoh bilan boshqa qator
Kompilyator qatorning ma'lum bir ustunida yorliqlar, direktivalar, sharhlar yoki ko'rsatmalarni topishni talab qilmaydi. AVR protsessor
bo'yicha ko'rsatmalar
Quyida AVR protsessorlari uchun buyruqlar to'plami keltirilgan, ularning batafsil tavsifini rasmiy veb-saytdagi assembler tavsifida topish mumkin (ingliz tilida, ma'lumotlar yangilanmoqda) [1].
o'ttiz
Arifmetik va mantiqiy ko'rsatmalar
MnemonicOperands tavsifi yig'indisi
Operatsiya
Bayroqlar sikllari
Rd, Rr qo'shing
ADC Rd, Rr
yuk tashish yig'indisi yo'q
transfer bilan
Tashishsiz
Rd = Rd + Rr Z,C,N,V,H,S 1
Rd = Rd + Rr + CZ,C,N,V,H,S 1
SUB
SUBI
SBC
Rd, Rr
Rd, K8
Rd, Rr
ayirish ayirish kon
stunts
Ayirish transfer bilan
Rd = Rd - Rr Z,C,N,V,H,S 1
Rd = Rd - K8 Z,C,N,V,H,S 1
Rd = Rd - Rr - CZ,C,N,V,H,S 1
ANDI ko'chasi, K8
Mantiqiy VA doimiy bilan
Rd=Rd^K8
Z, N, V, S
bitta
|
Ayirish
|
SBCI
|
Rd, K8
|
konstantalar Rd = Rd - K8 - CZ,C,N,V,H,S 1 transfer bilan
|
VA Rd, Rr
|
|
Mantiqiy VA Rd = Rd^Rr Z, N, V, S
|
bitta
YOKI
Rd,Rr Mantiqiy YOKI Rd = Rd V Rr
Mantiqiy OR
Z, N, V, S
bitta
ORI
EOR Rd, Rr
COM
NEG
SBR
Rd, K8
Rd
Rd
Rd, K8
doimiy bilan
Mantiqiy
eksklyuziv
YOKI
Bitta
inversiya Belgini o'zgartirish
(Qo'shimcha kod)
Beatni o'rnating (bitlar) registrdagi
registrdagi bit(lar)ni
Rd = Rd V K8 Z,N,V,S
Rd = Rd ÿ EOR Rr Z,N,V,S
Rd = $FF - Rd Z,C,N,V,S
Rd = $00 - Rd Z,C,N,V,H,S 1
Rd = RdV K8 Z,C,N,V,S
bitta
bitta
bitta
bitta
CBR Rd, K8
tiklash
Rd = Rd ^ ($FF -
K8)
Z, C, N, V, S
bitta
INC
DEC
TST
Rd oshirish
ro'yxatga olish qiymati
Rd Kamaytirish
ro'yxatga olish qiymati
Nolinchi tekshirish
Rd yoki salbiy ness
Rd = Rd + 1
Rd = Rd -1
Rd = Rd ^ Rd Z,C,N,V,S
Z, N, V, S
Z, N, V, S
bitta
bitta
bitta
MnemonicOperands tavsifi
Operatsiya
Bayroqlar sikllari
CLR
Rd Ro'yxatdan o'tishni tozalash
Rd = 0
Z, C, N, V, S
bitta
SER Rd
ADIW Rdl, K6
SBIW Rdl, K6
MUL Rd, Rr
MULS Rd, Rr
MULSU Rd, Rr
FMUL Rd, Rr
FMULS Rd, Rr
FMULSU Rd, Rr
O'rnatish
ro'yxatdan o'tish
katlama doimiy
va so'z
Ayirmoq doimiy
so'zdan
Raqamni ko'paytirish imzosiz
Raqamni ko'paytirish
imzolangan
Raqamni ko'paytirish
imzolangan
raqam bilan
imzosiz
Ishorasiz kasr sonlarni
ko'paytirish
kasrlarni ko'paytirish
imzolangan raqamlar
Kasrlarni ko'paytirish
imzolangan
imzosiz raqam bilan
Rd = $FF
Rdh:Rdl = Rdh: Rdl + K6
Rdh:Rdl = Rdh:Rdl - K 6
R1:R0 = Rd * Rr
R1:R0 = Rd * Rr
R1:R0 = Rd * Rr
R1:R0 = (Rd * Rr) << 1
R1:R0 = (Rd *Rr) << 1
R1:R0 = (Rd * Rr) << 1
Yo'q
Z, C, N, V, S
Z, C, N, V, S
Z, C
Z, C
Z, C
Z, C
Z, C
Z, C
bitta
2
2
2
2
2
2
2
2
Tarmoqqa oid ko'rsatmalar
RJMP
IJMP
EIJMP
JMP
k
Yo'q
Yo'q
k
o'tish
(Z) ga bilvosita o'tish
kengaytirilgan
(Z) ga bilvosita o'tish
O'tish
PC=PC+k+1
PC=Z
STACK=Kompyuter+1,
Kompyuter (15:0) = Z,
Kompyuter (21:16) =
EIND PC=k
Yo'q 2
Yo'q 2
Yo'q 2
Yo'q 3
Mnemonik operandlarning tavsifi
Qarindosh
Operatsiya
Bayroqlar sikllari
RCALL
MEN QO'NG'IROQ QILAMAN
EICALL
QO'NG'IROQ
k
Yo'q
Yo'q
k
qo'ng'iroq qiling
tartiblar
Bilvosita qo'ng'iroq (Z)
kengaytirilgan bilvosita
qo'ng'iroq (Z)
Qo'ng'iroq qiling
tartiblar
STACK=Kompyuter+1,
Kompyuter = PC + k + 1
STACK=Kompyuter+1,
PC=Z
STACK=Kompyuter+1, Kompyuter (15:0) = Z, Kompyuter (21:16) = EIND
STACK=Kompyuter+2,
PC=k
Yo'q
Yo'q
Yo'q
Yo'q
3/4*
3/4*
to'rt*
4/5*
RET
RETI
Yo'q
Yo'q
Pastki dasturdan qaytish
Interruptdan qaytish
Kompyuter = STACK Yo'q
PC=STAK I
4/5*
4/5*
CPSE
CP
Rd, Rr
Rd, Rr
Taqqoslang, agar teng bo'lsa, o'tkazib yuboring
Taqqoslash
agar (Rd ==Rr) PC =
Kompyuter 2 yoki 3
Rd-Rr
Yo'q
Z,C,N,V,H,S 1
1/2/3
CPC
CPI
Rd, Rr
Rd, K8
Qalam bilan solishtirish
burun
Doimiy bilan solishtiring
Rd - Rr - CZ,C,N,V,H,S 1
Rd - KZ,C,N,V,H,S 1
SBRC
Rr, b
Agar o'tkazib yuboring
= registrdagi bit
yoki 3 tozalandi
if(Rr(b)==0) Kompyuter
Kompyuter + 2
Yo'q
1/2/3
SBRS
SBIC
Rr, b
P, b
Agar o'tkazib yuboring
= registrdagi bit
yoki 3 o'rnatilgan
Agar o'tkazib yuboring portdagi bit
tozalandi
if(Rr(b)==1) Kompyuter
Kompyuter + 2
agar(I/O(P,b)==0)
Kompyuter = Kompyuter + 2 yoki 3
Yo'q
Yo'q
1/2/3
1/2/3
SBIS
BRBC
P, b
s,k
Agar o'tkazib yuboring portdagi bit o'rnatilgan
Agar sakrash
SREGdagi bayroq
tozalangan
agar(I/O(P,b)==1)
Kompyuter = Kompyuter + 2 yoki 3
agar(SREG(lar)==0)
Kompyuter = PC + k + 1
Yo'q
Yo'q
1/2/3
1/2
BRBS
s,k
Agar sakrash SREGda bayroq o'rnatilgan
agar(SREG(lar)==1)
Kompyuter = PC + k + 1
Yo'q
1/2
Mnemonik operandlarning tavsifi
Operatsiya
Bayroqlar sikllari
BREQ BRNE
BRCS
BRCC
BRSH
BRLO
BRMI
BRPL
k Agar sakrash teng
k Agar sakrash
teng emas
Agar sakrash
k o'rnatishlarni uzatish
zig'ir
k Agar sakrash transfer tozalandi
k Agar sakrash
teng yoki undan katta
k Agar sakrash
Kamroq
k Agar sakrash minus
k Agar sakrash
ortiqcha
agar(Z==1) PC = PC
+ k + 1
agar(Z==0) PC = PC
+ k + 1
agar(C==1) PC = PC
+ k + 1
agar(C==0) PC = PC
+ k + 1
if(C==0) PC = PC ga
+ k + 1
agar(C==1) PC = PC
+ k + 1
agar(N==1) PC = PC
+ k + 1
agar(N==0) PC = PC
+ k + 1
Yo'q
Yo'q
Yo'q
Yo'q
Yo'q
Yo'q
Yo'q
Yo'q
1/2
1/2
1/2
1/2
1/2
1/2
1/2
1/2
BRGE
Agar sakrash
k katta yoki teng
if(S==0) PC = PC dan
+ k + 1
Yo'q
1/2
(imzolangan) Agar o'tish
BRLT
k Kamroq
(imzolangan)
Agar sakrash
agar(S==1) PC = PC
+ k + 1
Yo'q
1/2
BRHS
k Kompyuterning ichki baify(Hro=g='i1) PC =
Yo'q
1/2
tashish to'plami
+ k + 1
BRHC
|
k
|
Agar sakrash
kompyuter bayrog'i tashish tozalandi
|
if(H==0) PC = ichki
+ k + 1
|
Yo'q
|
1/2
|
BRTS
|
k
|
Agar sakrash T
bayrog'i o'rnatiladi
|
agar(T==1) PC = PC
+ k + 1
|
Yo'q
|
1/2
|
BRTC
|
k
|
Agar sakrash
T belgisi tozalandi
|
agar(T==0) PC = PC
+ k + 1
|
Yo'q
|
1/2
|
BRVS
|
k
|
Agar sakrash
toshib ketgan bayroq
niya o'rnatildi
|
agar(V==1) PC = PC
+ k + 1
|
Yo'q
|
1/2
|
BRVC
|
k
|
Agar sakrash
toshib ketgan bayroq
tozalangan
|
agar(V==0) PC = PC
+ k + 1
|
Yo'q
|
1/2
|
Mnemonik operandlarning tavsifi
Operatsiya
Bayroqlar sikllari
BRIE
|
k
|
Agar sakrash
uzilishlar yoqilgan
|
agar(I==1) PC =
PC + k + 1
|
Yo'q
|
1/2
|
BRID
|
k
|
Agar sakrash uzilishlar o'chirilgan
|
agar(I==0) PC =
PC + k + 1
|
Yo'q
|
1/2
|
* Ma'lumotlarga kirish operatsiyalari uchun tsikllar soni ichki ma'lumotlar xotirasiga kirish
sharti bilan belgilanadi va tashqi ma'lumotlar bilan ishlashda to'g'ri emas.
RAM. CALL, ICALL, EICALL, RCALL, RET va RETI ko'rsatmalari uchun 16 bitdan (128 KB dastur xotirasi) kompyuterga ega bo'lgan kontrollerlarda har bir kutish uchun uchta sikl
qo'shilishi kerak va har bir kutish uchun ikkita sikl qo'shilishi kerak. Xotiraga ega qurilmalar uchun
128 KB dan ortiq dasturlar uchun beshta davr va har biri uchun uchta tsikl qo'shing kutish.
Do'stlaringiz bilan baham: |