Новые добавления.
1. Сделан 64-битовый математический блок. 10-ть знаков до и 10-ть знаков после запятой. Скорость мат-функций всего в два раза быстрее ВАСИКа. Не очень хорошё работает оптимезатор мат-функций, будет время доделаю. Пример
Вообщем посчитает. Как вы уже поняли VAR откушает 8 байт памяти на числовую операцию. Можете не писать =??? и тогд туда автоматом пропишется 0. Совет, не резервируйте регистры с именем "A", этим вы замените все аккумуляторы на точку памяти.Код:EQU $ASAM.PASS.ERROR=2 INCLUDE "asam-80.inc" ORG 33025 MATH R_A-8*56+R_B/4 - 3*(SIN*R_B) RET VAR R_A=3 VAR R_B=-7 ASAM.MATH.INIT
Так же в мат-модуле есть внутренние регистры. Ежели вы использете хотя бы раз "MATH A=6553H.34", то под регистр "А" будет автоматически зарезервировано место.
Числовой формат: первые четыре байта это значение до запятой, последние четыре байта это значение после запятой.
2. Сделаны числовые метки. Допустим:
В итоге мы получаем метку "POPIK00213"Код:LAB EQU 213 POPIKLAB05 ;Как всегда кодировка винды не поддерживает нужные символы ...
3. Модернезирован макрос:
Ну и теперь у вас есть ифы ... Компилятор будет искать любые вариации разделяя их жёсткими сепараторами из макросов. Как появится время опишу все главные комманды.Код:.IF (<>) THEN√ ;ЧТО-то .. .IF (<=) THEN√ ;ЧТО-то .. .IF (=>) THEN√ ;ЧТО-то .. .IF (<) THEN√ ;ЧТО-то .. .IF (>) THEN√ ;ЧТО-то .. .IF (=) THEN√ ;ЧТО-то ..
4. Сделаны метки с приоритетами:
Как вы заметили оператор EQUID резервирует метку _ASAM_IF_ELSE001. В квадратных скобках указывается приоритет. В "ELSE" он имеет 1, в "END IF" он 2. Ежели вы напишите:Код:.IF (=) THEN√ ASAM_INC_IFC MATH (@.0)-(@.1) JZ _ASAM_IF_ELSE$ASAM.ASAM.IFC03 .. .ELSE EQUID _ASAM_IF_ELSE$ASAM.ASAM.IFC03[1]=$ .. .END IF EQUID _ASAM_IF_ELSE$ASAM.ASAM.IFC03[2]=$ _ASAM_IF_END$ASAM.ASAM.IFC03[2] ASAM_DEC_IFC ..
В данном случае "ELSE" не учавствует в коде, и автоматически _ASAM_IF_ELSE001 будет равен _ASAM_IF_END001 и указывать на конец IF'а. Если:Код:IF 7=7 THEN LD A,1 END IF
То в данном случае _ASAM_IF_ELSE001 будет компилятором встречаться дважды но в "END IF" будет иметь приоритет 2 и игнорироваться.Код:IF 7=7 THEN LD A,1 ELSE LD A,0 END IF
Имея фантазию вы легко сделаете любые операторы.




Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 
