Komentarze
Znaki komentarza jednoliniowego powinniśmy poprzedzać znakiem ;
lub *
. Do oznaczania komentarza jednoliniowego najbezpieczniej jest jednak używać średnika ;
ponieważ znak *
ma też inne znaczenia, może oznaczać operację mnożenia, czy też aktualny adres podczas asemblacji. Średnik natomiast dedykowany jest tylko i wyłącznie do oznaczania komentarzy.
Do oznaczenia komentarza jednoliniowego możliwe jest też użycie znaków //
, a dla wieloliniowego znaków /* */
.
* to jest komentarz
; to jest komentarz
lda #0 ; to jest komentarz
dta 1 , 3 * BŁĘDNY KOMENTARZ, ZOSTANIE ŹLE ZINTERPRETOWANY
org $2000 + 1 BŁĘDNY KOMENTARZ, ZOSTANIE ŹLE ZINTERPRETOWANY
nop // to jest komentarz
// to jest komentarz
dta 1,2, /* komentarz */ 3,4
lda /* komentarz */ #0
/*
...
to jest komentarz wieloliniowy
...
*/
/*************************************
to tez jest komentarz wieloliniowy
**************************************/
Znaki oznaczające komentarz wieloliniowy /* */
i znaki oznaczające komentarz jednoliniowy //
można stosować bez ograniczeń.
Łączenie wierszy
Dowolną ilość wierszy listingu możemy połączyć (rozdzielić) w jeden wiersz używając znaku \
, np.:
lda 20\ cmp 20\ beq *-2
lda 20 \ cmp 20 \ beq *-2
lda #0 \lop sta $a000,y \ iny \ bne lop ; komentarz tylko na końcu takiego wiersza
Jeśli po znaku \
nie umieścimy znaku spacji, wówczas mnemonik czy inny ciąg znakowy może zostać zinterpretowany jako etykieta, należy pamiętać że znak \
oznacza początek nowej linii.
MADS kończy przetwarzać taki wiersz, aż do napotkania komentarza lub napotkania końca ciągu znakowego, dlatego komentarze możemy umieszczać tylko na końcu takiego wielo-wiersza.
UWAGA: Umieszczenie znaku
\
na końcu wiersza oznacza dla MADS chęć kontynuowania aktualnego wiersza od następnego wiersza, np.:
lda\
#\
12
Dla w/w przykładu otrzymamy rozkaz LDA #12
.
Łączenie mnemoników
Możliwość łączenia dwóch mnemoników za pomocą znaku dwukropka :
znana jest już z XASM. W MADS ta możliwość została rozszerzona o łączenie dowolnej liczby znanych MADS mnemoników, np.:
lda:cmp:req 20
lda:iny:sta:iny $600,y
Wyrażenia
Termin wyrażenie oznacza sekwencję operatorów i operandów (argumentów), która określa operacje, tj. rodzaj i kolejność obliczeń. Wyrażeniem złożonym nazywa się takie wyrażenie, w którym występuje dwa lub więcej operatorów. Operatory, które oddziaływują tylko na jeden operand, nazywa się jednoargumentowymi (unarnymi). Operatory dwuargumentowe nazywa się binarnymi.
Wartościowanie wyrażenia przebiega w porządku, określonym pierwszeństwem operatorów i w kierunku, określonym przez kierunek wiązania operatorów.
Liczby
MADS akceptuje zapis liczb w formacie decymalnym, hexadecymalnym, binarnym oraz w kodach ATASCII i INTERNAL.
zapis decymalny
-100
-2437325
1743
zapis hexadecymalny
$100
$e430
$000001
0x12
0xa000
0xaabbccdd
zapis binarny
%0001001010
%000000001
%001000
zapis kodami ATASCII:
'a'
'fds'
'W'*
zapis kodami INTERNAL:
"B"
"FDSFSD"
"."*
Tylko pierwszy znak ciągu ATASCII, INTERNAL jest znaczący. Znak *
za apostrofem zamykającym powoduje invers
znaku.
Dodatkowo możliwe są jeszcze dwie operacje +
-
dla ciągów znakowych, które powodują zwiększenie/zmniejszenie kodów znaków ograniczonych apostrofami.
"FDttrteSFSD"-12
'FDSFdsldksla'+2
Operatory
binarne
+ Addition
- Subtraction
* Multiplication
/ Division
% Remainder
& Bitwise and
| Bitwise or
^ Bitwise xor
<< Arithmetic shift left
>> Arithmetic shift right
= Equal
== Equal (same as =)
<> Not equal
!= Not equal (same as <>)
< Less than
> Greater than
<= Less or equal
>= Greater or equal
&& Logical and
|| Logical or
jednoargumentowe
+ Plus (does nothing)
- Minus (changes sign)
~ Bitwise not (complements all bits)
! Logical not (changes true to false and vice versa)
< Low (extracts low byte)
> High (extracts high byte)
^ High 24bit (extracts high byte)
= Extracts memory bank
: Extracts global variable value
kolejność wykonywania
first [] (brackets)
+ - ~ < > (unary)
* / % & << >> (binary)
+ - | ^ (binary)
= == <> != < > <= >= (binary)
! (unary)
&& (binary)
last || (binary)