home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Datafile PD-CD 5
/
DATAFILE_PDCD5.iso
/
utilities
/
a
/
asm1
/
!ASM
/
Options
/
Macros
< prev
next >
Wrap
Text File
|
1996-07-26
|
1KB
|
100 lines
;
; Macros file
; Wow.
;
macro exg
{
#if p_num>2
#error Too many arguments
#endif
#if p_num<2
#error Too few arguments
#endif
eor p0,p0,p1
eor p1,p0,p1
eor p0,p0,p1
}
macro div
{
#if p_num>3
#error Too many arguments
#endif
#if p_num<3
#error Too few arguments
#endif
#if p0==p1
#error Registers must be different
#endif
#if p0==p2
#error Registers must be different
#endif
#if p1==p2
#error Registers must be different
#endif
; Division code by Hugo Fiennes
mov temp_reg,#0
cmp p1,#0
rsblt p1,p1,#0
sublt temp_reg,temp_reg,#1
cmp p2,#0
rsblt p2,p2,#0
mvnlt temp_reg,temp_reg
str temp_reg,_minusflag
mov temp_reg,#32
mov p0,#0
._loop
adds p1,p1,p1
adcs p0,p0,p0
cmp p0,p2
subge p0,p0,p2
addge p1,p1,#1
sub temp_reg,temp_reg,#1
cmp temp_reg,#0
bne _loop
ldr temp_reg,_minusflag
cmp temp_reg,#0
rsbne p1,p1,#0
mov p0,p1
b _end
._minusflag dcd 0
._end
}
macro fstdiv
{
; Division code by Hugo Fiennes
mov temp_reg,#0
cmp p1,#0
rsblt p1,p1,#0
sublt temp_reg,temp_reg,#1
cmp p2,#0
rsblt p2,p2,#0
mvnlt temp_reg,temp_reg
mov p0,#0
._loop
#rept 32
adds p1,p1,p1
adcs p0,p0,p0
cmp p0,p2
subge p0,p0,p2
addge p1,p1,#1
#endr
cmp temp_reg,#0
rsbne p1,p1,#0
mov p0,p1
._end
}