| Vermeiden!
| .macro maxs1 ;X,U
cp @0,@1
brge pc+2
mov @0,@1
.endm
.macro maxs1k ;X,U
cpi @0,@1
brge pc+2
ldi @0,@1
.endm.macro maxs2 ;XH,XL, UH,UL
cp @1,@3
cpc @0,@2
brge pc+2
movw @0:@1,@2:@3
.endm
.macro maxs2k ;XH,XL, U
cpi @1,LOW(@2)
mov temp,HIGH(@2)
cpc @0,temp
brge pc+3
ldiw @0,@1, @2
.endmmaxs1 macro RA,RB
local e
mov a,RA
clr c
subb a,RB
swap a
rr a
xrl a,PSW
jnb ACC.2,e
mov a,RB
mov RA,a
e:
endmsigned X = Minimum aus X und O (obere Grenze) vzb. if (x>=o) x=o;
|
|---|
| Vermeiden!
| .macro mins1 ;X,U
cp @0,@1
brlt pc+2
mov @0,@1
.endm
.macro mins1k ;X,U
cpi @0,@1
brlt pc+2
ldi @0,@1
.endm.macro mins2 ;XH,XL, UH,UL
cp @1,@3
cpc @0,@2
brlt pc+2
movw @0:@1,@2:@3
.endm
.macro mins2k ;XH,XL, U
cpi @1,LOW(@2)
mov temp,HIGH(@2)
cpc @0,temp
brlt pc+3
ldiw @0,@1, @2
.endmmins1 macro RA,RB
local e
mov a,RB
clr c
subb a,RA
swap a
rr a
xrl a,PSW
jb ACC.2,e
mov a,RB
mov RA,a
e:
endmsigned X = Eingrenzung von X zwischen U und O vzb. if (x<u) x=u; if (x>=o) x=o;
|
|---|
| Vermeiden!
| .macro lims1 ;X,U,O
maxs1 @0,@1
mins1 @0,@2
.endm
.macro lims1k ;X,U,O
maxs1k @0,@1
mins1k @0,@2
.endm.macro lims2 ;XH,XL, UH,UL, OH,OL
maxs2 @0,@1, @2,@3
mins2 @0,@1, @4,@5
.endm
.macro lims2k ;XH,XL, U, O
maxs2k @0,@1, @2
mins2k @0,@1, @3
.endmlims1 macro x,u,o
maxs1 x,u
mins1 x,o
endmunsigned X = Maximum aus X und U (untere Grenze) vzl. if (x<u) x=u;
|
|---|
|
| .macro maxu1 ;X,U
cp @0,@1
brsh pc+2
mov @0,@1
.endm
.macro maxu1k ;X,U
cpi @0,@1
brsh pc+2
ldi @0,@1
.endm.macro maxu2 ;XH,XL, UH,UL
cp @1,@3
cpc @0,@2
brsh pc+2
movw @0:@1,@2:@3
.endm
.macro maxu2k ;XH,XL, U
cpi @1,LOW(@2)
mov temp,HIGH(@2)
cpc @0,temp
brsh pc+3
ldiw @0,@1, @2
.endmmaxu1 macro RB
;X ist in A
cjne a,RB,$+3
jnc $+4
mov a,RB
endmunsigned X = Minimum aus X und O (obere Grenze) vzl. if (x>=o) x=o;
|
|---|
|
| .macro minu1 ;X,U
cp @0,@1
brlo pc+2
mov @0,@1
.endm
.macro minu1k ;X,U
cpi @0,@1
brlo pc+2
ldi @0,@1
.endm.macro minu2 ;XH,XL, UH,UL
cp @1,@3
cpc @0,@2
brlo pc+2
movw @0:@1,@2:@3
.endm
.macro minu2k ;XH,XL, U
cpi @1,LOW(@2)
mov temp,HIGH(@2)
cpc @0,temp
brlo pc+3
ldiw @0,@1, @2
.endmminu1 macro RB
;X ist in A
cjne a,RB,$+3
jc $+4
mov a,RB
endmunsigned X = Eingrenzung von X zwischen U und O vzl. if (x<u) x=u; if (x>=o) x=o;
|
|---|
|
| .macro limu1 ;X,U,O
maxu1 @0,@1
minu1 @0,@2
.endm
.macro limu1k ;X,U,O
maxu1k @0,@1
minu1k @0,@2
.endm.macro limu2 ;XH,XL, UH,UL, OH,OL
maxu2 @0,@1, @2,@3
minu2 @0,@1, @4,@5
.endm
.macro limu2k ;XH,XL, U, O
maxu2k @0,@1, @2
minu2k @0,@1, @3
.endmlimu1 macro u,o
;X ist in A
maxu1 x,u
minu1 x,o
endm| signed char X = Begrenzung(signed short X)
|
|---|
| Vermeiden!
| .macro cwbs ;XH,XL
subi @1,0x80 ;80h addieren
sbci @0,0xFF
breq pc+4 ;High-Teil 0: OK
ldi @1,0xFF
brge pc+2 ;wenn N^V == 0
ldi @1,0
subi @1,0x80 ;wieder vzb.
.endmcwbs macro XH,XL
local e
mov a,XL
add a,#80h
mov a,XH
adc a,#0
jz e
mov XL,#7Fh
swap a
rr a
xrl a,PSW
jnb ACC.2,e
inc XL
e:
endm | | | | | | | | | | | | | | | | | | | |