|
IzhNews #06
29 августа 2000 |
|
Nonsense - about the features of the assembler Alasm 4.2 (macro, commands, conditional events, etc.)

■
NONSENSE
ALASM 4.2 RULEZ_ ..
(C) PIXel
__________________________________________
In this article I will try to explain
why do we need all the features
offers mentioned in the title
assembler, namely, macro and
Team conditional compilation. The reason for
writing was the complete absence
interest in the above ficham from local
encoders. In general, the usefulness of macros a lot
written in SCENERGY # 1. Flying / DR rather
well explained to everyone why they are needed, but
He did it on the example assembler TASM
4.12 by XLD, and I use ALASM_4.2.
I'll start with some definitions:
Macro [macro, macro instruction]
Team assembly language, canned in
several machine instructions.
If the vaschey program is the same
isndtruktsy sequence assembly
ispozuetsya several times, there is no
the need to rewrite it every time.
Much easier to decorate it as
macro and refer to it
appropriate macro. For example
often use Taku
sequence of commands:
ld hl, sourse
ld de, destenation
ld bc size-1
ldir
Oformim macro:
MACRO COPY; SOURSE, DEST, SIZE
LD HL,: 0
LD DE,: 1
LD BC, :2-1
LDIR
ENDM
For instance, we need to copy the screen
Address # S000:
...
COPY # 4000, # C000, # 1B00
...
Needless to use a macro is not
necessary if no parameters and
does not consist of directives, the assembler
For example:
MACRO CLS
LD HL, # 4000
LD DE, # C000
LD BC, # 1B00
LD (HL), L
LDIR
ENDM
Profitable to do routine, but they
below. This macro will be ineffective
since your code will be "bold", but a little
faster than with procedures.
Using macros makes the text
program graphically, for example:
...
PAUSE 10
BORDER 5
...
looks much nicer than:
...
LD B, 10
HALT
DJNZ $ -1
LD A, 5
OUT (# FE), A
...
Of course you can make ordinary
routines, but it will not be more economical:
LD A, 5
CALL BORDER
BORDER
OUT (# FE), A
RET
is distorted, since the call Procedure 3 and Bait
she is 2 bytes. When using
Macro have only 2 bytes.
Give an elementary macros:
MACRO BORDER; COLOR
LD A,: 0'7
OUT (# FE), A
ENDM
MACRO PAUSE
LD B,: 0
HALT
DJNZ $ -1
ENDM
MACRO SETIM2; LABEL
DI
LD A, # 5F
LD I, A
LD HL,: 0
LD (# 5FFF), HL
IM 2
EI
ENDM
MACRO TOALASM
LD BC, # 7FFD
LD A,% 00010100
OUT (C), A
JP # C000
ENDM
The next is more difficult:
MACRO GETMEM; LABEL, SIZE
; Label - the beginning of the target area
; Size - the size of the
IFN? SLOWMEM
And if the label does not opedelena then define its
SLOWMEM EQU # 6000
, Assigning a value to it # 6000
ENDIF
: 0 = SLOWMEM
; Label - the beginning of the free area
SLOWMWM = SLOWMEM +: 1
; For the trail. Treatment (: 1 = size)
IFN (('(# 8000-SLOWMEM)) '% 10000000)
And if slowmem> # 8000
BORDER 2
; Tipo error
TOALASM
; Return home.
ENDIF
ENDM
This macro generates code only
event abroad # 8000. The idea
creation arose after reading an article
Flying'a in SCENERGY # 1 and placed it on
image macro for TASM_4.12.
Well, I think makrosostroenie tepr boils at
our town (and maybe not only in
our). We strongly recommend that you read
article to which I have repeatedly referred.
As I have said to use macros
not always effective and should be used
standard procedure, ie ispozovat
procedure. On creation of libraries of procedures
spoke Flying, but there has to
beginning of the source code to indicate that I need, but
no. In ALASM'e can avoid this
rudiment. Suppose the library contains 50
procedures and loaded at the end of the source.
I'm in my program using 2 procedures:
clrscr and clratr, then I must
otassemblirovat only them. Êàî
library must register as follows:
IF? PROC1-1
PROC1 ....
ENDIF
IF? PROC2-1
PROC2 ....
ENDIF
so on. procedure PROCh will otassemblirovana only if requested
to do it from your source.
That is perhaps all, what if someone does not
understood, I think he should read the Help to
ALASM'y 4. 2 and all will be RULEZz_. and if
it does not help then we can as something with
contact me and I will try to explain more
once more.
Yes, to get there in the annex is
the source of my macros and an example
library procedures, as well as the source of their
All yuzayuschy.
__________________________________________
Other articles:
Similar articles:
В этот день... 15 November