Добавил:
Eatmore
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
ЂбᥬЎ«Ґа i51(51FX,51gb,52,SAB515/535)
ЂбᥬЎ«Ґа AVOCET (ava51.exe Ё «ЁЄҐа avl51.exe)
‡ ЇгбЄ:
ava51 <д ©« бᥬЎ«Ґа > -> д ©«.obj, д ©«.prn
avl51 <д ©« ўе®¤®©> = <д ©« ўл室®©> -> д ©«.hex, д ©«.map
ЋЈ« ў«ҐЁҐ
1. ‘Ёв ЄбЁб ЋЇҐа в®а®ў-Є®¬ ¤
2. ‘ Ё б в Ґ ¬ Є ® ¬ ¤
‘ЇҐжЁ «млҐ (SFR) ॣЁбвал sab515 Ё ЎЁвл.
3. ЋЇҐа ¤л
3.1. ЋЎ®§ зҐЁп ®ЇҐа ¤®ў ў Є®¬ ¤ е
3.2. Љ®бв вл
4. „ЁаҐЄвЁўл бᥬЎ«Ґа
4.1. EQU - бЁ¬ў®«ЁзҐбЄ®Ґ ®ЇаҐ¤Ґ«ҐЁҐ § 票©
4.2. SET - ўаҐ¬Ґ®Ґ бўп§лў ЁҐ § 票п б Ё¬ҐҐ¬,
4.3. BIT бўп§лў Ґв ¤аҐб ЎЁв б Ё¬ҐҐ¬ Ўг«ҐўбЄ®© ЇҐаҐ¬Ґ®©
4.4. TEQ
5. ЋаЈ Ё§ жЁп Ї ¬пвЁ.
5.1. USING
5.2. SEG, DEFSEG
5.3. ЏҐаҐ¬ҐлҐ
5.4. ђ §¬ҐйҐЁҐ Їа®Ја ¬¬л ў ᥣ¬ҐвҐ CODE
6. END [¬ҐвЄ ]
7. Њ®¤г«м®Ґ Їа®Ја ¬¬Ёа®ў ЁҐ.
7.1. Ћд®а¬«ҐЁҐ Їа®жҐ¤га.
7.2. PUBLIC, EXTERN, GLOBAL
7.3. ЏаЁ¬Ґал ¬®¤г«м®Ј® Їа®Ја ¬¬Ёа®ў Ёп.
8. Њ Єа®®ЇаҐ¤Ґ«ҐЁп
9. „ЁаҐЄвЁў INCLUDE <д ©«>
10. ђ Ў®в б ¬ Єа®б ¬Ё Ё ЎЁЎ«Ё®вҐЄ ¬Ё
10.1. ЂбᥬЎ«Ґа - п§лЄ ®ЇЁб Ёп ўЁавг «м®© ¬ иЁл
10.2. ‘Ёб⥬ Є®¬ ¤, ЇаҐ¤бв ў«Ґ п ЊЂЉђЋЉЋЊЂЌ„ЂЊ€ б ЇҐаҐ¬Ґл¬Ё
Ї а ¬Ґва ¬Ё:
10.3. Љ®¬ ¤л ЇаҐ¤бв ў«Ґл ЏЋ„ЏђЋѓђЂЊЊЂЊ€ б дЁЄбЁа®ў л¬Ё Ї а ¬Ґва ¬Ё:
10.4. ЏаЁ¬Ґа а §а Ў®вЄЁ Їа®Ја ¬¬л ўлзЁб«ҐЁ©
11. ЃЁЎ«Ё®вҐЄЁ.
1. ‘Ёв ЄбЁб ЋЇҐа в®а®ў-Є®¬ ¤
ЋЇҐа в®ал: [¬ҐвЄ [:]] [¬Ґ¬®Є®¤ ЁбвагЄжЁЁ [®ЇҐа ¤л...] [;Є®¬¬Ґв аЁЁ]
€¤ҐвЁдЁЄ в®ал Ё бЁ¬ў®«л б®бв®пв Ё§ ЎгЄў, жЁда, Ё«Ё $, ¤®«¦л
зЁ вмбп б ЎгЄўл. ‘Ё¬ў®« Ї®¤зҐаЄЁў Ёп ЇаЁа ўЁў Ґвбп Є ЎгЄўҐ.
‘Ё¬ў®«ЁзҐбЄЁҐ Ё¬Ґ ¤®«¦л зЁ вмбп б «д ўЁв®Ј® бЁ¬ў®« Ё ¬®Јгв
ўЄ«оз вм ў бҐЎп «оЎго Є®¬ЎЁ жЁо ЎгЄў, жЁда, § Є®ў ў®Їа®б Ё Ї®¤зҐа-
ЄЁў Ё© ("_"). „«п ®зҐм ¤«Ёле Ё¬Ґ ५Ґў вл¬Ё пў«повбп в®«мЄ®
ЇҐаўлҐ 31 § Є . „®ЇгбЄ Ґвбп Їа®Ё§ў®«м®Ґ ᬥ襨Ґ бва®зле Ё
Їа®ЇЁбле ЎгЄў, ўбҐ ®Ё ў®бЇаЁЁ¬ овбп Є Є Їа®ЇЁблҐ.
2. ‘ Ё б в Ґ ¬ Є ® ¬ ¤
------------------------------- -----------------------------
ЂpЁд¬ҐвЁЄ Ё «®ЈЁЄ ЏҐpҐбл«ЄЁ
------------------------------- ----------------------------
add a,{ri,@rj,#d,ad} mov a,{ri,@rj,#d,ad}
addc a,{ ...........} mov {ri,@rj},a
subb a,{............} mov {ri,@rj},ad
inc {ri,@rj,ad,dptr,a} mov ad,{ri,@rj,#d,ad,a}
dec {ri,@rj,ad,a} mov {ri,@rj},#d
mul ab mov dptr,#d16
div ab movc a,@a+dptr
movc a,@a+pc
anl a,{ri,@rj,#d,ad} movx a,{@rj,@dptr}
anl ad,{#d,a} movx {@rj,@dptr},a
push ad
orl a,{ri,@rj,#d,ad} pop ad
orl ad,{#d,a} xch a,{ri,@rj,ad}
xrl a,{ri,@rj,#d,ad} xchd a,@rj
xrl ad,{#d,a} swap a
clr a ---------------------------------------
cpl a Є®¬ ¤л Ўг«ҐўбЄ®Ј® Їа®жҐбб®а
rl a
rlc a mov bit,c mov c,bit
rr a clr {c,bit} anl c,{bit,/bit}
rrc a cpl c orl c,{........}
da a setb {c,bit}
---------------------------------------------------------------------
“Їp ў«ҐЁҐ Їp®Јp ¬¬®© Ё ўҐвў«ҐЁп
ljmp a16 jb bit,rel djnz {ri,ad},rel
ajmp a11 jnb bit,rel cjne {ri,@rj},#d,rel
sjmp rel jbc bit,rel lcall a16
jmp @a+dptr
jz rel acall a11
ret
jnz rel
jc rel reti
jnc rel nop
‘ЇҐжЁ «млҐ (SFR) ॣЁбвал sab515 Ё ЎЁвл.
7 6 5 4 3 2 1 0
acc . . . . . . . . *
b . . . . . . . . *
psw cy ac f0 rs1 rs0 ov f1 p *
sp . . . . . . . .
dph . . . . . . . .
dpl . . . . . . . .
p0 . . . . . . . . *
p1 в2 clkout в2ex int2' int6/cc3 int5/cc2 int4/cc1 int3'/cc0 *
p2 . . . . . . . . *
p3 rd' wr' в1 в0 int1' int0' txd rxd *
p4 . . . . . . . . *
p5 . . . . . . . . *
p6 . . . . . . . .
tmod gate1 c/t1 m1 m0 gate0 c/t0
m1 m0 89 0
tcon tf1 tr1 tf0 tr0 te1 it1 ie0 it0 *
th0 . . . . . . . .
tl0 . . . . . . . .
th1 . . . . . . . .
tl1 . . . . . . . .
pcon smod pds idls . gf1 gf0 pde idle
scon sm0 sm1 sm2 ren tb8 rb8 ti ri *
sbuf . . . . . . . .
ien0 eal wdt et2 es et1 ex1 et0 ex0 *
ien1 exen2 swdt ex6 ex5 ex4 ex3 ex2 eadc *
ip0 . wdts tf2+exf2 ri+ti tf1/ ie1/ tf0/ ie0/
ip1 . . iex6 iex5 iex4 iex3 iex2 iadc
ircon exf2 tf2 iex6 iex5 iex4 iex3 iex2 iadc *
cce cocah3 cocal3 cocah2 cocal2 cocah1 cocal1 cocah0 cocal0
ccl1 . . . . . . . .
cch1 . . . . . . . .
ccl2 . . . . . . . .
cch2 . . . . . . . .
ccl3 . . . . . . . .
cch3 . . . . . . . .
tl2 . . . . . . . .
th2 . . . . . . . .
t2con t2ps i3fr i2fr t2r1 t2r0 t2cm t2i1 t2i0 *
adcon bd clk . bsy adm mx2 mx1 mx0 *
addat . . . . . . . .
dapr . . . . . . . .
--------------------------------------------------------------------------------------
t2con:
t2ps=1¬Єб/2¬Єб i3fr=§ еў в \,/ t2r1-0=2-tf2/3-t2ex t2i1-0=-,tm2,1+,в2&1+
t2cm=mode comp 0/1
exf2=t2ex'& exen2
cocahi-cocali = -,§ еў в_int3',ба ўҐЁҐ,§ еў в_Ї®_§ ЇЁбЁ
* - ЎЁвл ¤®бвгЇл Ї® Ё¬Ґ ¬ Ё ¤аҐб ¬
3. ЋЇҐа ¤л
1/ ЋЎ®§ зҐЁп ®ЇҐа ¤®ў ў Є®¬ ¤ е:
#xx - Є®бв в
ri= {r0,r1,...,r7},
@rj - Є®бўҐ п ¤аҐб жЁп Є ўгв॥© RAM, rj={r0,r1}
ad - (00-ff) ¤pҐб pҐЈЁбвp Ё«Ё ўгвpҐҐЈ® Ћ‡“(00-7f),
Ё¬п бЇҐжЁ «м®Ј® pҐЈЁбвp sfr (д ©« sfr515.txt)
bit - 00-7f ¤pҐб ЎЁв ў Ї®«Ґ ЎЁв®ў,
а §ап¤ бЇҐжЁ «м®Ј® ॣЁбва acc.5, psw.0, ... ,
Ё¬п ЎЁв smod,sm0,.... бЇҐжЁ «м®Ј® ॣЁбва
/bit - ЁўҐpбЁп ЎЁв
rel - ®в®бЁвҐ«мл© ¤аҐб <¬ҐвЄ >
a16 - 16-а §ап¤л© ¤аҐб <¬ҐвЄ >
a11 - 11-а §ап¤л© ¤аҐб <¬ҐвЄ >
„«п ¤®бвгЇ Є Ё¬Ґ ¬ ॣЁбва®ў Ё ЎЁв®ў ў SAB515 Ё«Ё i51GB
ў Їа®Ја ¬¬Ґ ўў®¤Ёвбп в Ў«Ёж Ё¬Ґ sab515_.ini
2/ Љ®бв вл :
Є®бв вл ¬®Јгв Ўлвм ¤ўге вЁЇ®ў
- зЁб«ҐлҐ, ў Є®¬ ¤ е ®Ў®§ з овбп Є Є ҐЇ®б।б⢥лҐ
®ЇҐа ¤л #,
- ¤аҐблҐ, ў Є®¬ ¤ е Ґ Ё¬Ґов бЇҐжЁ «мле ®Ў®§ 票©
Є®бв вл ¬®Јгв Ўлвм ЇаҐ¤бв ў«Ґл пў® - Є®ЄаҐвл¬Ё § 票ﬨ Ё
Ґпў® - ўла ¦ҐЁп¬Ё, ўлзЁб«пҐ¬лҐ Є®¬ЇЁ«пв®а®¬
ЏаЁ пў®¬ § ¤ ЁЁ гЄ §лў Ґвбп бЁб⥬ бзЁб«ҐЁп(бЇҐжЁдЁЄ жЁп):
Ќ з «мл© Љ®Ґзл©
®б®ў ЁҐ ‘ЇҐжЁдЁЄ в®а ‘ЇҐжЁдЁЄ в®а
---- --------- ---------
2 % B
8 @ O or Q
16 $ H
ЏаЁ¬Ґа:
mov a,#254
mov a,#%11111110
mov a,#@200
mov a,#$FE
mov a,#11111110b
mov a,#376Q
mov a,#0FEh
mov dptr,#0a5fh
‘Ё¬ў®«л ¬®Јгв Ўлвм § Є«озҐл ў ®¤Ё®злҐ Є ўлзЄЁ ' Ё«Ё ¤ў®©лҐ
Є ўлзЄЁ ".
mov a,#'C'
Љ®бв влҐ ўла ¦ҐЁп - ЇаҐ¤бв ў«ҐЁҐ зЁб«Ґле
Є®бв в Ё ¤аҐб®ў. ‚ла ¦ҐЁп ўлзЁб«повбп Є®¬ЇЁ«пв®а®¬ ў 16-а §ап¤ле
д®а¬ в е, б®еа пҐвбп ¬« ¤иЁ© Ў ©в ¤«п Ў ©в®ўле д®а¬ в®ў ¤ ле
ў Є®¬ ¤ е.
ЋЇҐа в®а €бЇ®«м§®ў ЁҐ ђҐ§г«мв в
-------- ----- ------
+ x + y x + y
+ +x 0 + x
- x - y x - y
- -x 0 - x
* x * y 㬮¦ҐЁҐ x y (ЎҐ§§ Є®ў®Ґ)
/ x / y x / y (ЎҐ§§ Є®ў®Ґ)
MOD x MOD y ®бв в®Є x/y (ЎҐ§§ Є®ўл©)
SHL x SHL y x б¤ўЁгвл© ў«Ґў® г а §а冷ў
SHR x SHR y x б¤ўЁгвл© ўЇа ў® г а §а冷ў
HIGH HIGH x бв аиЁ© Ў ©в x
LOW LOW x ¬« ¤иЁ© Ў ©в x
. data.bit x гЄ § ЁҐ ЎЁв bit
ў п祩ЄҐ Ї® ¤аҐбг data
NOT NOT x ¤®Ї®«ҐЁҐ Є x
AND x AND y «®ЈЁзҐбЄ®Ґ € x Ё y
OR x OR y «®ЈЁзҐбЄ®Ґ €‹€ x Ё y
XOR x XOR y «®ЈЁзҐбЄ®Ґ ЁбЄ«оз о饥 €‹€ x Ё y
ЏаЁ®аЁвҐвл:
г ал© +, г ал© - ЁўлбиЁ©
* / MOD SHR SHL
+ - .
NOT
AND
OR XOR ЁЁ§иЁ©
ЏаЁ¬Ґал: ўла ¦ҐЁп ¤«п § ¤ Ёп Є®бв в ў Є®¬ ¤ е
mov a,#(55 - 3 )*2 + 6 ;mov a,#110
mov dptr,#( 77 / 5 + 1aah) - 5 ;mov dptr,#1c5h
4. „ЁаҐЄвЁўл бᥬЎ«Ґа
4.1. EQU - бЁ¬ў®«ЁзҐбЄ®Ґ ®ЇаҐ¤Ґ«ҐЁҐ § 票©, бўп§лў Ґв
§ 票Ґ-Є®бв вг б бЁ¬ў®«ЁзҐбЄЁ¬ ®Ў®§ 票Ґ¬,
в Єго Є®бв вг Ґ«м§п ЇҐаҐ®ЇаҐ¤Ґ«пвм
Ё¬п EQU ўла ¦ҐЁҐ
ЏаЁ¬Ґал:
VAR_0 equ 20H
VAR_1 equ 21H
MOV A,VAR_0 ; ¤аҐб п Є®бв в -п祩Є ўгв॥©
ADD A,VAR_1 ; Ї ¬пвЁ
MOV VAR_0,A
ЏаЁ¬Ґз ЁҐ: в®«мЄ® Є®¬ ¤л ¤®ЇгбЄ ов ®вбвгЇ ®в з « бва®ЄЁ,
ЇаЁзҐ¬ ¤«п Є®¬ ¤ в Є®© ®вбвгЇ ®Ўп§ ⥫Ґ; Їа®вЁў, ¤«п ¬Ґв®Є
Ё Ё¬Ґ, ®ЇаҐ¤Ґ«пҐ¬ле Ї®«м§®ў ⥫Ґ¬, ®вбвгЇл Ќ… „ЋЏ“‘’€Њ›.
ЌҐб®Ў«о¤ҐЁҐ нвЁе ¤®ў®«м® бва ле
гб«®ўЁ© Ўг¤Ґв ў®бЇаЁпв® ва б«пв®а®¬ Є Є ®иЁЎЄ .
‚лзЁб«пҐ¬лҐ Є®бв вл:
rr equ ( 44 and 22 + 6 )
Љ®бв в - § 票Ґ ¤аҐб®Ј® ўла ¦ҐЁп
offs equ ( met1 + met2 - met3 ) Ј¤Ґ met1,met2,met3 - ¬ҐвЄЁ
mov dptr,#(met1-met2)
4.2. SET - ўаҐ¬Ґ®Ґ бўп§лў ЁҐ § 票п б Ё¬ҐҐ¬,
ў ¤ «мҐ©иҐ¬ Ё¬п ¬®¦® ЇҐаҐ®ЇаҐ¤Ґ«Ёвм,
Ё¬п ¬®¦® а бб¬ ваЁў вм Є Є ЇҐаҐ¬Ґго, § 票Ґ Є®в®а®©
§ ўЁбЁв ®в нв Ї Є®¬ЇЁ«пжЁЁ Ё ¬®¦Ґв Ўлвм ЁбЇ®«м§®ў ® ў
гб«®ў®© Є®¬ЇЁ«пжЁЁ.
VAR_0 SET R0
VAR_1 SET R1
mem set 0a00h
SYMB_2 MOV A,VAR_0
ADD A,VAR_1
MOV VAR_0,A
mov dptr,#mem
.... ....
mem set 0c00h
mov dptr,#mem
.... .....
4.3. BIT бўп§лў Ґв ¤аҐб ЎЁв б Ё¬ҐҐ¬ Ўг«ҐўбЄ®© ЇҐаҐ¬Ґ®©:
x1 bit p3.2
x2 bit 05
s bit acc.0
ЏаЁ¬ҐҐЁҐ ЇаЁ ўлзЁб«ҐЁЁ § зҐЁп Ўг«ҐўбЄ®© дгЄжЁЁ
S = x1&x2 V /x1&/x2
clr c
mov c,x1
anl c,x2
mov x2,c
setb c
anl c,/x1
anl c,/x2
mov s,c
4.4. TEQ
бЁ¬ў®« TEQ § 票Ґ
бЁ¬ў®«_¤«п_ॣЁбва TEQ r4
‚६Ґ® бўп§лў Ґв § 票Ґ Ё«Ё Ё¬п ॣЁбва б бЁ¬ў®«®¬.
5. ЋаЈ Ё§ жЁп Ї ¬пвЁ.
Џ ¬пвм ¬ЁЄа®Є®ва®««Ґа а §¤Ґ«пҐвбп ўгваҐоо Ё ўҐиоо.
‚гваҐпп Ї ¬пвм - ॣЁбва®ў п
- Ї ¬пвм ¤ ле
- б⥪®ў п
- ЎЁв®ў п
- ॣЁбвал бЇҐжЁ «мле дгЄжЁ©
‚Ґипп Ї ¬пвм - ¤ ле
- Їа®Ја ¬¬
‘।бвў ¬Ё бᥬЎ«Ґа ¤ лҐ ®ЇаҐ¤Ґ«повбп ᥣ¬Ґв ¬Ё ў ®¤®¬
Ё§ гЄ § ле Є« бб®ў Ё ЇаЁ «ЁЄЁа®ў ЁЁ ®ЎкҐ¤Ёповбп ў
ҐЇаҐалўлҐ Ё ҐЇҐаҐбҐЄ ойЁҐбп ®Ў« бвЁ.
5.1. USING
USING n (б ®вбвгЇ®¬ !)
USING 1,2 Ё«Ё 3
१ҐаўЁагҐв ᮮ⢥вбвўгойЁҐ п祩ЄЁ 8-f, 10-17, 18-1f ў® ўгв॥©
Ї ¬пвЁ IRAM.
ЂбᥬЎ«Ґа Ї® 㬮«з Ёо ўбҐЈ¤ १ҐаўЁагҐв г«Ґў®© Ў Є
(¬®¦® бзЁв вм, зв® USING 0
ўбв ў«Ґ® ў з «Ґ «оЎ®© Їа®Ја ¬¬л)
‘¬ҐйҐЁҐ ¤ ле ў IRAM б гзҐв®¬ USING ўлЇ®«пҐвбп нв ЇҐ
«ЁЄЁа®ў Ёп.
5.2. SEG, DEFSEG
SEG Є« бб/Ё¬п_ᥣ¬Ґв (seg § ЇЁблў Ґвбп б ®вбвгЇ®¬ !)
SEG § ¤ Ґв ᥣ¬Ґв, ў Є®в®ал© ¤®«¦л ва б«Ёа®ў вмбп Ї®б«Ґ¤гойЁҐ
Є®¤/¤ лҐ. Љ« бб ®ЇаҐ¤Ґ«пҐвбп § १ҐаўЁа®ў л¬
б«®ў®¬ CODE, DATA, BIT, XDATA, IDATA
Ё«Ё ¬®¦Ґв Ўлвм Ё¬ҐҐ¬ ᥣ¬Ґв , а ҐҐ
®ЇаҐ¤Ґ«Ґ®Ј® ¤ЁаҐЄвЁў®© DEFSEG.
DEFSEG Ё¬п_ᥣ¬Ґв [,START = ¤аҐб] (defseg § ЇЁблў Ґвбп б ®вбвгЇ®¬ !)
[,ALIGN = ўла ўЁў ЁҐ]
[,BLOCK = а §¬Ґа]
[,OVERLAID]
[,ABSOLUTE]
[,PHANTOM]
[,CLASS = CODE or DATA or BIT or XDATA or IDATA]
seg Ё¬п_ᥣ¬Ґв
DEFSEG ®Ўмпў«пҐв ®ўл© ᥣ¬Ґв,
¤®Ї®«ЁвҐ«м® ®ЇаҐ¤Ґ«пп Ўб®«овл©
¤аҐб з « , ўла ўЁў ЁҐ (¤®«¦® Ўлвм б⥯Ґмо ¤ў®©ЄЁ) ᥣ¬Ґв ,
а §¬Ґа ᥣ¬Ґв , ЇҐаҐЄалвЁҐ б ®¤®Ё¬Ґл¬Ё ᥣ¬Ґв ¬Ё, Ўб®«о⮥
а §¬ҐйҐЁҐ ᥣ¬Ґв .
’®«мЄ® зЁб« а ўлҐ б⥯ҐЁ 2 а §аҐиҐ® ЁбЇ®«м§®ў вм ў ваЁЎгв е
ALIGN Ё BLOCK.
‘ҐЈ¬Ґв б ваЁЎг⮬ PHANTOM Ґ ¬®¦Ґв Ё¬Ґвм ваЁЎгв START= (б«Ґ¤гҐв
ЁбЇ®«м§®ў вм ORG). ЏаЁзЁ нв®Ј® ў ⮬, зв® ўбҐ ”ЂЌ’ЋЊЌ›… ᥣ¬Ґвл
а бб¬ ваЁў овбп Є Є зЁ ойЁҐбп б 0000, б г«Ґў®© д ЄвЁзҐбЄ®© ¤«Ё®©
(ў®в Ї®зҐ¬г ЁЄ®Ј¤ Ґ ў®§ЁЄ ов ®иЁЎЄЁ ЇаЁ «®¦ҐЁп § ЇЁбҐ©,
ўЄ«оз ойЁе ”ЂЌ’ЋЊЌ›… ᥣ¬Ґвл), Ё а §аҐиҐ® ЁбЇ®«м§®ў вм ®ЇҐа в®а ORG
¤«п «оЎ®Ј® Ї®«®¦ҐЁп (???).
‘ҐЈ¬Ґв DATA ў бᥬЎ«Ґа®¬ ⥪б⥠᫥¤гҐв а §¬Ґй вм Ї®б«Ґ ᥣ¬Ґв CODE.
ЏаЁ¬Ґал:
defseg c_text,class=CODE
seg c_text
...........
defseg r_data,class=DATA
seg r_data
v1 db 0,5,6
v2 dw 0
5.3. ЏҐаҐ¬ҐлҐ
DS, DB, DW १ҐаўЁагҐв Ї ¬пвм ў ᥣ¬ҐвҐ ᮮ⢥вбўго饣®
Є« бб (Їа ўЁ« пў®Ј® ®ЇаҐ¤Ґ«ҐЁп ᥣ¬Ґв®ў ў 2.7,
Ї® 㬮«з Ёо class=CODE)
DS n ђҐ§ҐаўЁагҐв n Ў ©в Ї ¬пвЁ.
DB Ў ©в,Ў ©в ... Ќ Є ¦¤л© аЈг¬Ґв Ё«Ё бЁ¬ў®« ў бва®ЄҐ
१ҐаўЁагҐвбп ®¤Ё Ў ©в Ї ¬пвЁ, гЄ § лҐ § 票п б®еа повбп
в®«мЄ® ў Ї ¬пвЁ Є« бб CODE.
DW б«®ў®, б«®ў® ...
„«п Є ¦¤®Ј® аЈг¬Ґв १ҐаўЁагҐвбп ®¤® б«®ў® Ї ¬пвЁ,
§ 票п б®еа повбп в®«мЄ® ў Ї ¬пвЁ Є« бб CODE.
5.4. ђ §¬ҐйҐЁҐ Їа®Ја ¬¬л ў ᥣ¬ҐвҐ CODE
Љ®¬ ¤л а §¬Ґй овбп Ї®б«Ґ¤®ў вҐ«м® Ї® бзҐвзЁЄг Є®¬ ¤ PC,
§ 票Ґ Є®в®а®Ј® Ї® 㬮«з Ёо ¬®¤ЁдЁжЁагҐвбп Є®¬ЇЁ«пв®а®¬ ўв®¬ вЁзҐбЄЁ.
Љ®¬ ¤л ¬®Јгв Ўлвм ®Ў®§ зҐл ¬ҐвЄ ¬Ё, зв® Ї®§ў®«пҐв ॠ«Ё§®ў вм
ўҐвў«ҐЁп Ї® Є®¬ ¤ ¬ гб«®ў®Ј® jc,jnc,jz,jb,jnb,jbc,djnz - ЇҐаҐе®¤ ,
ЎҐ§гб«®ў®Ј® ЇҐаҐе®¤ jmp, call.
Љ®¬ ¤л Jmp, call Є®ЄаҐвЁ§Ёаговбп Є®¬ЇЁ«пв®а®¬ ў ᮮ⢥вбўгойЁҐ Є®¬ ¤л
ajmp, sjmp, ljmp, lcall, scall Ё«Ё jmp @a+dptr б гзҐв®¬ ¤«Ёл ¤аҐб®Ј®
ЁвҐаў « ЇаЁ ЇҐаҐе®¤Ґ.
ЏаЁ¬Ґз ЁҐ: Ќ… ЋЃџ‡Ђ’…‹њЌЋ ¤ў®Ґв®зЁҐ Ї®б«Ґ Ё¬ҐЁ ¬ҐвЄЁ.
$ - ЇаЁ§ Є ¤аҐб ЇҐаў®Ј® Ў ©в Є®¤ Ё«Ё ¤ ле, бЈҐҐаЁа®ў ле
⥪гйЁ¬ ®ЇҐа в®а®¬ (⥪г饥 § 票Ґ Їа®Ја ¬¬®Ј® бзҐвзЁЄ ), ЇаЁ¬Ґа,
djnz r0, $ нЄўЁў «Ґв® ЇҐаҐе®¤г б ¬ҐвЄ®©
m1: djnz r0,m1
Ќ § 票Ґ Їа®Ја ¬¬®Ј® бзҐвзЁЄ ¤ЁаҐЄвЁў®© ORG
ORG ¤аҐб®Ґ ўла ¦ҐЁҐ
‚ ЇҐаҐ¬Ґй Ґ¬®¬ ᥣ¬ҐвҐ ORG гбв ў«Ёў Ґв ¤аҐб ў PC ®в®бЁвҐ«м® з «
ᥣ¬Ґв . ‚ Ўб®«о⮬ ᥣ¬ҐвҐ ORG гбв ў«Ёў Ґв ў PC Ўб®«овл© ¤аҐб.
6. END [¬ҐвЄ ]
¬ҐвЄ - Ґ ®Ўп§ ⥫мл© Ї а ¬Ґва,
‡ ¤ Ґв Є®Ґж ва б«Ёа㥬®Ј® ⥪бв
7. Њ®¤г«м®Ґ Їа®Ја ¬¬Ёа®ў ЁҐ.
Њ®¤г«Ё ®д®а¬«повбп Є Є Ґ§ ўЁбЁ¬лҐ Їа®жҐ¤гал б «®Є «мл¬Ё
Ё Ј«®Ў «мл¬Ё ббл«Є ¬Ё, Є®в®алҐ а §аҐи овбп ЇаЁ бЎ®аЄҐ
«ЁЄҐа®¬ AVL51.exe.
7.1. Ћд®а¬«ҐЁҐ Їа®жҐ¤га.
Ё¬п PROC
......
[Ё¬п] ENDPROC
ЋЎмпў«пҐв ®Ў« бвм б «®Є «мл¬Ё ¬ҐвЄ ¬Ё
‹®Є «млҐ ¬ҐвЄЁ зЁ овбп б 'L?'
L?1
‹®Є «млҐ бЁ¬ў®«л ¬®Јгв Ўлвм ®ЇаҐ¤Ґ«Ґл в®«мЄ® ўгваЁ PROC
€¬п ў ®ЇҐа в®аҐ ENDPROC Ґ вॡгҐвбп, ® Ґб«Ё Ґбвм, в®
® ¤®«¦ Ўлвм в®© ¦Ґ б ¬®©, зв® Ё ў ЇаҐ¤л¤г饬 ®ЇҐа в®аҐ PROC
‚«®¦ҐлҐ Їа®жҐ¤гал Ґ а §аҐиҐл
7.2. PUBLIC, EXTERN, EXTRN, GLOBAL
PUBLIC бЁ¬ў®«
ђ §аҐи Ґв ббл«Єг бЁ¬ў®« Ё§ ¤агЈЁе ¬®¤г«Ґ© ¤ЁаҐЄвЁў®© EXTERN.
EXTERN бЁ¬ў®«
Ё«Ё EXTRN бЁ¬ў®«
ЏаЁ¬Ґз Ёп:
1) «мвҐа вЁў п ¤ЁаҐЄвЁў global Ї®§ў®«пҐв б®зҐв вм ў®§¬®¦®бвЁ
public/extern;
2) Ё¬Ґ , гЄ § лҐ ў ¤ЁаҐЄвЁў е public Ё global, Ї®Ї ¤ ов ў sym-д ©«
Ё, б«Ґ¤®ў ⥫м®, ўЁ¤л бЁ¬г«пв®аг avsim51.
3) ¬®¦® ўбҐ Ё¬Ґ ᤥ« вм Ј«®Ў «мл¬Ё, § бзҐв ®ЇжЁЁ AP (ALLPUBLIC)
ЇаЁ § ЇгбЄҐ бᥬЎ«Ґа , ЇаЁ¬Ґа, ava51 file ap (ЇаЁ Є®¬Ї®®ўЄҐ
ҐйҐ § ¤ вм ®ЇжЁо -sy, ЇаЁ¬Ґа, avl51 file=file -sy, в® Ўг¤Ґв
бЈҐҐаЁа®ў sym-д ©«, ЇаЁ § ЇгбЄҐ бЁ¬г«пв®а б«Ґ¤гҐв § ¤ вм
Load Avocet <Ё¬п д ©« ЎҐ§ а биЁаҐЁп>)
ЏаЁ¬Ґа
extern area
global d0, d1
public d2
d0 db area
d1 db %11111110, @376, $FE
d2 db 11111110b, 376Q, 0FEh
7.3. ЏаЁ¬Ґал ¬®¤г«м®Ј® Їа®Ја ¬¬Ёа®ў Ёп.
; ¬®¤г«м A.asm
seg code
org reset
ljmp _start_1234567890
extern d7
; global d0, d1, d2
public d0, d2
seg data
_start_1234567890_ db 0
d0 db 254
d1 db %11111110, @376, $FE
d2 db 11111110b, 376Q, 0FEh
d3 db '1"',"O'k"
d4 db 0
seg code
_start_1234567890:
mov r0, #d7
mov d1, r0
l1 djnz r0, l1
end
; ¬®¤г«м B.asm
global d7
seg data
d7 equ 0
end
; .bat д ©«
ava51 a.asm ap ;ap-ўбҐ Ё¬Ґ Ј«®Ў «млҐ
ava51 b.asm ap
avl51 ab=a,b -sy ;ᮧ¤ вм бЁ¬ў®«млҐ д ©« Ё
бўп§ вм ¬®¤г«Ё ў ab.hex
avsim51 alaab ; a-вЁЇ Їа®жҐбб®а ,l-load,
a-avocet(§ Јаг§Є бЁ¬ў®«м®Ј® д ©« ),
ab.hex-§ Јаг¦ Ґ¬л© д ©«.hex
Ѓ…‡ а §¤Ґ«ЁвҐ«Ґ© !
8. Њ Єа®®ЇаҐ¤Ґ«ҐЁп
‘Ёв ЄбЁб ¬ Єа®®ЇаҐ¤Ґ«ҐЁп
Ё¬п %macro arg1,arg2,...
mov arg1,arg2
mov r&arg1,#arg2
[%exitm]
%endm
%exitm ЁбЇ®«м§гҐвбп ¤«п Ґ¬Ґ¤«Ґ®Ј® § ўҐаиҐЁп ЈҐҐа жЁЁ
¬ Єа®а биЁаҐЁп.
ЋЇҐа в®а &arg ЇаҐ¤бв ў«пҐв ⥪бв аЈг¬Ґв
ЋЇҐа в®ал гб«®ў®© ва б«пжЁЁ ў ¬ Єа®®ЇаҐ¤Ґ«ҐЁпе
%ifb arg аЈг¬Ґв Ґ § ¤
%ifnb arg аЈг¬Ґв § ¤
%ifeq arg1 arg2 аЈг¬Ґвл а ўл
%ifne arg1 arg2 аЈг¬Ґвл Ґ а ўл
ЏаЁ¬Ґал:
movr %macro dst,src
%ifb src
%exitm
%endif
%ifne dst src
mov a,r&src ; 'r' + бва®Є аЈг¬Ґв src
mov r&dst,a
%endif
%endm
movr 1,0
movr 7,7
‚ १г«мв ⥠Ўг¤Ґв бЈҐҐаЁа®ў ®
mov a,r1
mov r0,a
ЋЇҐа в®а % ЇаҐ¤бв ў«пҐв зЁб«®ў®Ґ § 票Ґ аЈг¬Ґв
st %macro reg
mov r®,a
%endm
ldcmac %macro wreg
st %wreg+wreg
st %(wreg+1)*2
nop
%endm
ldcmac 0
ldcmac 2
Ѓг¤Ґв бЈҐҐаЁа®ў ®:
mov r0, a
mov r2, a
nop
mov r4, a
mov r6, a
nop
‚® Ё§ЎҐ¦ ЁҐ ¤гЎ«Ёа®ў Ёп ¬Ґв®Є ЇаЁ ¬®Ј®Єа ⮬ ¬ Єа®ўл§®ўҐ
ЇаҐ¤« Ј овбп «®Є «млҐ (ў ЇаҐ¤Ґ« е ¬ Єа®®ЇаҐ¤Ґ«ҐЁп) ¬ҐвЄЁ:
%local бЇЁб®Є ¬Ґв®Є
ЏаЁ¬Ґа:
delay %macro count
%local loop
mov r0, #count
loop: djnz r0, loop
%endm
9. „ЁаҐЄвЁў INCLUDE <д ©«>
- ЇаЁ®бв ®ўЁвм Є®¬ЇЁ«пжЁо
⥪г饣® д ©« , Є®¬ЇЁ«Ёа®ў вм <д ©«>,
Їа®¤®«¦Ёвм Є®¬ЇЁ«пжЁо ⥪г饣® д ©« .
- а биЁаҐЁҐ бᥬЎ«Ґа Ё¬Ґ ¬Ё ॣЁбва®ў Ё ЎЁв®ў
¤агЈЁе ¬ЁЄа®Є®ва®««Ґа®ў б п¤а®¬ i51:
д ©«л 80c51gb.ini
sab515_.ini
<д ©«> Ґ ᮤҐа¦Ёв ¬ Єа®Є®¬ ¤ Ё ббл«®Є ¬ Єа®Є®¬ ¤л
10. ђ Ў®в б ¬ Єа®б ¬Ё Ё ЎЁЎ«Ё®вҐЄ ¬Ё
1/ ЂбᥬЎ«Ґа - п§лЄ ®ЇЁб Ёп ўЁавг «м®© ¬ иЁл
ЂбᥬЎ«Ґа - бЁ¬ў®«ЁзҐбЄ®Ґ ®ЇЁб ЁҐ аҐбгаб®ў ¬ЁЄа®Є®¬ЇмовҐа
Ё «Ј®аЁв¬ЁзҐбЄЁ© п§лЄ (¬Ґв®¤ Ё вҐе®«®ЈЁп «Ј®аЁв¬Ё§ жЁЁ).
(д ©« AVC51\HELP\asm51.txt).
ЋЇЁб ЁҐ аҐбгаб®ў ў бᥬЎ«ҐаҐ (бЁбвҐ¬л Є®¬ ¤, ®аЈ Ё§ жЁЁ
Ї ¬пвЁ, ўў®¤ /ўлў®¤ ,бЁбвҐ¬л ЇаҐалў Ё© Ё ¤а ) ўЁав㠫쮥.
ђҐ «м®Ґ а бЇаҐ¤Ґ«ҐЁҐ аҐбгаб®ў ®бгйҐбвў«пҐв Є®¬ЇЁ«пв®а.
‚Ёав㠫쮥 ®ЇЁб ЁҐ (ўЁавг «м п ¬ иЁ ) Ї®§ў®«пҐв Ўбва -
ЈЁа®ў вмбп ®в ॠ«м®Ј® ЁбЇ®«ҐЁп ¬ иЁл Ё
бЄ®жҐваЁа®ў вмбп ў®Їа®б е «Ј®аЁв¬Ё§ жЁЁ ЇаЁ
аҐиҐЁЁ Є®ЄаҐвле § ¤ з.
ђҐ «Ё§ жЁп ўЁавг «м®© ¬ иЁл ¬®¦Ґв Ўлвм - Їа®Ја ¬¬ п
(¬®¤Ґ«м ¬ЁЄа®Є®¬ЇмовҐа ) Ё«Ё ЇЇ а в п (¬ЁЄа®б奬 ¬ЁЄа®Є®¬ЇмовҐа )
Џа®Ја ¬¬ п ¬®¤Ґ«м - бЁ¬г«пв®а ®ЎҐбЇҐзЁў Ґв 㤮Ўл© Ї®«м§®ў ⥫м-
бЄЁ© ЁвҐа䥩б, Ї®§ў®«пойЁ© ЁвҐа ЄвЁў® гЇа ў«пвм аҐбгаб ¬Ё ¬ иЁл.
ЌҐ¤®бв вЄ®¬ бЁ¬г«пв®а пў«пҐвбп Ё§Є п бЄ®а®бвм ЁбЇ®«ҐЁп
(AVSIM51.exe - ў Єа®бб-бЁб⥬Ґ AVC51), Ґ ¤®бвгЇл нд䥪вл ЁбЇ®«ҐЁп
ў ॠ«м®¬ ўаҐ¬ҐЁ.
ЂЇЇ а в п ॠ«Ё§ жЁп ўЁавг «м®© ¬ иЁл - Є®ва®««Ґа-Їа®в®вЁЇ
®б®ўҐ SAB515 (LAB515.txt) б Їа®Ја ¬¬®© Ї®¤¤Ґа¦Є®© ў ўЁ¤Ґ ¬®Ёв®а-
®© бЁб⥬л (rism51.asm Ё imon51.frt ў Є в «®ЈҐ LAB). ‚ Є®ва®««ҐаҐ
Їа®Ја ¬¬л ўлзЁб«ҐЁп Ё Ё§¬ҐаҐЁп ¬®Јгв Ўлвм ўлЇ®«Ґл ў ॠ«м®¬
ўаҐ¬ҐЁ, १г«мв вл Ё¤ЁжЁа®ў л †Љ€, Ї®Є § л нд䥪вл гЇа ў«ҐЁп
Є« ўЁ вга®©.
Њ Єа® бᥬЎ«Ґа - бᥬЎ«Ґа б б।бвў ¬Ё а биЁаҐЁп-¬ Єа®Є®¬ ¤ ¬Ё,
Ї®§ў®«пойЁ¬Ё ᮧ¤ ў вм Ў®«ҐҐ нд䥪⨢лҐ
( б в®зЄЁ §аҐЁп ЁбЇ®«м§®ў Ёп)
ўЁавг «млҐ Є®¬ЇмовҐал Ў®«ҐҐ ўлб®Є®Ј® га®ўп Ўбва ЄжЁЁ.
„«п 8-а §а冷© ¬ иЁл ҐбвҐбвўҐл¬ а биЁаҐЁҐ¬
пў«пҐвбп ЇҐаҐе®¤ Є 16/32-а §а冷© аеЁвҐЄвгаҐ, Ї®¤¤Ґа¦Ёў о饩
®Ўа Ў®вЄг ¤ ле б।Ґ© в®з®бвЁ, Ё Є 32-а §а冷© аеЁвҐЄвгаҐ,
®ЎҐбЇҐзЁў о饩 ®Ўа Ў®вЄг ¤ ле б ўлб®Є®© в®з®бвмо.
‚Ёавг «м п ¬ иЁ (д ©« proc51.blk) ®вЄалв ¤«п а биЁаҐЁп
®ўл¬Ё ¬ Єа®Є®¬ ¤ ¬Ё Ё Ї®¤Їа®Ја ¬¬ ¬Ё.
ЋЇЁб ЁҐ ॣЁбва®ў Ё ¬ Єа®Є®¬ ¤л ў д ©«Ґ proc51.asm :
16-а §ап¤лҐ ॣЁбвал w0 w1 w2 w3 w4 w5 w6 w7 w8 w9
32-а §ап¤лҐ ॣЁбвал d0 d1 d2 d3 d4 d5 d6
2/ ‘Ёб⥬ Є®¬ ¤, ЇаҐ¤бв ў«Ґ п ЊЂЉђЋЉЋЊЂЌ„ЂЊ€ б ЇҐаҐ¬Ґл¬Ё
Ї а ¬Ґва ¬Ё:
addc_w y,x - б«®¦ҐЁҐ б«®ў б ЇҐаҐ®б®¬ wx+wy+б->wy,
‘-ўе®¤®© ЇҐаҐ®б
add_w y,#x - б«®¦ҐЁҐ б«®ў б Є®бв в®© #x+wy->wy ,
ॠ«Ё§ жЁп зҐаҐ§ dptr
addc_d y,x - б«®¦ҐЁҐ ¤ў®©ле б«®ў б ЇҐаҐ®б®¬ dx+dy+б->dy
mov_w y,x - wx->wy
mov_d y,x - dx->dy
mov_c y,#x - § ЇЁбм Є®бв вл ў б«®ў® #x->wy зҐаҐ§ dptr
clr_w x - 0->wx
clr_d x - 0->dx
cpl_w x - ¤®Ї®«ҐЁҐ б«®ў 0-wx-c->wx
cpl_d x - ¤®Ї®«ҐЁҐ ¤ў®©®Ј® б«®ў 0-dx-c->dx
subb_w y,x - ўлзЁв ЁҐ б«®ў б § Ґ¬®¬ wy-wx-c->wy
subb_d y,x - ўлзЁв ЁҐ ¤ў®©ле б«®ў б § Ґ¬®¬ dy-dx-c->dy
rlc_w x - б¤ўЁЈ б«®ў ў«Ґў® б ЇаЁ§ Є®¬ ‘ rlc(wx)
rlc_d x - б¤ўЁЈ ¤ў®©®Ј® б«®ў ў«Ґў® б ЇаЁ§ Є®¬ ‘ rlc(dx)
rrc_w x - б¤ўЁЈ б«®ў ўЇа ў® б ЇаЁ§ Є®¬ ‘ rrc(wx)
rrc_d x - б¤ўЁЈ ¤ў®©®Ј® б«®ў ўЇа ў® б ЇаЁ§ Є®¬ ‘ rrc(dx)
3/ Љ®¬ ¤л ЇаҐ¤бв ў«Ґл ЏЋ„ЏђЋѓђЂЊЊЂЊ€ б дЁЄбЁа®ў л¬Ё Ї а ¬Ґва ¬Ё:
clrw4 0->w4
clrd1 0->d1
dopcod -w0
shr47 rrc_d d1 c=0
sh1l47 rlc_d d1 c=0
sm0145 W0+W2->W0 c=0
DELN d1/w0->w3 Ё«Ё r4567/r01 -> r67,
бЁ¬¬ҐваЁз®Ґ ®ЄагЈ«ҐЁҐ
ЁбЇ®«м§говбп w4,w5=08-0b Є Є а Ў®зЁҐ
DELO d1/w0->w3 ®ЄагЈ«ҐЁҐ гбҐзҐЁҐ¬
mult w0*w1->d1 Ё«Ё R 0,1*R 2,3 -> R 4-7,
ЁбЇ®«м§гҐвбп w5=0a,0b Є Є а Ў®зЁҐ
shr4 d1/16 Ё«Ё r47 б¤ўЁгвм ўЇа ў® 4 ЎЁв
tr2d w0->w1 Ё«Ё R0,1 -> R2,3 r5-а Ў®зЁ©
trd2 w1->w0 Ё«Ё R 2,3 -> R 0,1 r4-7 а Ў®зЁҐ
sqrt32 Є®аҐм Ё§ d1 ў w0 Ё«Ё sqrt(r4-7)->r01
sqrt[r4-5] ->r01 а Ў®зЁҐ-r3,r7,0a,0b
SQRT16 SRQT[r4-5] ->r1 , бзҐвзЁЄ ў r7
4/ ЏаЁ¬Ґа а §а Ў®вЄЁ Їа®Ја ¬¬л ўлзЁб«ҐЁ©
sin=x - x^3/3! + x^5/5! = x(1-x^2/6(1-x^2/20)) ->
-> x/mx(mx-x^2/6/mx^2(mx-x^2/20/mx))
-----------б奬 ўлзЁб«ҐЁ© Ё ҐҐ ॠ«Ё§ жЁп ў ¬ Єа® бᥬЎ«ҐаҐ
---------------- а бЇаҐ¤Ґ«ҐЁҐ Ї ¬пвЁ
w0-w5 d0-d2 а Ў®зЁҐ ॣЁбвал
x equ w6 w6=d3=¤ў®Ёз®-¤ҐбпвЁзл© аЈг¬Ґв
mx equ w7 w7=d3+2=¬ бив Ў
xx equ d4 d4=w8-w9 = x^2
step1 equ d5 d5=mx-x^2/20/mx
¬ҐвЄЁ б奬 ўлзЁб«ҐЁ© ¬ Єа® бᥬЎ«Ґа
1 x^2 mov_w w0,x mov_w w2,x call mult mov_d xx,d1
2 20*mx mov_c w0,#20 mov_w w1,mx call mult mov_w w0,w3
3 [1]/[2] mov_d d1,xx call deln
4 mx-[3] mov_w w0,mx subb_w w0,w3 mov_w step1,w0
5 x^2
6 mx*6 mov_w w3,mx clr c rlc_w w3 add_w w3,mx rlc_w w3
7 [5]/[6] mov_w w0,w3 mov_d d1,xx call deln
8 [7]*[4] mov_w w0,w3 mov_w w1,step1 call mult
9 [8]/[7] mov_w w0,mx call deln
10 mx-[9] mov_w w0,mx subb_w w0,w3
11 [10]*x mov_w w1,x call mult
12 [11]/mx mov_w w0,mx call deln
11. ЃЁЎ«Ё®вҐЄЁ.
bibl_a.asm - ЎЁЎ«Ё®вҐЄ Ї®¤Їа®Ја ¬¬ 楫®© аЁд¬ҐвЁЄЁ б дЁЄбЁа®ў л¬Ё
Ї а ¬Ґва ¬Ё-ॣЁбва ¬Ё r0-r7,08-0b, ¬®¦Ґв § Јаг¦ вмбп
ў ЇаЁЄ« ¤го Їа®Ја ¬¬г
include <bibl_a.asm> (бЄ®ЎЄЁ Ґ ®Ўп§ ⥫мл)
bibl_f.asm - ¬ Єа®ЎЁЎ«Ё®вҐЄ б Ї« ў о饩 в®зЄ®© ў Є®а®вЄ®¬ д®а¬ вҐ
ЇаЁжЁЇ а Ў®вл б ЎЁЎЁ«Ё®вҐЄ®© в Є®© ¦Ґ Є Є б bibl_i
ЂбᥬЎ«Ґа AVOCET (ava51.exe Ё «ЁЄҐа avl51.exe)
‡ ЇгбЄ:
ava51 <д ©« бᥬЎ«Ґа > -> д ©«.obj, д ©«.prn
avl51 <д ©« ўе®¤®©> = <д ©« ўл室®©> -> д ©«.hex, д ©«.map
ЋЈ« ў«ҐЁҐ
1. ‘Ёв ЄбЁб ЋЇҐа в®а®ў-Є®¬ ¤
2. ‘ Ё б в Ґ ¬ Є ® ¬ ¤
‘ЇҐжЁ «млҐ (SFR) ॣЁбвал sab515 Ё ЎЁвл.
3. ЋЇҐа ¤л
3.1. ЋЎ®§ зҐЁп ®ЇҐа ¤®ў ў Є®¬ ¤ е
3.2. Љ®бв вл
4. „ЁаҐЄвЁўл бᥬЎ«Ґа
4.1. EQU - бЁ¬ў®«ЁзҐбЄ®Ґ ®ЇаҐ¤Ґ«ҐЁҐ § 票©
4.2. SET - ўаҐ¬Ґ®Ґ бўп§лў ЁҐ § 票п б Ё¬ҐҐ¬,
4.3. BIT бўп§лў Ґв ¤аҐб ЎЁв б Ё¬ҐҐ¬ Ўг«ҐўбЄ®© ЇҐаҐ¬Ґ®©
4.4. TEQ
5. ЋаЈ Ё§ жЁп Ї ¬пвЁ.
5.1. USING
5.2. SEG, DEFSEG
5.3. ЏҐаҐ¬ҐлҐ
5.4. ђ §¬ҐйҐЁҐ Їа®Ја ¬¬л ў ᥣ¬ҐвҐ CODE
6. END [¬ҐвЄ ]
7. Њ®¤г«м®Ґ Їа®Ја ¬¬Ёа®ў ЁҐ.
7.1. Ћд®а¬«ҐЁҐ Їа®жҐ¤га.
7.2. PUBLIC, EXTERN, GLOBAL
7.3. ЏаЁ¬Ґал ¬®¤г«м®Ј® Їа®Ја ¬¬Ёа®ў Ёп.
8. Њ Єа®®ЇаҐ¤Ґ«ҐЁп
9. „ЁаҐЄвЁў INCLUDE <д ©«>
10. ђ Ў®в б ¬ Єа®б ¬Ё Ё ЎЁЎ«Ё®вҐЄ ¬Ё
10.1. ЂбᥬЎ«Ґа - п§лЄ ®ЇЁб Ёп ўЁавг «м®© ¬ иЁл
10.2. ‘Ёб⥬ Є®¬ ¤, ЇаҐ¤бв ў«Ґ п ЊЂЉђЋЉЋЊЂЌ„ЂЊ€ б ЇҐаҐ¬Ґл¬Ё
Ї а ¬Ґва ¬Ё:
10.3. Љ®¬ ¤л ЇаҐ¤бв ў«Ґл ЏЋ„ЏђЋѓђЂЊЊЂЊ€ б дЁЄбЁа®ў л¬Ё Ї а ¬Ґва ¬Ё:
10.4. ЏаЁ¬Ґа а §а Ў®вЄЁ Їа®Ја ¬¬л ўлзЁб«ҐЁ©
11. ЃЁЎ«Ё®вҐЄЁ.
1. ‘Ёв ЄбЁб ЋЇҐа в®а®ў-Є®¬ ¤
ЋЇҐа в®ал: [¬ҐвЄ [:]] [¬Ґ¬®Є®¤ ЁбвагЄжЁЁ [®ЇҐа ¤л...] [;Є®¬¬Ґв аЁЁ]
€¤ҐвЁдЁЄ в®ал Ё бЁ¬ў®«л б®бв®пв Ё§ ЎгЄў, жЁда, Ё«Ё $, ¤®«¦л
зЁ вмбп б ЎгЄўл. ‘Ё¬ў®« Ї®¤зҐаЄЁў Ёп ЇаЁа ўЁў Ґвбп Є ЎгЄўҐ.
‘Ё¬ў®«ЁзҐбЄЁҐ Ё¬Ґ ¤®«¦л зЁ вмбп б «д ўЁв®Ј® бЁ¬ў®« Ё ¬®Јгв
ўЄ«оз вм ў бҐЎп «оЎго Є®¬ЎЁ жЁо ЎгЄў, жЁда, § Є®ў ў®Їа®б Ё Ї®¤зҐа-
ЄЁў Ё© ("_"). „«п ®зҐм ¤«Ёле Ё¬Ґ ५Ґў вл¬Ё пў«повбп в®«мЄ®
ЇҐаўлҐ 31 § Є . „®ЇгбЄ Ґвбп Їа®Ё§ў®«м®Ґ ᬥ襨Ґ бва®зле Ё
Їа®ЇЁбле ЎгЄў, ўбҐ ®Ё ў®бЇаЁЁ¬ овбп Є Є Їа®ЇЁблҐ.
2. ‘ Ё б в Ґ ¬ Є ® ¬ ¤
------------------------------- -----------------------------
ЂpЁд¬ҐвЁЄ Ё «®ЈЁЄ ЏҐpҐбл«ЄЁ
------------------------------- ----------------------------
add a,{ri,@rj,#d,ad} mov a,{ri,@rj,#d,ad}
addc a,{ ...........} mov {ri,@rj},a
subb a,{............} mov {ri,@rj},ad
inc {ri,@rj,ad,dptr,a} mov ad,{ri,@rj,#d,ad,a}
dec {ri,@rj,ad,a} mov {ri,@rj},#d
mul ab mov dptr,#d16
div ab movc a,@a+dptr
movc a,@a+pc
anl a,{ri,@rj,#d,ad} movx a,{@rj,@dptr}
anl ad,{#d,a} movx {@rj,@dptr},a
push ad
orl a,{ri,@rj,#d,ad} pop ad
orl ad,{#d,a} xch a,{ri,@rj,ad}
xrl a,{ri,@rj,#d,ad} xchd a,@rj
xrl ad,{#d,a} swap a
clr a ---------------------------------------
cpl a Є®¬ ¤л Ўг«ҐўбЄ®Ј® Їа®жҐбб®а
rl a
rlc a mov bit,c mov c,bit
rr a clr {c,bit} anl c,{bit,/bit}
rrc a cpl c orl c,{........}
da a setb {c,bit}
---------------------------------------------------------------------
“Їp ў«ҐЁҐ Їp®Јp ¬¬®© Ё ўҐвў«ҐЁп
ljmp a16 jb bit,rel djnz {ri,ad},rel
ajmp a11 jnb bit,rel cjne {ri,@rj},#d,rel
sjmp rel jbc bit,rel lcall a16
jmp @a+dptr
jz rel acall a11
ret
jnz rel
jc rel reti
jnc rel nop
‘ЇҐжЁ «млҐ (SFR) ॣЁбвал sab515 Ё ЎЁвл.
7 6 5 4 3 2 1 0
acc . . . . . . . . *
b . . . . . . . . *
psw cy ac f0 rs1 rs0 ov f1 p *
sp . . . . . . . .
dph . . . . . . . .
dpl . . . . . . . .
p0 . . . . . . . . *
p1 в2 clkout в2ex int2' int6/cc3 int5/cc2 int4/cc1 int3'/cc0 *
p2 . . . . . . . . *
p3 rd' wr' в1 в0 int1' int0' txd rxd *
p4 . . . . . . . . *
p5 . . . . . . . . *
p6 . . . . . . . .
tmod gate1 c/t1 m1 m0 gate0 c/t0
m1 m0 89 0
tcon tf1 tr1 tf0 tr0 te1 it1 ie0 it0 *
th0 . . . . . . . .
tl0 . . . . . . . .
th1 . . . . . . . .
tl1 . . . . . . . .
pcon smod pds idls . gf1 gf0 pde idle
scon sm0 sm1 sm2 ren tb8 rb8 ti ri *
sbuf . . . . . . . .
ien0 eal wdt et2 es et1 ex1 et0 ex0 *
ien1 exen2 swdt ex6 ex5 ex4 ex3 ex2 eadc *
ip0 . wdts tf2+exf2 ri+ti tf1/ ie1/ tf0/ ie0/
ip1 . . iex6 iex5 iex4 iex3 iex2 iadc
ircon exf2 tf2 iex6 iex5 iex4 iex3 iex2 iadc *
cce cocah3 cocal3 cocah2 cocal2 cocah1 cocal1 cocah0 cocal0
ccl1 . . . . . . . .
cch1 . . . . . . . .
ccl2 . . . . . . . .
cch2 . . . . . . . .
ccl3 . . . . . . . .
cch3 . . . . . . . .
tl2 . . . . . . . .
th2 . . . . . . . .
t2con t2ps i3fr i2fr t2r1 t2r0 t2cm t2i1 t2i0 *
adcon bd clk . bsy adm mx2 mx1 mx0 *
addat . . . . . . . .
dapr . . . . . . . .
--------------------------------------------------------------------------------------
t2con:
t2ps=1¬Єб/2¬Єб i3fr=§ еў в \,/ t2r1-0=2-tf2/3-t2ex t2i1-0=-,tm2,1+,в2&1+
t2cm=mode comp 0/1
exf2=t2ex'& exen2
cocahi-cocali = -,§ еў в_int3',ба ўҐЁҐ,§ еў в_Ї®_§ ЇЁбЁ
* - ЎЁвл ¤®бвгЇл Ї® Ё¬Ґ ¬ Ё ¤аҐб ¬
3. ЋЇҐа ¤л
1/ ЋЎ®§ зҐЁп ®ЇҐа ¤®ў ў Є®¬ ¤ е:
#xx - Є®бв в
ri= {r0,r1,...,r7},
@rj - Є®бўҐ п ¤аҐб жЁп Є ўгв॥© RAM, rj={r0,r1}
ad - (00-ff) ¤pҐб pҐЈЁбвp Ё«Ё ўгвpҐҐЈ® Ћ‡“(00-7f),
Ё¬п бЇҐжЁ «м®Ј® pҐЈЁбвp sfr (д ©« sfr515.txt)
bit - 00-7f ¤pҐб ЎЁв ў Ї®«Ґ ЎЁв®ў,
а §ап¤ бЇҐжЁ «м®Ј® ॣЁбва acc.5, psw.0, ... ,
Ё¬п ЎЁв smod,sm0,.... бЇҐжЁ «м®Ј® ॣЁбва
/bit - ЁўҐpбЁп ЎЁв
rel - ®в®бЁвҐ«мл© ¤аҐб <¬ҐвЄ >
a16 - 16-а §ап¤л© ¤аҐб <¬ҐвЄ >
a11 - 11-а §ап¤л© ¤аҐб <¬ҐвЄ >
„«п ¤®бвгЇ Є Ё¬Ґ ¬ ॣЁбва®ў Ё ЎЁв®ў ў SAB515 Ё«Ё i51GB
ў Їа®Ја ¬¬Ґ ўў®¤Ёвбп в Ў«Ёж Ё¬Ґ sab515_.ini
2/ Љ®бв вл :
Є®бв вл ¬®Јгв Ўлвм ¤ўге вЁЇ®ў
- зЁб«ҐлҐ, ў Є®¬ ¤ е ®Ў®§ з овбп Є Є ҐЇ®б।б⢥лҐ
®ЇҐа ¤л #,
- ¤аҐблҐ, ў Є®¬ ¤ е Ґ Ё¬Ґов бЇҐжЁ «мле ®Ў®§ 票©
Є®бв вл ¬®Јгв Ўлвм ЇаҐ¤бв ў«Ґл пў® - Є®ЄаҐвл¬Ё § 票ﬨ Ё
Ґпў® - ўла ¦ҐЁп¬Ё, ўлзЁб«пҐ¬лҐ Є®¬ЇЁ«пв®а®¬
ЏаЁ пў®¬ § ¤ ЁЁ гЄ §лў Ґвбп бЁб⥬ бзЁб«ҐЁп(бЇҐжЁдЁЄ жЁп):
Ќ з «мл© Љ®Ґзл©
®б®ў ЁҐ ‘ЇҐжЁдЁЄ в®а ‘ЇҐжЁдЁЄ в®а
---- --------- ---------
2 % B
8 @ O or Q
16 $ H
ЏаЁ¬Ґа:
mov a,#254
mov a,#%11111110
mov a,#@200
mov a,#$FE
mov a,#11111110b
mov a,#376Q
mov a,#0FEh
mov dptr,#0a5fh
‘Ё¬ў®«л ¬®Јгв Ўлвм § Є«озҐл ў ®¤Ё®злҐ Є ўлзЄЁ ' Ё«Ё ¤ў®©лҐ
Є ўлзЄЁ ".
mov a,#'C'
Љ®бв влҐ ўла ¦ҐЁп - ЇаҐ¤бв ў«ҐЁҐ зЁб«Ґле
Є®бв в Ё ¤аҐб®ў. ‚ла ¦ҐЁп ўлзЁб«повбп Є®¬ЇЁ«пв®а®¬ ў 16-а §ап¤ле
д®а¬ в е, б®еа пҐвбп ¬« ¤иЁ© Ў ©в ¤«п Ў ©в®ўле д®а¬ в®ў ¤ ле
ў Є®¬ ¤ е.
ЋЇҐа в®а €бЇ®«м§®ў ЁҐ ђҐ§г«мв в
-------- ----- ------
+ x + y x + y
+ +x 0 + x
- x - y x - y
- -x 0 - x
* x * y 㬮¦ҐЁҐ x y (ЎҐ§§ Є®ў®Ґ)
/ x / y x / y (ЎҐ§§ Є®ў®Ґ)
MOD x MOD y ®бв в®Є x/y (ЎҐ§§ Є®ўл©)
SHL x SHL y x б¤ўЁгвл© ў«Ґў® г а §а冷ў
SHR x SHR y x б¤ўЁгвл© ўЇа ў® г а §а冷ў
HIGH HIGH x бв аиЁ© Ў ©в x
LOW LOW x ¬« ¤иЁ© Ў ©в x
. data.bit x гЄ § ЁҐ ЎЁв bit
ў п祩ЄҐ Ї® ¤аҐбг data
NOT NOT x ¤®Ї®«ҐЁҐ Є x
AND x AND y «®ЈЁзҐбЄ®Ґ € x Ё y
OR x OR y «®ЈЁзҐбЄ®Ґ €‹€ x Ё y
XOR x XOR y «®ЈЁзҐбЄ®Ґ ЁбЄ«оз о饥 €‹€ x Ё y
ЏаЁ®аЁвҐвл:
г ал© +, г ал© - ЁўлбиЁ©
* / MOD SHR SHL
+ - .
NOT
AND
OR XOR ЁЁ§иЁ©
ЏаЁ¬Ґал: ўла ¦ҐЁп ¤«п § ¤ Ёп Є®бв в ў Є®¬ ¤ е
mov a,#(55 - 3 )*2 + 6 ;mov a,#110
mov dptr,#( 77 / 5 + 1aah) - 5 ;mov dptr,#1c5h
4. „ЁаҐЄвЁўл бᥬЎ«Ґа
4.1. EQU - бЁ¬ў®«ЁзҐбЄ®Ґ ®ЇаҐ¤Ґ«ҐЁҐ § 票©, бўп§лў Ґв
§ 票Ґ-Є®бв вг б бЁ¬ў®«ЁзҐбЄЁ¬ ®Ў®§ 票Ґ¬,
в Єго Є®бв вг Ґ«м§п ЇҐаҐ®ЇаҐ¤Ґ«пвм
Ё¬п EQU ўла ¦ҐЁҐ
ЏаЁ¬Ґал:
VAR_0 equ 20H
VAR_1 equ 21H
MOV A,VAR_0 ; ¤аҐб п Є®бв в -п祩Є ўгв॥©
ADD A,VAR_1 ; Ї ¬пвЁ
MOV VAR_0,A
ЏаЁ¬Ґз ЁҐ: в®«мЄ® Є®¬ ¤л ¤®ЇгбЄ ов ®вбвгЇ ®в з « бва®ЄЁ,
ЇаЁзҐ¬ ¤«п Є®¬ ¤ в Є®© ®вбвгЇ ®Ўп§ ⥫Ґ; Їа®вЁў, ¤«п ¬Ґв®Є
Ё Ё¬Ґ, ®ЇаҐ¤Ґ«пҐ¬ле Ї®«м§®ў ⥫Ґ¬, ®вбвгЇл Ќ… „ЋЏ“‘’€Њ›.
ЌҐб®Ў«о¤ҐЁҐ нвЁе ¤®ў®«м® бва ле
гб«®ўЁ© Ўг¤Ґв ў®бЇаЁпв® ва б«пв®а®¬ Є Є ®иЁЎЄ .
‚лзЁб«пҐ¬лҐ Є®бв вл:
rr equ ( 44 and 22 + 6 )
Љ®бв в - § 票Ґ ¤аҐб®Ј® ўла ¦ҐЁп
offs equ ( met1 + met2 - met3 ) Ј¤Ґ met1,met2,met3 - ¬ҐвЄЁ
mov dptr,#(met1-met2)
4.2. SET - ўаҐ¬Ґ®Ґ бўп§лў ЁҐ § 票п б Ё¬ҐҐ¬,
ў ¤ «мҐ©иҐ¬ Ё¬п ¬®¦® ЇҐаҐ®ЇаҐ¤Ґ«Ёвм,
Ё¬п ¬®¦® а бб¬ ваЁў вм Є Є ЇҐаҐ¬Ґго, § 票Ґ Є®в®а®©
§ ўЁбЁв ®в нв Ї Є®¬ЇЁ«пжЁЁ Ё ¬®¦Ґв Ўлвм ЁбЇ®«м§®ў ® ў
гб«®ў®© Є®¬ЇЁ«пжЁЁ.
VAR_0 SET R0
VAR_1 SET R1
mem set 0a00h
SYMB_2 MOV A,VAR_0
ADD A,VAR_1
MOV VAR_0,A
mov dptr,#mem
.... ....
mem set 0c00h
mov dptr,#mem
.... .....
4.3. BIT бўп§лў Ґв ¤аҐб ЎЁв б Ё¬ҐҐ¬ Ўг«ҐўбЄ®© ЇҐаҐ¬Ґ®©:
x1 bit p3.2
x2 bit 05
s bit acc.0
ЏаЁ¬ҐҐЁҐ ЇаЁ ўлзЁб«ҐЁЁ § зҐЁп Ўг«ҐўбЄ®© дгЄжЁЁ
S = x1&x2 V /x1&/x2
clr c
mov c,x1
anl c,x2
mov x2,c
setb c
anl c,/x1
anl c,/x2
mov s,c
4.4. TEQ
бЁ¬ў®« TEQ § 票Ґ
бЁ¬ў®«_¤«п_ॣЁбва TEQ r4
‚६Ґ® бўп§лў Ґв § 票Ґ Ё«Ё Ё¬п ॣЁбва б бЁ¬ў®«®¬.
5. ЋаЈ Ё§ жЁп Ї ¬пвЁ.
Џ ¬пвм ¬ЁЄа®Є®ва®««Ґа а §¤Ґ«пҐвбп ўгваҐоо Ё ўҐиоо.
‚гваҐпп Ї ¬пвм - ॣЁбва®ў п
- Ї ¬пвм ¤ ле
- б⥪®ў п
- ЎЁв®ў п
- ॣЁбвал бЇҐжЁ «мле дгЄжЁ©
‚Ґипп Ї ¬пвм - ¤ ле
- Їа®Ја ¬¬
‘।бвў ¬Ё бᥬЎ«Ґа ¤ лҐ ®ЇаҐ¤Ґ«повбп ᥣ¬Ґв ¬Ё ў ®¤®¬
Ё§ гЄ § ле Є« бб®ў Ё ЇаЁ «ЁЄЁа®ў ЁЁ ®ЎкҐ¤Ёповбп ў
ҐЇаҐалўлҐ Ё ҐЇҐаҐбҐЄ ойЁҐбп ®Ў« бвЁ.
5.1. USING
USING n (б ®вбвгЇ®¬ !)
USING 1,2 Ё«Ё 3
१ҐаўЁагҐв ᮮ⢥вбвўгойЁҐ п祩ЄЁ 8-f, 10-17, 18-1f ў® ўгв॥©
Ї ¬пвЁ IRAM.
ЂбᥬЎ«Ґа Ї® 㬮«з Ёо ўбҐЈ¤ १ҐаўЁагҐв г«Ґў®© Ў Є
(¬®¦® бзЁв вм, зв® USING 0
ўбв ў«Ґ® ў з «Ґ «оЎ®© Їа®Ја ¬¬л)
‘¬ҐйҐЁҐ ¤ ле ў IRAM б гзҐв®¬ USING ўлЇ®«пҐвбп нв ЇҐ
«ЁЄЁа®ў Ёп.
5.2. SEG, DEFSEG
SEG Є« бб/Ё¬п_ᥣ¬Ґв (seg § ЇЁблў Ґвбп б ®вбвгЇ®¬ !)
SEG § ¤ Ґв ᥣ¬Ґв, ў Є®в®ал© ¤®«¦л ва б«Ёа®ў вмбп Ї®б«Ґ¤гойЁҐ
Є®¤/¤ лҐ. Љ« бб ®ЇаҐ¤Ґ«пҐвбп § १ҐаўЁа®ў л¬
б«®ў®¬ CODE, DATA, BIT, XDATA, IDATA
Ё«Ё ¬®¦Ґв Ўлвм Ё¬ҐҐ¬ ᥣ¬Ґв , а ҐҐ
®ЇаҐ¤Ґ«Ґ®Ј® ¤ЁаҐЄвЁў®© DEFSEG.
DEFSEG Ё¬п_ᥣ¬Ґв [,START = ¤аҐб] (defseg § ЇЁблў Ґвбп б ®вбвгЇ®¬ !)
[,ALIGN = ўла ўЁў ЁҐ]
[,BLOCK = а §¬Ґа]
[,OVERLAID]
[,ABSOLUTE]
[,PHANTOM]
[,CLASS = CODE or DATA or BIT or XDATA or IDATA]
seg Ё¬п_ᥣ¬Ґв
DEFSEG ®Ўмпў«пҐв ®ўл© ᥣ¬Ґв,
¤®Ї®«ЁвҐ«м® ®ЇаҐ¤Ґ«пп Ўб®«овл©
¤аҐб з « , ўла ўЁў ЁҐ (¤®«¦® Ўлвм б⥯Ґмо ¤ў®©ЄЁ) ᥣ¬Ґв ,
а §¬Ґа ᥣ¬Ґв , ЇҐаҐЄалвЁҐ б ®¤®Ё¬Ґл¬Ё ᥣ¬Ґв ¬Ё, Ўб®«о⮥
а §¬ҐйҐЁҐ ᥣ¬Ґв .
’®«мЄ® зЁб« а ўлҐ б⥯ҐЁ 2 а §аҐиҐ® ЁбЇ®«м§®ў вм ў ваЁЎгв е
ALIGN Ё BLOCK.
‘ҐЈ¬Ґв б ваЁЎг⮬ PHANTOM Ґ ¬®¦Ґв Ё¬Ґвм ваЁЎгв START= (б«Ґ¤гҐв
ЁбЇ®«м§®ў вм ORG). ЏаЁзЁ нв®Ј® ў ⮬, зв® ўбҐ ”ЂЌ’ЋЊЌ›… ᥣ¬Ґвл
а бб¬ ваЁў овбп Є Є зЁ ойЁҐбп б 0000, б г«Ґў®© д ЄвЁзҐбЄ®© ¤«Ё®©
(ў®в Ї®зҐ¬г ЁЄ®Ј¤ Ґ ў®§ЁЄ ов ®иЁЎЄЁ ЇаЁ «®¦ҐЁп § ЇЁбҐ©,
ўЄ«оз ойЁе ”ЂЌ’ЋЊЌ›… ᥣ¬Ґвл), Ё а §аҐиҐ® ЁбЇ®«м§®ў вм ®ЇҐа в®а ORG
¤«п «оЎ®Ј® Ї®«®¦ҐЁп (???).
‘ҐЈ¬Ґв DATA ў бᥬЎ«Ґа®¬ ⥪б⥠᫥¤гҐв а §¬Ґй вм Ї®б«Ґ ᥣ¬Ґв CODE.
ЏаЁ¬Ґал:
defseg c_text,class=CODE
seg c_text
...........
defseg r_data,class=DATA
seg r_data
v1 db 0,5,6
v2 dw 0
5.3. ЏҐаҐ¬ҐлҐ
DS, DB, DW १ҐаўЁагҐв Ї ¬пвм ў ᥣ¬ҐвҐ ᮮ⢥вбўго饣®
Є« бб (Їа ўЁ« пў®Ј® ®ЇаҐ¤Ґ«ҐЁп ᥣ¬Ґв®ў ў 2.7,
Ї® 㬮«з Ёо class=CODE)
DS n ђҐ§ҐаўЁагҐв n Ў ©в Ї ¬пвЁ.
DB Ў ©в,Ў ©в ... Ќ Є ¦¤л© аЈг¬Ґв Ё«Ё бЁ¬ў®« ў бва®ЄҐ
१ҐаўЁагҐвбп ®¤Ё Ў ©в Ї ¬пвЁ, гЄ § лҐ § 票п б®еа повбп
в®«мЄ® ў Ї ¬пвЁ Є« бб CODE.
DW б«®ў®, б«®ў® ...
„«п Є ¦¤®Ј® аЈг¬Ґв १ҐаўЁагҐвбп ®¤® б«®ў® Ї ¬пвЁ,
§ 票п б®еа повбп в®«мЄ® ў Ї ¬пвЁ Є« бб CODE.
5.4. ђ §¬ҐйҐЁҐ Їа®Ја ¬¬л ў ᥣ¬ҐвҐ CODE
Љ®¬ ¤л а §¬Ґй овбп Ї®б«Ґ¤®ў вҐ«м® Ї® бзҐвзЁЄг Є®¬ ¤ PC,
§ 票Ґ Є®в®а®Ј® Ї® 㬮«з Ёо ¬®¤ЁдЁжЁагҐвбп Є®¬ЇЁ«пв®а®¬ ўв®¬ вЁзҐбЄЁ.
Љ®¬ ¤л ¬®Јгв Ўлвм ®Ў®§ зҐл ¬ҐвЄ ¬Ё, зв® Ї®§ў®«пҐв ॠ«Ё§®ў вм
ўҐвў«ҐЁп Ї® Є®¬ ¤ ¬ гб«®ў®Ј® jc,jnc,jz,jb,jnb,jbc,djnz - ЇҐаҐе®¤ ,
ЎҐ§гб«®ў®Ј® ЇҐаҐе®¤ jmp, call.
Љ®¬ ¤л Jmp, call Є®ЄаҐвЁ§Ёаговбп Є®¬ЇЁ«пв®а®¬ ў ᮮ⢥вбўгойЁҐ Є®¬ ¤л
ajmp, sjmp, ljmp, lcall, scall Ё«Ё jmp @a+dptr б гзҐв®¬ ¤«Ёл ¤аҐб®Ј®
ЁвҐаў « ЇаЁ ЇҐаҐе®¤Ґ.
ЏаЁ¬Ґз ЁҐ: Ќ… ЋЃџ‡Ђ’…‹њЌЋ ¤ў®Ґв®зЁҐ Ї®б«Ґ Ё¬ҐЁ ¬ҐвЄЁ.
$ - ЇаЁ§ Є ¤аҐб ЇҐаў®Ј® Ў ©в Є®¤ Ё«Ё ¤ ле, бЈҐҐаЁа®ў ле
⥪гйЁ¬ ®ЇҐа в®а®¬ (⥪г饥 § 票Ґ Їа®Ја ¬¬®Ј® бзҐвзЁЄ ), ЇаЁ¬Ґа,
djnz r0, $ нЄўЁў «Ґв® ЇҐаҐе®¤г б ¬ҐвЄ®©
m1: djnz r0,m1
Ќ § 票Ґ Їа®Ја ¬¬®Ј® бзҐвзЁЄ ¤ЁаҐЄвЁў®© ORG
ORG ¤аҐб®Ґ ўла ¦ҐЁҐ
‚ ЇҐаҐ¬Ґй Ґ¬®¬ ᥣ¬ҐвҐ ORG гбв ў«Ёў Ґв ¤аҐб ў PC ®в®бЁвҐ«м® з «
ᥣ¬Ґв . ‚ Ўб®«о⮬ ᥣ¬ҐвҐ ORG гбв ў«Ёў Ґв ў PC Ўб®«овл© ¤аҐб.
6. END [¬ҐвЄ ]
¬ҐвЄ - Ґ ®Ўп§ ⥫мл© Ї а ¬Ґва,
‡ ¤ Ґв Є®Ґж ва б«Ёа㥬®Ј® ⥪бв
7. Њ®¤г«м®Ґ Їа®Ја ¬¬Ёа®ў ЁҐ.
Њ®¤г«Ё ®д®а¬«повбп Є Є Ґ§ ўЁбЁ¬лҐ Їа®жҐ¤гал б «®Є «мл¬Ё
Ё Ј«®Ў «мл¬Ё ббл«Є ¬Ё, Є®в®алҐ а §аҐи овбп ЇаЁ бЎ®аЄҐ
«ЁЄҐа®¬ AVL51.exe.
7.1. Ћд®а¬«ҐЁҐ Їа®жҐ¤га.
Ё¬п PROC
......
[Ё¬п] ENDPROC
ЋЎмпў«пҐв ®Ў« бвм б «®Є «мл¬Ё ¬ҐвЄ ¬Ё
‹®Є «млҐ ¬ҐвЄЁ зЁ овбп б 'L?'
L?1
‹®Є «млҐ бЁ¬ў®«л ¬®Јгв Ўлвм ®ЇаҐ¤Ґ«Ґл в®«мЄ® ўгваЁ PROC
€¬п ў ®ЇҐа в®аҐ ENDPROC Ґ вॡгҐвбп, ® Ґб«Ё Ґбвм, в®
® ¤®«¦ Ўлвм в®© ¦Ґ б ¬®©, зв® Ё ў ЇаҐ¤л¤г饬 ®ЇҐа в®аҐ PROC
‚«®¦ҐлҐ Їа®жҐ¤гал Ґ а §аҐиҐл
7.2. PUBLIC, EXTERN, EXTRN, GLOBAL
PUBLIC бЁ¬ў®«
ђ §аҐи Ґв ббл«Єг бЁ¬ў®« Ё§ ¤агЈЁе ¬®¤г«Ґ© ¤ЁаҐЄвЁў®© EXTERN.
EXTERN бЁ¬ў®«
Ё«Ё EXTRN бЁ¬ў®«
ЏаЁ¬Ґз Ёп:
1) «мвҐа вЁў п ¤ЁаҐЄвЁў global Ї®§ў®«пҐв б®зҐв вм ў®§¬®¦®бвЁ
public/extern;
2) Ё¬Ґ , гЄ § лҐ ў ¤ЁаҐЄвЁў е public Ё global, Ї®Ї ¤ ов ў sym-д ©«
Ё, б«Ґ¤®ў ⥫м®, ўЁ¤л бЁ¬г«пв®аг avsim51.
3) ¬®¦® ўбҐ Ё¬Ґ ᤥ« вм Ј«®Ў «мл¬Ё, § бзҐв ®ЇжЁЁ AP (ALLPUBLIC)
ЇаЁ § ЇгбЄҐ бᥬЎ«Ґа , ЇаЁ¬Ґа, ava51 file ap (ЇаЁ Є®¬Ї®®ўЄҐ
ҐйҐ § ¤ вм ®ЇжЁо -sy, ЇаЁ¬Ґа, avl51 file=file -sy, в® Ўг¤Ґв
бЈҐҐаЁа®ў sym-д ©«, ЇаЁ § ЇгбЄҐ бЁ¬г«пв®а б«Ґ¤гҐв § ¤ вм
Load Avocet <Ё¬п д ©« ЎҐ§ а биЁаҐЁп>)
ЏаЁ¬Ґа
extern area
global d0, d1
public d2
d0 db area
d1 db %11111110, @376, $FE
d2 db 11111110b, 376Q, 0FEh
7.3. ЏаЁ¬Ґал ¬®¤г«м®Ј® Їа®Ја ¬¬Ёа®ў Ёп.
; ¬®¤г«м A.asm
seg code
org reset
ljmp _start_1234567890
extern d7
; global d0, d1, d2
public d0, d2
seg data
_start_1234567890_ db 0
d0 db 254
d1 db %11111110, @376, $FE
d2 db 11111110b, 376Q, 0FEh
d3 db '1"',"O'k"
d4 db 0
seg code
_start_1234567890:
mov r0, #d7
mov d1, r0
l1 djnz r0, l1
end
; ¬®¤г«м B.asm
global d7
seg data
d7 equ 0
end
; .bat д ©«
ava51 a.asm ap ;ap-ўбҐ Ё¬Ґ Ј«®Ў «млҐ
ava51 b.asm ap
avl51 ab=a,b -sy ;ᮧ¤ вм бЁ¬ў®«млҐ д ©« Ё
бўп§ вм ¬®¤г«Ё ў ab.hex
avsim51 alaab ; a-вЁЇ Їа®жҐбб®а ,l-load,
a-avocet(§ Јаг§Є бЁ¬ў®«м®Ј® д ©« ),
ab.hex-§ Јаг¦ Ґ¬л© д ©«.hex
Ѓ…‡ а §¤Ґ«ЁвҐ«Ґ© !
8. Њ Єа®®ЇаҐ¤Ґ«ҐЁп
‘Ёв ЄбЁб ¬ Єа®®ЇаҐ¤Ґ«ҐЁп
Ё¬п %macro arg1,arg2,...
mov arg1,arg2
mov r&arg1,#arg2
[%exitm]
%endm
%exitm ЁбЇ®«м§гҐвбп ¤«п Ґ¬Ґ¤«Ґ®Ј® § ўҐаиҐЁп ЈҐҐа жЁЁ
¬ Єа®а биЁаҐЁп.
ЋЇҐа в®а &arg ЇаҐ¤бв ў«пҐв ⥪бв аЈг¬Ґв
ЋЇҐа в®ал гб«®ў®© ва б«пжЁЁ ў ¬ Єа®®ЇаҐ¤Ґ«ҐЁпе
%ifb arg аЈг¬Ґв Ґ § ¤
%ifnb arg аЈг¬Ґв § ¤
%ifeq arg1 arg2 аЈг¬Ґвл а ўл
%ifne arg1 arg2 аЈг¬Ґвл Ґ а ўл
ЏаЁ¬Ґал:
movr %macro dst,src
%ifb src
%exitm
%endif
%ifne dst src
mov a,r&src ; 'r' + бва®Є аЈг¬Ґв src
mov r&dst,a
%endif
%endm
movr 1,0
movr 7,7
‚ १г«мв ⥠Ўг¤Ґв бЈҐҐаЁа®ў ®
mov a,r1
mov r0,a
ЋЇҐа в®а % ЇаҐ¤бв ў«пҐв зЁб«®ў®Ґ § 票Ґ аЈг¬Ґв
st %macro reg
mov r®,a
%endm
ldcmac %macro wreg
st %wreg+wreg
st %(wreg+1)*2
nop
%endm
ldcmac 0
ldcmac 2
Ѓг¤Ґв бЈҐҐаЁа®ў ®:
mov r0, a
mov r2, a
nop
mov r4, a
mov r6, a
nop
‚® Ё§ЎҐ¦ ЁҐ ¤гЎ«Ёа®ў Ёп ¬Ґв®Є ЇаЁ ¬®Ј®Єа ⮬ ¬ Єа®ўл§®ўҐ
ЇаҐ¤« Ј овбп «®Є «млҐ (ў ЇаҐ¤Ґ« е ¬ Єа®®ЇаҐ¤Ґ«ҐЁп) ¬ҐвЄЁ:
%local бЇЁб®Є ¬Ґв®Є
ЏаЁ¬Ґа:
delay %macro count
%local loop
mov r0, #count
loop: djnz r0, loop
%endm
9. „ЁаҐЄвЁў INCLUDE <д ©«>
- ЇаЁ®бв ®ўЁвм Є®¬ЇЁ«пжЁо
⥪г饣® д ©« , Є®¬ЇЁ«Ёа®ў вм <д ©«>,
Їа®¤®«¦Ёвм Є®¬ЇЁ«пжЁо ⥪г饣® д ©« .
- а биЁаҐЁҐ бᥬЎ«Ґа Ё¬Ґ ¬Ё ॣЁбва®ў Ё ЎЁв®ў
¤агЈЁе ¬ЁЄа®Є®ва®««Ґа®ў б п¤а®¬ i51:
д ©«л 80c51gb.ini
sab515_.ini
<д ©«> Ґ ᮤҐа¦Ёв ¬ Єа®Є®¬ ¤ Ё ббл«®Є ¬ Єа®Є®¬ ¤л
10. ђ Ў®в б ¬ Єа®б ¬Ё Ё ЎЁЎ«Ё®вҐЄ ¬Ё
1/ ЂбᥬЎ«Ґа - п§лЄ ®ЇЁб Ёп ўЁавг «м®© ¬ иЁл
ЂбᥬЎ«Ґа - бЁ¬ў®«ЁзҐбЄ®Ґ ®ЇЁб ЁҐ аҐбгаб®ў ¬ЁЄа®Є®¬ЇмовҐа
Ё «Ј®аЁв¬ЁзҐбЄЁ© п§лЄ (¬Ґв®¤ Ё вҐе®«®ЈЁп «Ј®аЁв¬Ё§ жЁЁ).
(д ©« AVC51\HELP\asm51.txt).
ЋЇЁб ЁҐ аҐбгаб®ў ў бᥬЎ«ҐаҐ (бЁбвҐ¬л Є®¬ ¤, ®аЈ Ё§ жЁЁ
Ї ¬пвЁ, ўў®¤ /ўлў®¤ ,бЁбвҐ¬л ЇаҐалў Ё© Ё ¤а ) ўЁав㠫쮥.
ђҐ «м®Ґ а бЇаҐ¤Ґ«ҐЁҐ аҐбгаб®ў ®бгйҐбвў«пҐв Є®¬ЇЁ«пв®а.
‚Ёав㠫쮥 ®ЇЁб ЁҐ (ўЁавг «м п ¬ иЁ ) Ї®§ў®«пҐв Ўбва -
ЈЁа®ў вмбп ®в ॠ«м®Ј® ЁбЇ®«ҐЁп ¬ иЁл Ё
бЄ®жҐваЁа®ў вмбп ў®Їа®б е «Ј®аЁв¬Ё§ жЁЁ ЇаЁ
аҐиҐЁЁ Є®ЄаҐвле § ¤ з.
ђҐ «Ё§ жЁп ўЁавг «м®© ¬ иЁл ¬®¦Ґв Ўлвм - Їа®Ја ¬¬ п
(¬®¤Ґ«м ¬ЁЄа®Є®¬ЇмовҐа ) Ё«Ё ЇЇ а в п (¬ЁЄа®б奬 ¬ЁЄа®Є®¬ЇмовҐа )
Џа®Ја ¬¬ п ¬®¤Ґ«м - бЁ¬г«пв®а ®ЎҐбЇҐзЁў Ґв 㤮Ўл© Ї®«м§®ў ⥫м-
бЄЁ© ЁвҐа䥩б, Ї®§ў®«пойЁ© ЁвҐа ЄвЁў® гЇа ў«пвм аҐбгаб ¬Ё ¬ иЁл.
ЌҐ¤®бв вЄ®¬ бЁ¬г«пв®а пў«пҐвбп Ё§Є п бЄ®а®бвм ЁбЇ®«ҐЁп
(AVSIM51.exe - ў Єа®бб-бЁб⥬Ґ AVC51), Ґ ¤®бвгЇл нд䥪вл ЁбЇ®«ҐЁп
ў ॠ«м®¬ ўаҐ¬ҐЁ.
ЂЇЇ а в п ॠ«Ё§ жЁп ўЁавг «м®© ¬ иЁл - Є®ва®««Ґа-Їа®в®вЁЇ
®б®ўҐ SAB515 (LAB515.txt) б Їа®Ја ¬¬®© Ї®¤¤Ґа¦Є®© ў ўЁ¤Ґ ¬®Ёв®а-
®© бЁб⥬л (rism51.asm Ё imon51.frt ў Є в «®ЈҐ LAB). ‚ Є®ва®««ҐаҐ
Їа®Ја ¬¬л ўлзЁб«ҐЁп Ё Ё§¬ҐаҐЁп ¬®Јгв Ўлвм ўлЇ®«Ґл ў ॠ«м®¬
ўаҐ¬ҐЁ, १г«мв вл Ё¤ЁжЁа®ў л †Љ€, Ї®Є § л нд䥪вл гЇа ў«ҐЁп
Є« ўЁ вга®©.
Њ Єа® бᥬЎ«Ґа - бᥬЎ«Ґа б б।бвў ¬Ё а биЁаҐЁп-¬ Єа®Є®¬ ¤ ¬Ё,
Ї®§ў®«пойЁ¬Ё ᮧ¤ ў вм Ў®«ҐҐ нд䥪⨢лҐ
( б в®зЄЁ §аҐЁп ЁбЇ®«м§®ў Ёп)
ўЁавг «млҐ Є®¬ЇмовҐал Ў®«ҐҐ ўлб®Є®Ј® га®ўп Ўбва ЄжЁЁ.
„«п 8-а §а冷© ¬ иЁл ҐбвҐбвўҐл¬ а биЁаҐЁҐ¬
пў«пҐвбп ЇҐаҐе®¤ Є 16/32-а §а冷© аеЁвҐЄвгаҐ, Ї®¤¤Ґа¦Ёў о饩
®Ўа Ў®вЄг ¤ ле б।Ґ© в®з®бвЁ, Ё Є 32-а §а冷© аеЁвҐЄвгаҐ,
®ЎҐбЇҐзЁў о饩 ®Ўа Ў®вЄг ¤ ле б ўлб®Є®© в®з®бвмо.
‚Ёавг «м п ¬ иЁ (д ©« proc51.blk) ®вЄалв ¤«п а биЁаҐЁп
®ўл¬Ё ¬ Єа®Є®¬ ¤ ¬Ё Ё Ї®¤Їа®Ја ¬¬ ¬Ё.
ЋЇЁб ЁҐ ॣЁбва®ў Ё ¬ Єа®Є®¬ ¤л ў д ©«Ґ proc51.asm :
16-а §ап¤лҐ ॣЁбвал w0 w1 w2 w3 w4 w5 w6 w7 w8 w9
32-а §ап¤лҐ ॣЁбвал d0 d1 d2 d3 d4 d5 d6
2/ ‘Ёб⥬ Є®¬ ¤, ЇаҐ¤бв ў«Ґ п ЊЂЉђЋЉЋЊЂЌ„ЂЊ€ б ЇҐаҐ¬Ґл¬Ё
Ї а ¬Ґва ¬Ё:
addc_w y,x - б«®¦ҐЁҐ б«®ў б ЇҐаҐ®б®¬ wx+wy+б->wy,
‘-ўе®¤®© ЇҐаҐ®б
add_w y,#x - б«®¦ҐЁҐ б«®ў б Є®бв в®© #x+wy->wy ,
ॠ«Ё§ жЁп зҐаҐ§ dptr
addc_d y,x - б«®¦ҐЁҐ ¤ў®©ле б«®ў б ЇҐаҐ®б®¬ dx+dy+б->dy
mov_w y,x - wx->wy
mov_d y,x - dx->dy
mov_c y,#x - § ЇЁбм Є®бв вл ў б«®ў® #x->wy зҐаҐ§ dptr
clr_w x - 0->wx
clr_d x - 0->dx
cpl_w x - ¤®Ї®«ҐЁҐ б«®ў 0-wx-c->wx
cpl_d x - ¤®Ї®«ҐЁҐ ¤ў®©®Ј® б«®ў 0-dx-c->dx
subb_w y,x - ўлзЁв ЁҐ б«®ў б § Ґ¬®¬ wy-wx-c->wy
subb_d y,x - ўлзЁв ЁҐ ¤ў®©ле б«®ў б § Ґ¬®¬ dy-dx-c->dy
rlc_w x - б¤ўЁЈ б«®ў ў«Ґў® б ЇаЁ§ Є®¬ ‘ rlc(wx)
rlc_d x - б¤ўЁЈ ¤ў®©®Ј® б«®ў ў«Ґў® б ЇаЁ§ Є®¬ ‘ rlc(dx)
rrc_w x - б¤ўЁЈ б«®ў ўЇа ў® б ЇаЁ§ Є®¬ ‘ rrc(wx)
rrc_d x - б¤ўЁЈ ¤ў®©®Ј® б«®ў ўЇа ў® б ЇаЁ§ Є®¬ ‘ rrc(dx)
3/ Љ®¬ ¤л ЇаҐ¤бв ў«Ґл ЏЋ„ЏђЋѓђЂЊЊЂЊ€ б дЁЄбЁа®ў л¬Ё Ї а ¬Ґва ¬Ё:
clrw4 0->w4
clrd1 0->d1
dopcod -w0
shr47 rrc_d d1 c=0
sh1l47 rlc_d d1 c=0
sm0145 W0+W2->W0 c=0
DELN d1/w0->w3 Ё«Ё r4567/r01 -> r67,
бЁ¬¬ҐваЁз®Ґ ®ЄагЈ«ҐЁҐ
ЁбЇ®«м§говбп w4,w5=08-0b Є Є а Ў®зЁҐ
DELO d1/w0->w3 ®ЄагЈ«ҐЁҐ гбҐзҐЁҐ¬
mult w0*w1->d1 Ё«Ё R 0,1*R 2,3 -> R 4-7,
ЁбЇ®«м§гҐвбп w5=0a,0b Є Є а Ў®зЁҐ
shr4 d1/16 Ё«Ё r47 б¤ўЁгвм ўЇа ў® 4 ЎЁв
tr2d w0->w1 Ё«Ё R0,1 -> R2,3 r5-а Ў®зЁ©
trd2 w1->w0 Ё«Ё R 2,3 -> R 0,1 r4-7 а Ў®зЁҐ
sqrt32 Є®аҐм Ё§ d1 ў w0 Ё«Ё sqrt(r4-7)->r01
sqrt[r4-5] ->r01 а Ў®зЁҐ-r3,r7,0a,0b
SQRT16 SRQT[r4-5] ->r1 , бзҐвзЁЄ ў r7
4/ ЏаЁ¬Ґа а §а Ў®вЄЁ Їа®Ја ¬¬л ўлзЁб«ҐЁ©
sin=x - x^3/3! + x^5/5! = x(1-x^2/6(1-x^2/20)) ->
-> x/mx(mx-x^2/6/mx^2(mx-x^2/20/mx))
-----------б奬 ўлзЁб«ҐЁ© Ё ҐҐ ॠ«Ё§ жЁп ў ¬ Єа® бᥬЎ«ҐаҐ
---------------- а бЇаҐ¤Ґ«ҐЁҐ Ї ¬пвЁ
w0-w5 d0-d2 а Ў®зЁҐ ॣЁбвал
x equ w6 w6=d3=¤ў®Ёз®-¤ҐбпвЁзл© аЈг¬Ґв
mx equ w7 w7=d3+2=¬ бив Ў
xx equ d4 d4=w8-w9 = x^2
step1 equ d5 d5=mx-x^2/20/mx
¬ҐвЄЁ б奬 ўлзЁб«ҐЁ© ¬ Єа® бᥬЎ«Ґа
1 x^2 mov_w w0,x mov_w w2,x call mult mov_d xx,d1
2 20*mx mov_c w0,#20 mov_w w1,mx call mult mov_w w0,w3
3 [1]/[2] mov_d d1,xx call deln
4 mx-[3] mov_w w0,mx subb_w w0,w3 mov_w step1,w0
5 x^2
6 mx*6 mov_w w3,mx clr c rlc_w w3 add_w w3,mx rlc_w w3
7 [5]/[6] mov_w w0,w3 mov_d d1,xx call deln
8 [7]*[4] mov_w w0,w3 mov_w w1,step1 call mult
9 [8]/[7] mov_w w0,mx call deln
10 mx-[9] mov_w w0,mx subb_w w0,w3
11 [10]*x mov_w w1,x call mult
12 [11]/mx mov_w w0,mx call deln
11. ЃЁЎ«Ё®вҐЄЁ.
bibl_a.asm - ЎЁЎ«Ё®вҐЄ Ї®¤Їа®Ја ¬¬ 楫®© аЁд¬ҐвЁЄЁ б дЁЄбЁа®ў л¬Ё
Ї а ¬Ґва ¬Ё-ॣЁбва ¬Ё r0-r7,08-0b, ¬®¦Ґв § Јаг¦ вмбп
ў ЇаЁЄ« ¤го Їа®Ја ¬¬г
include <bibl_a.asm> (бЄ®ЎЄЁ Ґ ®Ўп§ ⥫мл)
bibl_f.asm - ¬ Єа®ЎЁЎ«Ё®вҐЄ б Ї« ў о饩 в®зЄ®© ў Є®а®вЄ®¬ д®а¬ вҐ
ЇаЁжЁЇ а Ў®вл б ЎЁЎЁ«Ё®вҐЄ®© в Є®© ¦Ґ Є Є б bibl_i
Соседние файлы в папке описание ассемблера i51(51fx,51gb,52,sab515535)