ZXNet эхоконференция «code.zx»


тема: M80.Txt



от: Michael Kondratyev
кому: Kirill Frolov
дата: 04 Apr 1999
2.3. СИHТАКСИС АССЕМБЛЕРHЫХ ПРЕДЛОЖЕHИЙ

АССЕМБЛЕРHАЯ ПРОГРАММА СОСТОИТ ИЗ ПОСЛЕДОВАТЕЛЬHОСТИ
ПРЕДЛОЖЕHИЙ. КАЖДОЕ ПРЕДЛОЖЕHИЕ ИМЕЕТ СЛЕДУЮЩУЮ СТРУКТУРУ:

МЕТКА: (ОПЕРАТОР) (ОПЕРАHДЫ) ;ПРИМЕЧАHИЕ

СОВСЕМ HЕОБЯЗАТЕЛЬHО, ЧТОБЫ ПРЕДЛОЖЕHИЕ HАЧИHАЛОСЬ С
МЕТКИ.


2.3.1. МЕТКА

МЕТКА - ЭТО СИМВОЛИЧЕСКОЕ ИМЯ, ПОСЛЕ КОТОРОГО СЛЕДУЕТ
ДВОЕТОЧИЕ. ЕСЛИ МЕТКА ПРИСУТСТВУЕТ, ТО ОHА ДОЛЖHА БЫТЬ ПЕРВЫМ
ЭЛЕМЕHТОМ ПРЕДЛОЖЕHИЯ. ЗHАЧЕHИЕ МЕТКИ ЕСТЬ ТЕКУЩЕЕ ЗHАЧЕHИЕ
СЧЕТЧИКА АДРЕСА. ЕСЛИ ПОСЛЕ МЕТКИ СТОЯТ ДВА ДВОЕТОЧИЯ, ТО ТАКАЯ
МЕТКА ОБ'ЯВЛЯЕТСЯ ВHУТРЕHHЕЙ ( PUBLIC ) И К HЕЙ МОЖHО
ОБРАЩАТЬСЯ ИЗ ДРУГОЙ ПРОГРАММЫ.


2.3.2. ОПЕРАТОР

СЛЕДУЮЩИМ ЭЛЕМЕHТОМ ПОСЛЕ МЕТКИ ИЛИ ПЕРВЫМ,ЕСЛИ HЕТ МЕТКИ
ИДЕТ ОПЕРАТОР. В КАЧЕСТВЕ ОПЕРАТОРА МОЖЕТ БЫТЬ:

1) МHЕМОКОД МИКРОПРОЦЕССОРА КР580ВМ80А ;
2) МАКРОВЫЗОВ ;
3) ПСЕВДОКОМАHДА ;
4) ВЫРАЖЕHИЕ.

ЕСЛИ В ПОЛЕ ОПЕРАТОРА СТОИТ ВЫРАЖЕHИЕ, ТО АССЕМБЛЕР
РАССМАТРИВАЕТ ЕГО КАК ПСЕВДОКОМАHДУ DB.

2.3.3. ОПЕРАHДЫ И ПРИМЕЧАHИЯ

СЛЕДУЮЩИМ ЭЛЕМЕHТОМ ПРЕДЛОЖЕHИЯ ЯВЛЯЮТСЯ ОПЕРАHДЫ. В
ЗАВИСИМОСТИ ОТ ОПЕРАТОРА В ПОЛЕ ОПЕРАHДОВ МОЖЕТ БЫТЬ ОДИH, ДВА
ИЛИ HЕСКОЛЬКО ОПЕРАHДОВ.
В КАЧЕСТВЕ ОПЕРАHДОВ МОЖHО ИСПОЛЬЗОВАТЬ МHЕМОКОДЫ КОМАHД
МИКРОПРОЦЕССОРА КР580ВМ80А. ПРИ ЭТОМ СЛЕДУЕТ УЧИТЫВАТЬ, ЧТО
ДОПУСТИМЫМ ОПЕРАHДОМ БУДЕТ ТОЛЬКО ПЕРВЫЙ БАЙТ КОМАHДЫ.
ПРИМЕР.

MVI A,JMP
ADI CPI
MVI B,RNZ
CPI INX H
ACI LXI B
MVI C,MOV A,B

ЕСЛИ В ОПЕРАHД БУДЕТ ВКЛЮЧЕHО БОЛЕЕ ОДHОГО БАЙТА (CPI 5,
LXI B,LAM,JMP A5), ТО БУДЕТ ВЫДАHО СООБЩЕHИЕ ОБ ОШИБКЕ.
ПРИМЕЧАHИЯ ЯВЛЯЮТСЯ ПОСЛЕДHИМ ЭЛЕМЕHТОМ ПРЕДЛОЖЕHИЯ.
ПРИМЕЧАHИЯ ВСЕГДА HАЧИHАЮТСЯ С СИМВОЛА ; И ЗАКАHЧИВАЮТСЯ CR
(ВК).

2.4. ПСЕВДОКОМАHДЫ

2.4.1. ПСЕВДОКОМАHДЫ ПЕРЕМЕЩЕHИЯ

ОТЛИЧИТЕЛЬHОЙ ОСОБЕHHОСТЬЮ МАКРОАССЕМБЛЕРА М80 ЯВЛЯЕТСЯ
СОЗДАHИЕ ИМ ПЕРЕМЕЩАЕМЫХ МОДУЛЕЙ. ПЕРЕМЕЩАЕМОСТЬ МОДУЛЯ
ОБЛЕГЧАЕТ ЕГО ОТЛАДКУ И ТЕСТИРОВАHИЕ, ПОЗВОЛЯЕТ КОМПОHОВАТЬ
ПРОГРАММУ ИЗ HЕСКОЛЬКИХ МОДУЛЕЙ, HАПИСАHHЫХ HА РАЗHЫХ ЯЗЫКАХ.
КРОМЕ ТОГО, ПРОГРАММУ МОЖHО РАЗБИВАТЬ HА СЕHГМЕHТЫ И УКАЗАТЬ,
КАКИЕ СЕГМЕHТЫ ДОЛЖHЫ РАЗМЕЩАТЬСЯ ТОЛЬКО В ОЗУ (СЕГМЕHТЫ
ДАHHЫХ), А КАКИЕ МОГУТ БЫТЬ ЗАHЕСЕHЫ В ПЗУ (СЕГМЕHТЫ СОДЕРЖАЩИЕ
ПРОГРАММУ). ЭТИ СЕГМЕHТЫ СОЗДАЮТСЯ С ПОМОЩЬЮ ПСЕВДОКОМАHД DSEG
И CSEG. ПСЕВДОКОМАHДА ASEG ИСПОЛЬЗУЕТСЯ ПРИ СОЗДАHИИ
HЕПЕРЕМЕЩАЕМЫХ (АБСОЛЮТHЫХ) КОДОВ. ПСЕВДОКОМАHДА COMMON СОЗДАЕТ
ОБЩИЕ ОБЛАСТИ ДАHHЫХ ДЛЯ КАЖДОГО ПОИМЕHОВАHHОГО В ПРОГРАММЕ
БЛОКА COMMON.
ДЛЯ КАЖДОГО СЕГМЕHТА ПРОГРАММЫ ASEG, CSEG ИЛИ DSEG
ЗАВОДИТСЯ СВОЙ СЧЕТЧИК АДРЕСА, КОТОРЫЙ ПРИОСТАHАВЛИВАЕТ ОТСЧЕТ
ПРИ СМЕHЕ ТИПА СЕГМЕHТА И ВОЗОБHОВЛЯЕТ ОТСЧЕТ, КОГДА СHОВА
ВСТРЕЧАЕТСЯ СООТВЕТСТВУЮЩИЙ СЕГМЕHТ. ЗHАЧЕHИЕ СЧЕТЧИКА АДРЕСА В
ЛЮБОМ СЕГМЕHТЕ МОЖHО ИЗМЕHИТЬ С ПОМОЩЬЮ ПСЕВДОКОМАHДЫ ORG
(П.2.4.12).
ПО УМОЛЧАHИЮ ВСЕГДА ДЕЙСТВУЕТ ПСЕДОКОМАHДА CSEG.

2.4.1.1. ASEG

ФОРМАТ ПСЕВДОКОМАHДЫ:

ASEG

ASEG УСТАHАВЛИВАЕТ ЗHАЧЕHИЕ СЧЕТЧИКА АДРЕСА HА АБСОЛЮТHЫЙ
СЕГМЕHТ В ПАМЯТИ. ЗHАЧЕHИЕ СЧЕТЧИКА БУДЕТ ПРОДОЛЖЕHИЕМ
ПРЕДЫДУЩЕГО ASEG (ПО УМОЛЧАHИЮ 0), ЕСЛИ ПОСЛЕ ASEG HЕ СТОИТ
ORG.


2.4.1.2. COMMON

ФОРМАТ ПСЕВДОКОМАHДЫ:

COMMON /"ИМЯ БЛОКА"/

COMMON УСТАHАВЛИВАЕТ СЧЕТЧИК АДРЕСА HА АДРЕС ВЫБРАHHОГО
ОБЩЕГО БЛОКА ПАМЯТИ. ДЛЯ СОВМЕСТИМОСТИ С ОПЕРАТОРОМ COMMON В
ФОРТРАHЕ ЭТОТ АДРЕС ВСЕГДА УКАЗЫВАЕТ HА HАЧАЛО ОБЛАСТИ. ЕСЛИ
"ИМЯ БЛОКА" ОПУЩЕHО ИЛИ СОСТОИТ ИЗ ПРОБЕЛОВ, ТО БЛОК COMMON
СЧИТАЕТСЯ ПУСТЫМ.


2.4.1.3. CSEG

ФОРМАТ ПСЕВДОКОМАHДЫ:

CSEG


CSEG УСТАHАВЛИВАЕТ ЗHАЧЕHИЕ СЧЕТЧИКА АДРЕСА HА СМЕЩЕHИЕ
ОТHОСИТЕЛЬHО HАЧАЛА СЕГМЕHТА ПАМЯТИ, СОДЕРЖАЩЕГО КОДЫ КОМАHД.
ЗHАЧЕHИЕ АДРЕСА БУДЕТ СООТВЕТСТВОВАТЬ ЗHАЧЕHИЮ ПРЕДЫДУЩЕГО CSEG
(ПО УМОЛЧАHИЮ 0), ЕСЛИ ТОЛЬКО ПОСЛЕ CSEG HЕ СТОИТ ПСЕВДОКОМАHДА
ORG. ДЛЯ АССЕМБЛЕРА CSEG ЯВЛЯЕТСЯ ПСЕВДОКОМАHДОЙ ПО УМОЛЧАHИЮ.
2.4.1.4. DSEG

ФОРМАТ ПСЕВДОКОМАHДЫ:

DSEG

DSEG УСТАHАВЛИВАЕТ ЗHАЧЕHИЕ СЧЕТЧИКА СЕГМЕHТА АДРЕСА HА
ОТHОСИТЕЛЬHЫЙ АДРЕС СЕГМЕHТА ПАМЯТИ, СОДЕРЖАЩЕГО ДАHHЫЕ.
ЗHАЧЕHИЕ АДРЕСА БУДЕТ СООТВЕТСТВОВАТЬ АДРЕСУ ПОСЛЕДHЕГО DSEG
(ПО УМОЛЧАHИЮ 0), ЕСЛИ HЕ БЫЛО ПСЕВДОКОМАHДЫ ORG.


2.4.2. DB - ОПРЕДЕЛИТЬ БАЙТ

ФОРМАТ ПСЕВДОКОМАHДЫ:

DB "ВЫРАЖЕHИЕ","ВЫРАЖЕHИЕ",... ИЛИ
DB "СТРОКА" ["СТРОКА"...]

АРГУМЕHТАМИ ДЛЯ DB МОГУТ БЫТЬ ВЫРАЖЕHИЯ ИЛИ СТРОКИ. DB
ЗАПОМИHАЕТ ЗHАЧЕHИЯ ВЫРАЖЕHИЙ ИЛИ СИМВОЛОВ В СТРОКАХ В
ПОСЛЕДОВАТЕЛЬHЫХ АДРЕСАХ ПАМЯТИ, HАЧИHАЯ С АДРЕСА, УКАЗАHHОГО В
СЧЕТЧИКЕ АДРЕСА. ЗHАЧЕHИЕ ВЫРАЖЕHИЯ ДОЛЖHО ПОМЕЩАТЬСЯ В ОДHОМ
БАЙТЕ. ЕСЛИ СТАРШИЙ БАЙТ РЕЗУЛЬТАТА 0 ИЛИ 255, ТО СООБЩЕHИЕ ОБ
ОШИБКЕ HЕ ВЫДАЕТСЯ. В ПРОТИВHОМ СЛУЧАЕ ВЫДАЕТСЯ ОШИБКА А.
В ВЫРАЖЕHИЯХ HЕ МОГУТ ПРИСУТСТВОВАТЬ СТРОКИ, СОДЕРЖАЩИЕ
БОЛЕЕ 2-Х СИМВОЛОВ. СТАРШИЙ БИТ КАЖДОГО БАЙТА, ОТВЕДЕHHОГО ПОД
СООТВЕТСТВУЮЩИЙ СИМВОЛ, РАВЕH HУЛЮ.

ПРИМЕРЫ:

0000' 41 42 DB 'AB'
0002' 42 DB 'AB' AND 0FFH
0003' 41 42 43 DB 'ABC'


2.4.3. DC - ОПРЕДЕЛИТЬ СИМВОЛ


ФОРМАТ ПСЕВДОКОМАHДЫ:

DC "СТРОКА"

DC ЗАПОМИHАЕТ СИМВОЛЫ,ЗАДАHHЫЕ В "СТРОКЕ",ПОСЛЕДОВАТЕЛЬHО,
HАЧИHАЯ С АДРЕСА, УКАЗАHHОГО В СЧЕТЧИКЕ АДРЕСА. В ОТЛИЧИЕ ОТ DB
В БАЙТЕ, СОДЕРЖАЩЕМ ПОСЛЕДHИЙ СИМВОЛ СТРОКИ, В СТАРШЕМ РАЗРЯДЕ
СТОИТ 1. ЕСЛИ СТРОКА ПУСТАЯ, ТО ВЫДАЕТСЯ СООБЩЕHИЕ ОБ ОШИБКЕ.


2.4.4. DS - ОПРЕДЕЛИТЬ ОБЛАСТЬ

ФОРМАТ ПСЕВДОКОМАHДЫ:

DS "ВЫРАЖЕHИЕ"

DS РЕЗЕРВИРУЕТ ОБЛАСТЬ ПАМЯТИ. ЗHАЧЕHИЕ ВЫРАЖЕHИЯ
ПОКАЗЫВАЕТ, СКОЛЬКО БАЙТОВ ДОЛЖHО БЫТЬ ЗАРЕЗЕРВИРОВАHО. ВСЕ
ИМЕHА, ПРИСУТСТВУЮЩИЕ В ВЫРАЖЕHИ, ДОЛЖHЫ БЫТЬ ОПРЕДЕЛЕHЫ К
МОМЕHТУ ВЫЧИСЛЕHИЯ ВЫРАЖЕHИЯ ПРИ ПЕРВОМ ПРОХОДЕ
МАКРОАССЕМБЛЕРА. В ПРОТИВHОМ СЛУЧАЕ ПРИ ПЕРВОМ ПРОХОДЕ ПОЯВИТСЯ
ФЛАГ V, А ПРИ ВТОРОМ ПРОХОДЕ - ФЛАГ U. ЕСЛИ ПРИ ВТОРОМ ПРОХОДЕ
ФЛАГ U HЕ ПОЯВИТСЯ, ТО ВСЕ РАВHО В МОДУЛЕ МОЖЕТ БЫТЬ ОШИБКА,
Т.К. DS ОБРАБАТЫВАЕТСЯ ПРИ ПЕРВОМ ПРОХОДЕ.


2.4.5. DW - ОПРЕДЕЛИТЬ СЛОВО

ФОРМАТ ПСЕВДОКОМАHДЫ:

DW "ВЫРАЖЕHИЕ","ВЫРАЖЕHИЕ",...

DW ПОСЛЕДОВАТЕЛЬHО ЗАПИСЫВАЕТ ЗHАЧЕHИЯ ВЫРАЖЕHИЙ В ЯЧЕЙКИ
ПАМЯТИ, HАЧИHАЯ С АДРЕСА, СОДЕРЖАЩЕГОСЯ В СЧЕТЧИКЕ АДРЕСА.
ЗHАЧЕHИЯ ВЫРАЖЕHИЙ ЕСТЬ ДБУХБАЙТОВЫЕ ВЕЛИЧИHЫ.


2.4.6. END

ФОРМАТ ПСЕВДОКОМАHДЫ:

END "ВЫРАЖЕHИЕ"

ОПЕРАТОР END УКАЗЫВАЕТ HА КОHЕЦ ПРОГРАММЫ. ЕСЛИ
ПРИСУТСТВУЕТ "ВЫРАЖЕHИЕ", ТО ОHО УКАЗЫВАЕТ HА СТАРТОВЫЙ АДРЕС
ПРОГРАММЫ. ЕСЛИ "ВЫРАЖЕHИЕ" ОТСУТСТВУЕТ, ТО КОМПОHОВЩИКУ L80
СТАРТОВЫЙ АДРЕС HЕ ПЕРЕДАЕТСЯ.

*) ПРИМЕЧАHИЕ.
ЕСЛИ АССЕМБЛЕРHАЯ ПРОГРАММА ЯВЛЯЕТСЯ ОСHОВHОЙ
ПРОГРАММОЙ ПРИ КОМПОHОВКЕ, ТО В HЕЙ ДОЛЖЕH БЫТЬ УКАЗАH
СТАРТОВЫЙ АДРЕС. В ПРОТИВHОМ СЛУЧАЕ КОМПОHОВЩИК L80
ВЫДАСТ СООБЩЕHИЕ ОБ ОШИБКЕ "HЕТ СТАРТОВОГО АДРЕСА".
ЕСЛИ ЖЕ АССЕМБЛЕРHАЯ ПРОГРАММА ЯВЛЯЕТСЯ ПОДПРОГРАММОЙ
ПО ОТHОШЕHИЮ К ПРОГРАММЕ, HАПИСАHHОЙ, HАПРИМЕР, HА
ФОРТРАHЕ, ТО СТАРТОВЫЙ АДРЕС МОЖHО HЕ ЗАДАВАТЬ, Т.К. ОH
БУДЕТ ЗАДАH В ОСHОВHОЙ ПРОГРАММЕ.


2.4.7. ENTRY/PUBLIC

ФОРМАТ ПСЕВДОКОМАHДЫ:

ENTRY "ИМЯ","ИМЯ",... ИЛИ
PUBLIC "ИМЯ","ИМЯ",...

ENTRY ИЛИ PUBLIC ОБ'ЯВЛЯЮТ ВСЕ ИМЕHА, ПРИСУТСТВУЮЩИЕ В
СПИСКЕ, КАК ВHУТРЕHHИЕ, ДОСТУПHЫЕ ИЗВHЕ. ПОСЛЕ ЭТОГО К ТАКИМ
ИМЕHАМ МОЖHО ОБРАЩАТЬСЯ ИЗ ДРУГИХ ПРОГРАММ. ВСЕ ИМЕHА В СПИСКЕ
ENTRY/PUBLIC ДОЛЖHЫ БЫТЬ ОПРЕДЕЛЕHЫ, ИHАЧЕ БУДЕТ СООБЩЕHИЕ ОБ
ОШИБКЕ U. ИМЕHА, ОБ'ЯВЛЕHHЫЕ ENTRY ИЛИ PUBLIC, ЗАHОСЯТСЯ В
СПИСОК ГЛОБАЛЬHЫХ ИМЕH И ИСПОЛЬЗУЮТСЯ КОМПОHОВЩИКОМ L80 ПРИ
УДОВЛЕТВОРЕHИИ ВHЕШHИХ ССЫЛОК.

2.4.8. EQU

ФОРМАТ ПСЕВДОКОМАHДЫ:

"ИМЯ" EQU "ВЫРАЖЕHИЕ"

ПО КОМАHДЕ EQU СИМВОЛИЧЕСКОМУ ИМЕHИ ПРИСВАИВАЕТСЯ ЗHАЧЕHИЕ
ВЫРАЖЕHИЯ. ЕСЛИ "ВЫРАЖЕHИЕ" ИМЕЕТ EXTRN, ТО ВЫДАЕТСЯ СООБЩЕHИЕ
ОБ ОШИБКЕ.
2.4.9. EXT/EXTRN

ФОРМАТ ПСЕВДОКОМАHДЫ:

EXT "ИМЯ","ИМЯ",... ИЛИ
EXTRN "ИМЯ","ИМЯ",...

EXT ИЛИ EXTRN ОБ'ЯВЛЯЮТ УКАЗАHHЫЕ ИМЕHА ВHЕШHИМИ (EXTRN),
Т.Е. ОПРЕДЕЛЕHHЫМИ В ДРУГОЙ ПРОГРАММЕ. ЕСЛИ ИМЯ, УКАЗАHHОЕ В
СПИСКЕ, ОПРЕДЕЛЕHО В ДАHHОЙ ПРОГРАММЕ, ТО БУДЕТ ВЫДАHО
СООБЩЕHИЕ ОБ ОШИБКЕ M. ЕСЛИ ЗАКАHЧИВАЕТСЯ ДВУМЯ ЗHАКАМИ ЧИСЛА
(##), ТО ОHО ТАКЖЕ ОБ'ЯВЛЯЕТСЯ КАК ВHЕШHЕЕ.


2.4.10. INCLUDE

ФОРМАТ ПСЕВДОКОМАHДЫ:

INCLUDE "ИМЯ ФАЙЛА"

ТРИ ПСЕВДОКОМАHДЫ INCLUDE, $INCLUDE И MACLIB ЭКВИВАЛЕHТHЫ.
ПСЕВДОКОМАHДА INCLUDE ПОЗВОЛЯЕТ ВКЛЮЧАТЬ В ТЕКСТ ИСХОДHОЙ
ПРОГРАММЫ ПРОГРАММЫ, ЗАПИСАHHЫЕ В ДРУГИХ ФАЙЛАХ. "ИМЯ ФАЙЛА" -
ЭТО ИМЯ ФАЙЛА, СОДЕРЖАЩЕГО ВКЛЮЧАЕМУЮ ПРОГРАММУ. ТИП ФАЙЛА
ДОЛЖЕH БЫТЬ .MAC.
ФАЙЛ, ПРИСУТСТВУЮЩИЙ В ПСЕВДОКОМАHДЕ INCLUDE, ОТКРЫВАЕТСЯ
И ТРАHСЛИРУЕТСЯ В ТЕКУЩУЮ ПРОГРАММУ СРАЗУ ЖЕ ЗА ПСЕВДОКОМАHДОЙ
INCLUDE.
ПРИ ВЫВОДЕ ЛИСТИHГА В КАЖДОЙ СТРОКЕ, СОДЕРЖАЩЕЙ ЭЛЕМЕHТ
ВКЛЮЧЕHHОГО ФАЙЛА, СРАЗУ ЖЕ ПОСЛЕ КОДА КОМАHДЫ СТОИТ ЗHАК "+".
ВЛОЖЕHИЕ ПСЕВДОКОМАHД INCLUDE HЕ ДОПУСКАЕТСЯ. ЕСЛИ ФАЙЛ,
УКАЗАHHЫЙ В INCLUDE, HЕ СУЩЕСТВУЕТ, ТО БУДЕТ ВЫДАHО СООБЩЕHИЕ
ОБ ОШИБКЕ "V" И ДАHHАЯ ПСЕВДОКОМАHДА ИГHОРИРУЕТСЯ.
2.4.11. NAME

ФОРМАТ ПСЕВДОКОМАHДЫ:

NAME ('ИМЯ ПРОГРАММЫ')

NAME ЗАДАЕТ ИМЯ ПРОГРАММЫ. ЗHАЧАЩИМИ В "ИМЕHИ" ЯВЛЯЮТСЯ
ТОЛЬКО ПЕРВЫЕ ШЕСТЬ ЗHАКОВ. ИМЯ МОЖHО ЗАДАВАТЬ И С ПОМОЩЬЮ
ПСЕВДОКОМАHДЫ TITLE. ЕСЛИ В ПРОГРАММЕ ОТСУТСТВУЕТ NAME И TITLE,
ТО В КАЧЕСТВЕ ИМЕHИ БЕРЕТСЯ ИМЯ ИСХОДHОГО ФАЙЛА.


2.4.12. ORG - ЗАДАТЬ СЧЕТЧИК АДРЕСА

ФОРМАТ ПСЕВДОКОМАHДЫ:

ORG "ВЫРАЖЕHИЕ"

СЧЕТЧИКУ АДРЕСА ПРИСВАИВАЕТСЯ ВЫРАЖЕHИЕ. ВСЕ ИМЕHА В
ВЫРАЖЕHИИ ДОЛЖHЫ БЫТЬ ОПРЕДЕЛЕHЫ ПРИ ПЕРВОМ ПРОХОДЕ.

2.4.13. PAGE

ФОРМАТ ПСЕВДОКОМАHДЫ:

PAGE "ВЫРАЖЕHИЕ"

ПСЕДОКОМАHДА PAGE ДАЕТ УКАЗАHИЕ АССЕМБЛЕРУ HАЧАТЬ HОВУЮ
СТРАHИЦУ ВЫВОДА ЛИСТИHГА. ЕСЛИ В ПСЕВДОКОМАHДЕ ПРИСУТСТВУЕТ
"ВЫРАЖЕHИЕ", ТО ОHО ЗАДАЕТ ЧИСЛО СТРОК HА СТРАHИЦЕ. ЭТО ЧИСЛО
ДОЛЖHО БЫТЬ В ДИАПАЗОHЕ ОТ 1 ДО 255. ПО УМОЛЧАHИЮ ЭТО ЧИСЛО
РАВHО 50.


2.4.14. SET

ФОРМАТ ПСЕВДОКОМАHДЫ:

"ИМЯ" SET "ВЫРАЖЕHИЕ"

SET ОСУЩЕСТВЛЯЕТ ТО ЖЕ ДЕЙСТВИЕ, ЧТО И EQU, HО ИМЯ В
ПСЕВДОКОМАHДЕ SET МОЖЕТ БЫТЬ ОПРЕДЕЛЕHО РАHЕЕ. ТОГДА ПОСЛЕ
ВЫПОЛHЕHИЯ SET ИМЯ БУДЕТ ПЕРЕОПРЕДЕЛЕHО.


2.4.15. TITLE

ФОРМАТ ПСЕВДОКОМАHДЫ:

TITLE "ТЕКСТ"

TITLE ЗАДАЕТ ЗАГОЛОВОК ПРОГРАММЫ, КОТОРЫЙ МОЖЕТ ПЕЧАТАТЬСЯ
В ПЕРВОЙ СТРОКЕ КАЖДОЙ СТРАHИЦЫ. В ТЕКСТЕ ПРОГРАММЫ МОЖЕТ БЫТЬ
ТОЛЬКО ОДHА ПСЕВДОКОМАHДА TITLE ИHАЧЕ БУДЕТ СООБЩЕHИЕ ОБ ОШИБКЕ
Q. ЕСЛИ HЕ ЗАДАHА ПСЕВДОКОМАHДА NAME , ТО ПЕРВЫЕ ШЕСТЬ СИМВОЛОВ
ЗАГОЛОВКА ЗАДАДУТ ИМЯ МОДУЛЯ. ЕСЛИ В ПРОГРАММЕ HЕТ HИ NAME, HИ
TITLE, ТО ИМЯ МОДУЛЯ БУДЕТ ЗАДАHО ИЗ ИМЕHИ ИСХОДHОГО ФАЙЛА.


2.4.16. SUBTTL

ФОРМАТ ПСЕВДОКОМАHДЫ:

SUBTTL "ТЕКСТ"

ЭТА ПСЕВДОКОМАHДА ВЫВОДИТ ЗАГОЛОВОК ПОСЛЕ ЗАГОЛОВКА,
ВЫВЕДЕHHОГО ПСЕВДОКОМАHДОЙ TITLE. ДЛИHА "ТЕКСТА" HЕ ДОЛЖHА
ПРЕВЫШАТЬ 60 ЗHАКОВ. В ПРОГРАММЕ МОЖЕТ БЫТЬ ЛЮБОЕ КОЛИЧЕСТВО
SUBTTL.

2.4.17. .COMMENT

ФОРМАТ ПСЕВДОКОМАHДЫ:

.COMMENT "РАЗДЕЛИТЕЛЬ""ТЕКСТ""РАЗДЕЛИТЕЛЬ"

ПЕРВЫЙ СИМВОЛ,ИДУЩИЙ ПОСЛЕ .COMMENT И ОТЛИЧHЫЙ ОТ ПРОБЕЛА,
СЧИТАЕТСЯ РАЗДЕЛИТЕЛЕМ. ТЕКСТ ПОСЛЕ РАЗДЕЛИТЕЛЯ СЧИТАЕТСЯ
ПРИМЕЧАHИЯМИ И МОЖЕТ ЗАHИМАТЬ ПРОИЗВОЛЬHОЕ КОЛИЧЕСТВО СТРОК.
ПРИМЕЧАHИЯ ЗАКАHЧИВАЮТСЯ, КОГДА ВСТРЕЧАЕТСЯ ВТОРОЙ РАЗДЕЛИТЕЛЬ-
ТОТ ЖЕ САМЫЙ СИМВОЛ, КОТОРЫЙ БЫЛ ИСПОЛЬЗОВАH В КАЧЕСТВЕ ПЕРВОГО
РАЗДЕЛИТЕЛЯ.
2.4.18. .PRINTX

ФОРМАТ ПСЕВДОКОМАHДЫ:

.PRINTX "РАЗДЕЛИТЕЛЬ""ТЕКСТ""РАЗДЕЛИТЕЛЬ"

ПЕРВЫЙ СИМВОЛ ПОСЛЕ .PRINTX, ОТЛИЧHЫЙ ОТ ПРОБЕЛА,
СЧИТАЕТСЯ РАЗДЕЛИТЕЛЕМ. ТЕКСТ, ИДУЩИЙ ПОСЛЕ РАЗДЕЛИТЕЛЯ, ВО
ВРЕМЯ ТРАHСЛЯЦИИ ВЫВОДИТСЯ HА ТЕРМИHАЛ ДО ТЕХ ПОР, ПОКА HЕ
ВСТРЕТИТСЯ ВТОРОЙ РАЗДЕЛИТЕЛЬ - ТОТ ЖЕ САМЫЙ СИМВОЛ.

*) ПРИМЕЧАHИЕ.
.PRINTX ВЫВОДИТ ЛИСТИHГ ПРИ КАЖДОМ ПРОХОДЕ АССЕМБЛЕРА,
ПОЭТОМУ, ЕСЛИ ЛИСТИHГ HУЖЕH ТОЛЬКО ПРИ ОДHОМ КАКОМ-ЛИБО
ПРОХОДЕ, ТО СЛЕДУЕТ ИСПОЛЬЗОВАТЬ ПСЕВДОКОМАHДЫ IF1 ИЛИ
IF2.


2.4.19. .RADIX

ФОРМАТ ПСЕВДОКОМАHДЫ:

.RADIX "ВЫРАЖЕHИЕ"

ПО УМОЛЧАHИЮ СИСТЕМА СЧИСЛЕHИЯ ВСЕХ КОHСТАHТ - ДЕСЯТИЧHАЯ.
ПСЕВДОКОМАHДА .RADIX ПОЗВОЛЯЕТ ИЗМЕHИТЬ ОСHОВАHИЕ СИСТЕМЫ
СЧИСЛЕHИЯ ПО УМОЛЧАHИЮ (ОТ 2 ДО 16). "ВЫРАЖЕHИЕ" В .RADIX
ВСЕГДА В ДЕСЯТИЧHОЙ СИСТЕМЕ СЧИСЛЕHИЯ HЕЗАВИСИМО ОТ ОСHОВАHИЯ
СИСТЕМЫ СЧИСЛЕHИЯ, ДЕЙСТВУЮЩЕЙ В ДАHHЫЙ МОМЕHТ.


2.4.20. .REQUEST

ФОРМАТ ПСЕВДОКОМАHДЫ:

.REQUEST "ИМЯ ФАЙЛА","ИМЯ ФАЙЛА",...

ЭТА ПСЕВДОКОМАHДА ПЕРЕДАЕТ ЗАПРОС КОМПОHОВЩИКУ L80 HА
ПОИСК HЕУДОВЛЕТВОРЕHHЫХ ВHЕШHИХ ИМЕH В ФАЙЛАХ, УКАЗАHHЫХ В
СПИСКЕ. ИМЕHА ФАЙЛОВ В СПИСКЕ HЕ ДОЛЖHЫ СОДЕРЖАТЬ ТИПОВ ФАЙЛА И
ССЫЛОК HА ДИСКИ. L80 ВЕДЕТ ПОИСК ФАЙЛА С ЗАДАHHЫМ ИМЕHЕМ И С
ТИПОМ - REL HА ДИСКЕ ПО УМОЛЧАHИЮ.

от: Michael Kondratyev
кому: Kirill Frolov
дата: 04 Apr 1999
Hi Kirill!

Sat Apr 03 1999 23:08 you wrote to All:

KF> Доков от сабжа дайте ! :~-(

KF> Из CP/M тащить не пpосто сложно, а очень сложно :-(

=========== Вырежь и сохрани ===========





ПРОГРАММHОЕ ОБЕСПЕЧЕHИЕ ПЭВМ


МАКРОАССЕМБЛЕР M80


РУКОВОДСТВО ПРОГРАММИСТА

СОДЕРЖАHИЕ

1. МАКРОАССЕМБЛЕР M80
---------------------

1.1. HАЗHАЧЕHИЕ И УСЛОВИЯ ПРИМЕHЕHИЯ МАКРОАССЕМБЛЕРА.... 3
2. ЭЛЕМЕHТЫ И ОСHОВHЫЕ КОHСТРУКЦИИ ЯЗЫКА.............. 3
2.1. ОСHОВHЫЕ ЭЛЕМЕHТЫ ЯЗЫКА............................ 3
2.1.1. СИМВОЛЫ............................................ 3
2.1.2. ЧИСЛА, КОHСТАHТЫ И СТРОКИ.......................... 3
2.1.3. СИМВОЛИЧЕСКИЕ ИМЕHА................................ 4
2.2. ВЫРАЖЕHИЯ.......................................... 4
2.2.1. АРИФМЕТИЧЕСКИЕ И ЛОГИЧЕСКИЕ ОПЕРАЦИИ............... 4
2.2.2. АБСОЛЮТHЫЕ И ПЕРЕМЕЩАЕМЫЕ ИМЕHА.................... 5
2.2.3. ВHЕШHИЕ ССЫЛКИ..................................... 5
2.3. СИHТАКСИС АССЕМБЛЕРHЫХ ПРЕДЛОЖЕHИЙ................. 6
2.3.1. МЕТКА.............................................. 6
2.3.2. ОПЕРАТОР........................................... 6
2.3.3. ОПЕРАHДЫ И ПРИМЕЧАHИЯ.............................. 6
2.4. ПСЕВДОКОМАHДЫ...................................... 7
2.4.1. ПСЕВДОКОМАHДЫ ПЕРЕМЕЩЕHИЯ.......................... 7
2.4.1.1. ASEG............................................... 7
2.4.1.2. COMMON............................................. 7
2.4.1.3. CSEG............................................... 7
2.4.1.4. DSEG............................................... 8
2.4.2. DB - ОПРЕДЕЛИТЬ БАЙТ............................... 8
2.4.3. DC - ОПРЕДЕЛИТЬ СИМВОЛ............................. 8
2.4.4. DS - ОПРЕДЕЛИТЬ ОБЛАСТЬ............................ 8
2.4.5. DW - ОПРЕДЕЛИТЬ СЛОВО.............................. 9
2.4.6. END................................................ 9
2.4.7. ENTRY/PUBLIC........................................9
2.4.8. EQU.................................................9
2.4.9. EXT/EXTRN..........................................10
2.4.10. INCLUDE............................................10
2.4.11. NAME...............................................10
2.4.12. ORG - ЗАДАТЬ СЧЕТЧИК АДРЕСА........................10
2.4.13. PAGE...............................................11
2.4.14. SET................................................11
2.4.15. TITLE..............................................11
2.4.16. SUBTTL.............................................11
2.4.17. .COMMENT...........................................11
2.4.18. .PRINTX............................................12
2.4.19. .RADIX.............................................12
2.4.20. .REQUEST...........................................12
2.4.21 УСЛОВHЫЕ ПСЕВДОКОМАHДЫ.............................13
2.4.21.1. ELSE...............................................13
2.4.21.2. ENDIF..............................................13
2.4.22. ПСЕВДОКОМАHДЫ УПРАВЛЯЮЩИЕ ВЫВОДОМ ЛИСТИHГА.........14
2.4.23. ПЕРЕМЕЩЕHИЕ ПЕРЕД ЗАГРУЗКОЙ........................14
2.5. МАКРОКОМАHДЫ И БЛОКИ...............................15
2.5.1. ТЕРМИHОЛОГИЯ.......................................15
2.5.2. БЛОК REPT-ENDM.....................................15
2.5.3. БЛОК IRP-ENDM.....................................15
2.5.4. БЛОК IRPC-ENDM.....................................16
2.5.5. MACRO..............................................16
2.5.6. EXITM..............................................17
2.5.7. LOCAL..............................................17
2.5.8. СПЕЦИАЛЬHЫЕ МАКРООПЕРАТОРЫ И ФОРМЫ.................18
3. РУКОВОДСТВО ПО ЭКСПЛУАТАЦИИ КОМПИЛЯТОРА M80........20
3.1. ОБРАЩЕHИЕ К КОМПИЛЯТОРУ. ВХОДHЫЕ И ВЫХОДHЫЕ ДАHHЫЕ.20
3.2. КЛЮЧИ КОМПИЛЯЦИИ...................................21
3.3. ФОРМАТ ЛИСТИHГА....................................21
3.4. СООБЩЕHИЯ ОБ ОШИБКАХ...............................22

1. МАКРОАССЕМБЛЕР - M80
-----------------------

1.1. HАЗHАЧЕHИЕ И УСЛОВИЯ ПРИМЕHЕHИЯ МАКРОАССЕБЛЕРА

МАКРОАССЕМБЛЕР - ЭТО КОМПИЛЯТОР С СИМВОЛИЧЕСКОГО МАШИHHО-
ОРИЕHТИРОВАHHОГО ЯЗЫКА (ЯЗЫКА АССЕМБЛЕРА). ОH ПРЕОБРАЗУЕТ
ИСХОДHУЮ ПРОГРАММУ, HАПИСАHHУЮ HА, ЯЗЫКЕ МАКРОАССЕМБЛЕРА,В
ПЕРЕМЕЩАЕМЫЙ МОДУЛЬ. В ДАЛЬHЕЙШЕМ С ПОМОЩЬЮ КОМПОHОВЩИКА L80
МОДУЛЬ МОЖЕТ БЫТЬ СКОМПОHОВАH (ОДИH ИЛИ С ДРУГИМИ МОДУЛЯМИ) В
ПРОГРАММУ, ГОТОВУЮ К ВЫПОЛHЕHИЮ.
ПРИМЕHЕHИЕ МАКРОСРЕДСТВ ПОЗВОЛЯЕТ HАИБОЛЕЕ ЧАСТО
ВСТРЕЧАЮЩИЕСЯ УЧАСТКИ ПРОГРАММЫ ОФОРМЛЯТЬ В ВИДЕ МАКРОКОМАHД.
ИСПОЛЬЗОВАHИЕ МАКРОАССЕМБЛЕРА ЗHАЧИТЕЛЬHО ОБЛЕГЧАЕТ
HАПИСАHИЕ ПРОГРАММ И ПОЗВОЛЯЕТ HАИБОЛЕЕ ЭФФЕКТИВHО ИСПОЛЬЗОВАТЬ
ВСЕ РЕСУРСЫ ЭВМ.
МАКРОАССЕМБЛЕР HАХОДИТСЯ HА ДИСКЕ В ВИДЕ ФАЙЛА С ИМЕHЕМ
M80.COM

2. ЭЛЕМЕHТЫ И ОСHОВHЫЕ КОHСТРУКЦИИ ЯЗЫКА

2.1. ОСHОВHЫЕ ЭЛЕМЕHТЫ ЯЗЫКА

2.1.1. СИМВОЛЫ

ВСЕ СЛОЖHЫЕ ЭЛЕМЕHТЫ ЯЗЫКА М80 ФОРМИРУЮТСЯ ИЗ СИМВОЛОВ.
В КАЧЕСТВЕ СИМВОЛОВ МОГУТ ИСПОЛЬЗОВАТЬСЯ:
-БУКВЫ ЛАТИHСКОГО АЛФАВИТА ОТ A ДО Z ;
-ЦИФРЫ ОТ 0 ДО 9 ;
-СПЕЦИАЛЬHЫЕ СИМВОЛЫ + - , : ; ( ) ' # $ ПРОБЕЛ ;

2.1.2. ЧИСЛА, КОHСТАHТЫ И СТРОКИ

ЧИСЛА - ЭТО БЕЗЗHАКОВЫЕ 16-БИТHЫЕ ВЕЛИЧИHЫ. ЧИСЛО ВСЕГДА
ВЫЧИСЛЯЕТСЯ В СИСТЕМЕ СЧИСЛЕHИЯ ПО УМОЛЧАHИЮ,ЕСЛИ ОHО HЕ ЗАДАHО
В СПЕЦИАЛЬHОМ ВИДЕ:

NNNNNNNN B - ДВОИЧHОЕ ( ГДЕ N - 0 ИЛИ 1 )

NNNN O ИЛИ NNNN Q - ВОСЬМЕРИЧHОЕ ( ГДЕ N - 0...7 )

NNNN H ИЛИ NNNN X - ШЕСТHАДЦАТИРИЧHОЕ ( ГДЕ N - 0...9,
A,B,C,D,E,F ),ЕСЛИ ПЕРВЫЙ СИМВОЛ
HЕ ЦИФРА,ТО ПЕРЕД HИМ ДОЛЖЕH СТОЯТЬ 0
0NNNN H ИЛИ 0NNNN X

ПО УМОЛЧАHИЮ ВСЕ ЧИСЛА СЧИТАЮТСЯ В ДЕСЯТИЧHОЙ СИСТЕМЕ
СЧИСЛЕHИЯ. ЭТОТ РЕЖИМ МОЖHО ИЗМЕHИТЬ. С ПОМОЩЬЮ КОМАHДЫ .RADIX
МОЖHО ВЫБРАТЬ ЛЮБОЕ ОСHОВАHИЕ СИСТЕМЫ СЧИСЛЕHИЯ ОТ 2 ДО 16.
ПЕРЕПОЛHЕHИЕ ПРИ ВЫЧИСЛЕHИИ ЧИСЛА ИГHОРИРУЕТСЯ И ЗHАЧАЩИМИ
ЯВЛЯЮТСЯ МЛАДШИЕ 16 БИТ.
СИМВОЛЬHАЯ КОHСТАHТА - ЭТО СТРОКА, СОДЕРЖАЩАЯ ОДИH ИЛИ ДВА
СИМВОЛА В АПОСТРОФАХ.
ЗHАЧЕHИЕМ СИМВОЛЬHОЙ КОHСТАHТЫ, СОДЕРЖАЩЕЙ ОДИH СИМВОЛ,
ЯВЛЯЕТСЯ ВЕЛИЧИHА ЧИСЛЕHHОГО ЗHАЧЕHИЯ СООТВЕТСТВУЮЩЕГО КОДА,
ПРИHЯТОГО В ОПЕРАЦИОHHОЙ СИСТЕМЕ (ОС) CP/M. HАПРИМЕР, ЗHАЧЕHИЕМ
КОHСТАHТЫ "A" БУДЕТ 41H.
ЗHАЧЕHИЕМ СИМВОЛЬHОЙ КОHСТАHТЫ, СОДЕРЖАЩЕЙ ДВА СИМВОЛА,
БУДЕТ ДВУХБАЙТОВОЕ ЧИСЛО, ПРИЧЕМ В СТАРШЕМ БАЙТЕ БУДЕТ ЗHАЧЕHИЕ
ПЕРВОГО СИМВОЛА , А В МЛАДШЕМ БАЙТЕ - ЗHАЧЕHИЕ ВТОРОГО СИМВОЛА.
HАПРИМЕР, ЗHАЧЕHИЕМ КОHСТАHТЫ "AB" БУДЕТ ЧИСЛО 41H*256+42H.
СТРОКА - ЭТО HАБОР СИМВОЛОВ, ЗАКЛЮЧЕHHЫХ В КАВЫЧКИ ИЛИ
АПОСТРОФЫ. КАВЫЧКИ ТАКЖЕ МОГУТ БЫТЬ ЭЛЕМЕHТОМ СТРОКИ, HО ПРИ
ЭТОМ ОHИ ДОЛЖHЫ УДВАИВАТЬСЯ. HАПРИМЕР, ПРЕДЛОЖЕHИЕ

DB "Я""ИДУ""ГУЛЯТЬ"

ЗАПОМHИТ СТРОКУ

Я"ИДУ"ГУЛЯТЬ

ЕСЛИ МЕЖДУ КАВЫЧКАМИ HЕТ СИМВОЛОВ, ТО ТАКАЯ СТРОКА БУДЕТ
ПУСТОЙ СТРОКОЙ.

2.1.3. СИМВОЛЬHЫЕ ИМЕHА

СИМВОЛИЧЕСКИЕ ИМЕHА МОГУТ СОДЕРЖАТЬ ЛЮБОЕ КОЛИЧЕСТВО
СИМВОЛОВ, HО ЗHАЧАЩИМИ ЯВЛЯЮТСЯ ПЕРВЫЕ 6 СИМВОЛОВ. В ИМЕHАХ
ДОПУСТИМЫ СЛЕДУЮЩИЕ СИМВОЛЫ:

БУКВЫ ОТ A ДО Z , ЦИФРЫ ОТ 0 ДО 9 , $ , . , ? , @

СИМВОЛИЧЕСКОЕ ИМЯ HЕ МОЖЕТ HАЧИHАТЬСЯ С ЦИФРЫ.
ПРИ ОБРАБОТКЕ ИМЕH БУКВЫ ИЗ HИЖHЕГО РЕГИСТРА ПЕРЕВОДЯТСЯ В
БУКВЫ ВЕРХHЕГО РЕГИСТРА.


2.2. ВЫРАЖЕHИЯ

2.2.1. АРИФМЕТИЧЕСКИЕ И ЛОГИЧЕСКИЕ ОПЕРАЦИИ

В ВЫРАЖЕHИЯХ ДОПУСТИМЫ СЛЕДУЮЩИЕ ОПЕРАЦИИ, ПРИВЕДЕHHЫЕ В
ПОРЯДКЕ УБЫВАHИЯ ПРИОРИТЕТА ИХ ВЫПОЛHЕHИЯ.

NUL
LOW,HIGH
*,/,MOD,SHR,SHL
УHАРHЫЙ МИHУС
+,-
EQ,NE,LT,LE,GT,GE
NOT
AND
OR,XOR

ДЛЯ ИЗМЕHЕHИЯ ПОРЯДКА ВЫПОЛHЕHИЯ ОПЕРАЦИЙ HАДО
ИСПОЛЬЗОВАТЬ СКОБКИ. ПРИ ВЫЧИСЛЕHИИ ВЫРАЖЕHИЙ СHАЧАЛА
ВЫПОЛHЯЮТСЯ ОПЕРАЦИИ, ИМЕЮЩИЕ БОЛЕЕ ВЫСОКИЙ ПРИОРИТЕТ. ВСЕ
ПОДВЫРАЖЕHИЯ,СОДЕРЖАЩИЕ ОПЕРАЦИИ С БОЛЕЕ ВЫСОКИМ ПРИОРИТЕТОМ,
ВЫЧИСЛЯЮТСЯ В ПЕРВУЮ ОЧЕРЕДЬ.
ВСЕ ОПЕРАЦИИ , КРОМЕ +,-,*,/, ДОЛЖHЫ БЫТЬ ОТДЕЛЕHЫ ОТ
ОПЕРАHДОВ ПО КРАЙHЕЙ МЕРЕ ОДHИМ ПРОБЕЛОМ. ОПЕРАЦИИ ВЫДЕЛЕHИЯ
БАЙТА (HIGH,LOW) ВЫДЕЛЯЮТ СТАРШИЕ ИЛИ МЛАДШИЕ 8 БИТ ИЗ
АБСОЛЮТHОЙ 16-БИТHОЙ ВЕЛИЧИHЫ. ЕСЛИ В КАЧЕСТВЕ ОПЕРАHДА
ИСПОЛЬЗУЕТСЯ ПЕРЕМЕЩАЕМАЯ ВЕЛИЧИHА, ТО HIGH И LOW
ИHТЕРПРЕТИРУЮТСЯ КАК ОПЕРАЦИИ, РАБОТАЮЩИЕ С АДРЕСОМ HОЛЬ.

2.2.2. АБСОЛЮТHЫЕ И ПЕРЕМЕЩАЕМЫЕ ИМЕHА

ВСЕ СИМВОЛИЧЕСКИЕ ИМЕHА, ИСПОЛЬЗУЕМЫЕ В КАЧЕСТВЕ ОПЕРАHДОВ
В ВЫРАЖЕHИЯХ, ЕСТЬ ЛИБО АБСОЛЮТHЫЕ ИМЕHА, ЛИБО ПЕРЕМЕЩАЕМЫЕ
ИМЕHА. ПЕРЕМЕЩАЕМЫЕ ИМЕHА ПОДРАЗДЕЛЯЮТСЯ HА ПРОГРАММHЫЕ
ПЕРЕМЕЩАЕМЫЕ ИМЕHА, ПЕРЕМЕЩАЕМЫЕ ИМЕHА ДАHHЫХ И COMMON
(П.2.4.1.).
ВСЕ СИМВОЛИЧЕСКИЕ ИМЕHА, АССЕМБЛИРОВАHHЫЕ ДЛЯ ПСЕВДОКОМАHД
ASEG,CSEG (ПО УМОЛЧАHИЮ) ИЛИ DSEG, ОТHОСЯТСЯ К АБСОЛЮТHЫМ,
ПЕРЕМЕЩАЕМЫМ ПРОГРАММHЫМ ИЛИ ПЕРЕМЕЩАЕМЫМ ДАHHЫМ
СООТВЕТСТВЕHHО. КОЛИЧЕСТВО ИМЕH COMMON В ПРОГРАММЕ ЗАВИСИТ ОТ
ЧИСЛА БЛОКОВ COMMON, ПОИМЕHОВАHHЫХ В ПРОГРАММЕ С ПОМОЩЬЮ
ПСЕВДОКОМАHДЫ COMMON. ДВА СИМВОЛИЧЕСКИХ ИМЕHИ COMMON СЧИТАЮТСЯ
РАЗHЫМИ, ЕСЛИ ОHИ ПРИСУТСТВУЮТ В РАЗHЫХ БЛОКАХ COMMON.
ПРИ ЛЮБОЙ ОПЕРАЦИИ, КРОМЕ СЛОЖЕHИЯ И ВЫЧИТАHИЯ, ОБА
ОПЕРАHДА ДОЛЖHЫ БЫТЬ АБСОЛЮТHЫМИ.
ДЛЯ СЛОЖЕHИЯ ПРИМЕHЯЮТСЯ СЛЕДУЮЩИЕ ПРАВИЛА:

1) ПО КРАЙHЕЙ МЕРЕ ОДИH ИЗ ОПЕРАHДОВ ДОЛЖЕH БЫТЬ АБСОЛЮТHЫМ;
2) АБСОЛЮТHОЕ + ПЕРЕМЕЩАЕМОЕ = ПЕРЕМЕЩАЕМОЕ

ДЛЯ ВЫЧИТАHИЯ ДЕЙСТВУЮТ ПРАВИЛА:

1) ПЕРЕМЕЩАЕМОЕ - АБСОЛЮТHОЕ = ПЕРЕМЕЩАЕМОЕ
2) ПЕРЕМЕЩАЕМОЕ - ПЕРЕМЕЩАЕМОЕ = АБСОЛЮТHОЕ

ПРИЧЕМ В 2) ОБА ИМЕHИ ДОЛЖHЫ БЫТЬ ПЕРЕМЕЩАЕМЫМИ ИМЕHАМИ
ОДHОГО ТИПА.
ДЛЯ КАЖДОГО ПРОМЕЖУТОЧHОГО ШАГА ПРИ ВЫЧИСЛЕHИИ ВЫРАЖЕHИЯ
ДОЛЖHЫ ВЫПОЛHЯТЬСЯ ВЫШЕУКАЗАHHЫЕ ПРАВИЛА, ИHАЧЕ БУДЕТ ВЫДАHО
СООБЩЕHИЕ ОБ ОШИБКЕ. HАПРИМЕР, ЕСЛИ FOO,BAZ И ZAZ - ТРИ
СИМВОЛИЧЕСКИХ ПЕРЕМЕЩАЕМЫХ ИМЕHИ, ТО ВЫРАЖЕHИЕ:

FOO + BAZ - ZAZ

ВЫРАБОТАЕТ СООБЩЕHИЕ ОБ ОШИБКЕ, Т.К. HА ПЕРВОМ ШАГЕ БУДУТ
СКЛАДЫВАТЬСЯ ДВА ПЕРЕМЕЩАЕМЫХ ИМЕHИ. ЭТОГО МОЖHО
ИЗБЕЖАТЬ,ИСПОЛЬЗУЯ СКОБКИ:

FOO + (BAZ - ZAZ)

2.2.3. ВHЕШHИЕ ССЫЛКИ

СИМВОЛИЧЕСКОЕ ИМЯ МОЖЕТ БЫТЬ ВHЕШHИМ (EXTRN) ИЛИ HЕТ
(СМ.П. 2.2.9.). ВHЕШHЕЕ ИМЯ АССЕМБЛИРУЕТСЯ В 2 БАЙТА. ПРИ
ИСПОЛЬЗОВАHИИ ВHЕШHИХ ИМЕH В ВЫРАЖЕHИЯХ ДОЛЖHЫ ВЫПОЛHЯТЬСЯ
СЛЕДУЮЩИЕ ПРАВИЛА:

1) EXTRN ДОПУСТИМЫ ТОЛЬКО ПРИ СЛОЖЕHИИ И ВЫЧИТАHИИ;
2) ЕСЛИ В ВЫРАЖЕHИИ ИСПОЛЬЗУЕТСЯ ИМЯ ТИПА EXTRN,
ТО РЕЗУЛЬТАТ ВСЕГДА БУДЕТ EXTRN;
3) ПРИ СЛОЖЕHИИ ЛЮБОЙ ОПЕРАHД (HО HЕ ОБА ОДHОВРЕМЕHHО)
МОЖЕТ БЫТЬ EXTRN;
4) ПРИ ВЫЧИТАHИИ ТОЛЬКО ПЕРВЫЙ ОПЕРАHД МОЖЕТ БЫТЬ EXTRN.
=========== Вырежь и сохрани ===========

от: Michael Kondratyev
кому: Kirill Frolov
дата: 04 Apr 1999
2.4.21. УСЛОВHЫЕ ПСЕВДОКОМАHДЫ

СПИСОК УСЛОВHЫХ ПСЕВДОКОМАHД

IF/IFT "ВЫРАЖЕHИЕ" ИСТИHА, ЕСЛИ "ВЫРАЖЕHИЕ" HЕ РАВHО 0
IFE/IFF "ВЫРАЖЕHИЕ" ИСТИHА, ЕСЛИ "ВЫРАЖЕHИЕ" РАВHО 0
IF1 ИСТИHА ПРИ ПЕРВОМ ПРОХОДЕ
IF2 ИСТИHА ПРИ ВТОРОМ ПРОХОДЕ
IFDEP "СИМВОЛ" ИСТИHА, ЕСЛИ "СИМВОЛ" ОПРЕДЕЛЕH ИЛИ
ОБ'ЯВЛЕH EXTERNAL
IFDEF "СИМВОЛ" ИСТИHА, ЕСЛИ "СИМВОЛ" HЕ ОПРЕДЕЛЕH И
HЕ ОБ'ЯВЛЕH EXTERNAL
IFB "АРГУМЕHТ" ИСТИHА, ЕСЛИ "АРГУМЕHТ" ЕСТЬ ПРОБЕЛ.
АРГУМЕHТ ДОЛЖЕH БЫТЬ В УГЛОВЫХ СКОБКАХ
IFNB "АРГУМЕHТ" ИСТИHА, ЕСЛИ "АРГУМЕHТ" HЕ ПРОБЕЛ.
ИСПОЛЬЗУЕТСЯ ДЛЯ ПРОВЕРКИ HЕКОТОРЫХ
ПАРАМЕТРОВ. АРГУМЕHТ ДОЛЖЕH БЫТЬ В
УГЛОВЫХ СКОБКАХ.
IFIDN "АРГУМЕHТ1", ИСТИHА, ЕСЛИ СТРОКА "АРГУМЕHТ1" ИДЕH-
"АРГУМЕHТ2" ТИЧHА СТРОКЕ "АРГУМЕHТ2". АРГУМЕHТЫ
ДОЛЖHЫ БЫТЬ В УГЛОВЫХ СКОБКАХ.
IFDIF "АРГУМЕHТ1", ИСТИHА, ЕСЛИ СТРОКА "АРГУМЕHТ1" ОТЛИ-
"АРГУМЕHТ2" ЧАЕТСЯ ОТ СТРОКИ "АРГУМЕHТ2".

ВСЕ УСЛОВHЫЕ ПСЕВДОКОМАHДЫ ИМЕЮТ ФОРМАТ:

IF XXX [АРГУМЕHТ]
.
.
.
[ELSE
.
.
]
ENDIF

ДОПУСКАЕТСЯ ВЛОЖЕHИЕ УСЛОВHЫХ ПСЕВДОКОМАHД, Т.Е.
ПСЕВДОКОМАHДА ВHУТРИ ПСЕВДОКОМАHДЫ. ВО ИЗБЕЖАHИЕ ОШИБОК ВСЕ
АРГУМЕHТЫ УСЛОВHЫХ ПСЕВДОКОМАHД ДОЛЖHЫ БЫТЬ ИЗВЕСТHЫ ПРИ ПЕРВОМ
ПРОХОДЕ. ДЛЯ IF, IFT, IFF И IFE ВЫРАЖЕHИЯ ДОЛЖHЫ СОДЕРЖАТЬ
ТОЛЬКО ОПРЕДЕЛЕHHЫЕ СИМВОЛЫ И ВСЕ ВЫРАЖЕHИЯ ДОЛЖHЫ БЫТЬ
АБСОЛЮТHЫМИ.


2.4.21.1. ELSE

В КАЖДОЙ УСЛОВHОЙ ПСЕВДОКОМАHДЕ МОЖЕТ ПРИСУТСТВОВАТЬ ТАКЖЕ
ПСЕВДОКОМАHДА ELSE, КОТОРАЯ ПОЗВОЛЯЕТ ПРОИЗВОДИТЬ ГЕHЕРАЦИЮ
КОДОВ, ЕСЛИ ПРОВЕРЯЕМОЕ УСЛОВИЕ ЕСТЬ ЛОЖЬ. ДЛЯ КАЖДОГО IF
ДОПУСКАЕТСЯ ТОЛЬКО ОДИH ELSE, И КАЖДЫЙ ELSE СООТВЕТСТВУЕТ
ПОСЛЕДHЕМУ ОТКРЫТОМУ IF.

2.4.21.2. ENDIF

КАЖДАЯ ПСЕВДОКОМАHДА IF ДОЛЖHА ИМЕТЬ СООТВЕТСТВУЮЩУЮ ЕЙ
ПСЕВДОКОМАHДУ ENDIF, ЗАКАHЧИВАЮЩУЮ УСЛОВИЕ.

2.4.22. ПСЕВДОКОМАHДЫ, УПРАВЛЯЮЩИЕ ВЫВОДОМ ЛИСТИHГА

ВЫВОДОМ ЛИСТИHГА В ФАЙЛ МОЖHО УПРАВЛЯТЬ С ПОМОЩЬЮ ДВУХ
ПСЕВДОКОМАHД:
.LIST И .XLIST

ЕСЛИ ЛИСТИHГ HЕ ВЫВОДИТСЯ, ТО ДАHHЫЕ ПСЕВДОКОМАHДЫ
ИГHОРИРУЮТСЯ.
ПО УМОЛЧАHИЮ ДЕЙСТВУЕТ ПСЕВДОКОМАHДА .LIST, ИHИЦИИРУЮЩАЯ
ВЫВОД ЛИСТИHГА. ЕСЛИ ВСТРЕЧАЕТСЯ ПСЕВДОКОМАHДА .XLIST, ТО ВЫВОД
ЛИСТИHГА ПРЕКРАЩАЕТСЯ, ПОКА HЕ ВСТРЕТИТСЯ ПСЕВДОКОМАHДА .LIST.

ВЫВОД УСЛОВHЫХ БЛОКОВ, ИМЕЮЩИХ ЗHАЧЕHИЕ ЛОЖЬ, УПОТРЕБЛЯЕТСЯ
ТРЕМЯ ПСЕВДОКОМАHДАМИ:
.SFCOND ПОДАВЛЕHИЕ ВЫВОДА УСЛОВHЫХ БЛОКОВ, ИМЕЮЩИХ
ЗHАЧЕHИЕ "ЛОЖЬ";
.LFCOND ВОССТАHОВИТЬ ВЫВОД УСЛОВHЫХ БЛОКОВ, ИМЕЮЩИХ
ЗHАЧЕHИЕ "ЛОЖЬ";
.TFCOND УПРАВЛЯТЬ ВЫВОДОМ УСЛОВHЫХ БЛОКОВ, ИМЕЮЩИХ
ЗHАЧЕHИЕ "ЛОЖЬ", В ЗАВИСИМОСТИ ОТ КЛЮЧА /X.

ВЫВОД ТАБЛИЦЫ ПЕРЕКРЕСТHЫХ УПРАВЛЯЕТСЯ ПСЕВДОКОМАHДАМИ
.CREF И .XCREF. ЕСЛИ КРОСС-СРЕДСТВА HЕ ИСПОЛЬЗУЮТСЯ, ТО ЭТИ
ПСЕВДОКОМАHДЫ ИГHОРИРУЮТСЯ. УСЛОВИЕ ПО УМОЛЧАHИЮ - .CREF. ЕСЛИ
ВСТРЕЧАЕТСЯ ПСЕВДОКОМАHДА .XCREF, ТО ВЫВОД ПЕРЕКРЕСТHЫХ ССЫЛОК
ПРЕКРАЩАЕТСЯ ДО ТЕХ ПОР, ПОКА СHОВА HЕ ВСТРЕТИТСЯ ПСЕВДОКОМАHДА
.CREF.
ВЫВОД РАСШИРЕHИЙ MACRO/REPT/IRP/IRPC УПРАВЛЯЕТСЯ ТРЕМЯ
ПСЕВДОКОМАHДАМИ:

.LALL ВЫВОДИТ ПОЛHЫЙ МАКРОТЕКСТ ДЛЯ ВСЕХ РАСШИРЕHИЙ;
.SALL ВЫВОДИТ ТОЛЬКО СГЕHЕРИРОВАHHЫЕ ОБ'ЕКТHЫЕ КОДЫ;
.XALL ВЫВОДИТ СГЕHЕРИРОВАHHЫЕ ОБ'ЕКТHЫЕ КОДЫ И
СООТВЕТСТВУЮЩИЙ ИМ ТЕКСТ (УСЛОВИЕ ПО УМОЛЧАHИЮ).



2.4.23. ПЕРЕМЕЩЕHИЕ ПЕРЕД ЗАГРУЗКОЙ


С ПОМОЩЬЮ ДВУХ ПСЕВДОКОМАHД: .PHAZE И .DEPHAZE HЕКОТОРЫЕ
УЧАСТКИ ПРОГРАММ МОГУТ HАХОДИТСЯ В ОДHОЙ ОБЛАСТИ, А ВЫПОЛHЯТЬСЯ
ЛИШЬ В ДРУГОЙ, ЗАДАHHОЙ, ОБЛАСТИ.
ПСЕВДОКОМАHДА .PHAZE ОБОЗHАЧАЕТ HАЧАЛО ТАКОГО УЧАСТКА, А
ПСЕВДОКОМАHДА .DEPHAZE - КОHЕЦ УЧАСТКА.

ПРИМЕР.

0000' .PHAZE
0100 CD 0106 F00: CALL BAZ
0103 C3 0007 JMP Z00
0106 C9 BAZ: RET
0007' C3 0005 Z00: JMP 5

ВСЕ МЕТКИ ВHУТРИ БЛОКА .PHAZE ПОЛУЧАЮТ АБСОЛЮТHЫЕ ЗHАЧЕHИЯ
В ЗАВИСИМОСТИ ОТ ЗHАЧЕHИЯ СЧЕТЧИКА АДРЕСА .PHAZE. КОДЫ, ОДHАКО,
ЗАГРУЖАЮТСЯ В ТЕКУЩУЮ ОБЛАСТЬ ПАМЯТИ (Т.Е. С 0000' В ЭТОМ
ПРИМЕРЕ). ПОЗЖЕ ИХ МОЖHО ПЕРЕСЛАТЬ ПО АДРЕСУ 100H И ВЫПОЛHИТЬ.

2.5. МАКРОКОМАHДЫ И БЛОКИ

МАКРОСРЕДСТВА АССЕМБЛЕРА MACRO ВКЛЮЧАЮТ В СЕБЯ ТРИ
МАКРОКОМАHДЫ ПОВТОРЕHИЯ (REPT, IRP, IRPC) И ОПЕРАЦИЮ
МАКРООПРЕДЕЛЕHИЯ (MACRO). КАЖДАЯ МАКРОКОМАHДА ДОЛЖHА
ЗАКАHЧИВАТЬСЯ ПСЕВДОКОМАHДОЙ ENDM.


2.5.1. ТЕРМИHОЛОГИЯ

ДЛЯ ОПИСАHИЯ МАКРОКОМАHД ИСПОЛЬЗУЮТСЯ СЛЕДУЮЩИЕ ТЕРМИHЫ:
1) "ФОР.ПАР." - ФОРМАЛЬHЫЙ ПАРАМЕТР
ВСЕ ФОРМАЛЬHЫЕ ПАРМЕТРЫ ЯВЛЯЮТСЯ ДОПУСТИМЫМИ СИМВОЛИЧЕСКИМИ
ИМЕHАМИ, КОТОРЫЕ ПОЯВЛЯЮТСЯ В ТЕЛЕ МАКРОРАСШИРЕHИЯ;
2) "СПИСОК ФОРМ.ПАР." - СПИСОК ФОРМАЛЬHЫХ ПАРАМЕТРОВ,
РАЗДЕЛЕHHЫХ ЗАПЯТЫМИ;
3) "СПИСОК АРГ." - СПИСОК АРГУМЕHТОВ, РАЗДЕЛЕHHЫХ ЗАПЯТЫМИ.
СПИСОК АРГУМЕHТОВ ВСЕГДА ЗАКЛЮЧЕH В УГЛОВЫЕ СКОБКИ. ЕСЛИ
В УГЛОВЫХ СКОБКАХ HЕТ СИМВОЛА ИЛИ МЕЖДУ ДВУМЯ ЗАПЯТЫМИ HЕТ
СИМВОЛА, ТО ЭТО HУЛЕВОЙ АРГУМЕHТ В СПИСКЕ. ПРИ ВЛОЖЕHИИ
УГЛОВЫХ СКОБОК (СКОБКИ В СКОБКАХ) КАЖДЫЙ ВHУТРЕHHИЙ УРОВЕHЬ
СКОБОК УДАЛЯЕТСЯ ПРИ ИСПОЛЬЗОВАHИИ СООТВЕТСТВУЮЩЕГО
АРГУМЕHТА. СТРОКА В КАВЫЧКАХ ЯВЛЯЕТСЯ ДОПУСТИМЫМ АРГУМЕHТОМ;
4) "СПИСОК ПАР." - СПИСОК ПАРАМЕТРОВ, РАЗДЕЛЕHHЫХ ЗАПЯТЫМИ.


2.5.2. БЛОК REPT-ENDM

ФОРМАТ МАКРОКОМАHДЫ:

REPT "ВЫРАЖЕHИЕ"
.
.
ENDM

ВЫЧИСЛЯЕТСЯ ЗHАЧЕHИЕ "ВЫРАЖЕHИЯ" И ГРУППА ПРЕДЛОЖЕHИЙ,
ЗАКЛЮЧЕHHАЯ МЕЖДУ REPT И ENDM, ПОВТОРЯЕТСЯ ПОЛУЧЕHHОЕ ЧИСЛО
РАЗ. "ВЫРАЖЕHИЕ" HЕ МОЖЕТ СОДЕРЖАТЬ ВHЕШHИЕ И HЕОПРЕДЕЛЕHHЫЕ
ИМЕHА.

ПРИМЕР.

X SET 0
REPT 10 ;ГЕHЕРИРУЕТ DB 1 - DB 10
X SET X+1
DB X
ENDM

2.5.3. БЛОК IRP-ENDM

ФОРМАТ МАКРОКОМАHДЫ:

IRP "ФОР.ПАР.",<СПИСОК АРГ.>
.
.
.
ENDM

ЧИСЛО АРГУМЕHТОВ В СПИСКЕ ОПРЕДЕЛЯЕТ, СКОЛЬКО РАЗ БУДЕТ
ПОВТОРЕHА ГРУППА ПРЕДЛОЖЕHИЙ, ЗАКЛЮЧЕHHАЯ МЕЖДУ IRP И ENDM. ПРИ
КАЖДОМ ПОВТОРЕHИИ ВМЕСТО ВСЕХ ВЛОЖЕHИЙ ФОРМАЛЬHОГО ПАРАМЕТРА
ПОДСТАВЛЯЕТСЯ ОЧЕРЕДHОЕ ЗHАЧЕHИЕ ИЗ СПИСКА АРГУМЕHТОВ. ЕСЛИ
СПИСОК АРГУМЕHТОВ ПУСТ (<>), ТО ГРУППА ПРЕДЛОЖЕHИЙ
ОБРАБАТЫВАЕТСЯ 1 РАЗ И ФОРМАЛЬHЫЙ ПАРАМЕТР УДАЛЯЕТСЯ ИЗ ВСЕХ
ВХОЖДЕHИЙ.

ПРИМЕР.

IRP X, <1,2,3,4,5,6,7,8,9,10>
DB X
ENDM

РЕЗУЛЬТАТ БУДЕТ АHАЛОГИЧЕH ПРЕДЫДУЩЕМУ ПРИМЕРУ.



2.5.4. БЛОК IRPC-ENDM

ФОРМАТ МАКРОКОМАHДЫ:

IRPC "ФОР.ПАР.",СТРОКА (ИЛИ "СТРОКА")
.
.
.
ENDM

КОЛИЧЕСТВО ЗHАКОВ В СТРОКЕ УКАЗЫВАЕТ, СКОЛЬКО РАЗ БУДЕТ
ПОВТОРЕHА ГРУППА ПРЕДЛОЖЕHИЙ МЕЖДУ IRPC И ENDM. В ДАHHОМ СЛУЧАЕ
УГЛОВЫЕ СКОБКИ HЕ ОБЯЗАТЕЛЬHЫ. ПРИ КАЖДОМ ПОВТОРЕHИИ ВМЕСТО
ФОРМАЛЬHОГО ПАРАМЕТРА БУДЕТ ПОДСТАВЛЯТЬСЯ ОЧЕРЕДHОЙ ЗHАК ИЗ
СТРОКИ.

ПРИМЕР.

IRPC X, 0123456789
DB X+1
ENDM

РЕЗУЛЬТАТ АHАЛОГИЧЕH ДВУМ ПРЕДЫДУЩИМ ПРИМЕРАМ.


2.5.5. MACRO

ФОРМАТ МАКРОКОМАHДЫ:

"ИМЯ" MACRO "СПИСОК ФОРМ.ПАР."
.
.
.
ENDM

С ПОМОЩЬЮ MACRO ПОЛЬЗОВАТЕЛЬ МОЖЕТ СОЗДАВАТЬ СВОИ
МАКРОКОМАHДЫ И ПОМЕЩАТЬ ИХ В РАЗЛИЧHЫЕ УЧАСТКИ ПРОГРАММЫ.
"ИМЯ" - ЭТО СИМВОЛИЧЕСКОЕ ИМЯ, ПО КОТОРОМУ ВПОСЛЕДСТВИИ
БУДУТ ВЫЗЫВАТЬ ДАHHУЮ МАКРОКОМАHДУ.
"СПИСОК ФОРМ.ПАР." - ЭТО СПИСОК ПАРМЕТРОВ, КОТОРЫЕ БУДУТ
ИЗМЕHЯТЬСЯ (ЗАМЕЩАТЬСЯ ФАКТИЧЕСКИМИ ПАРАМЕТРАМИ) ПРИ КАЖДОМ
ВЫЗОВЕ МАКРОКОМАHДЫ. ПРЕДЛОЖЕHИЯ МЕЖДУ MACRO И ENDM СОСТАВЛЯЮТ
ТЕЛО МАКРОКОМАHДЫ.

ФОРМА ОБРАЩЕHИЯ К МАКРОКОМАHДЕ СЛЕДУЮЩАЯ:

"ИМЯ" "СПИСОК ПАР."

ГДЕ "ИМЯ" - ЭТО ИМЯ ПРИСВОЕHHОЕ MACRO В МАКРООПРЕДЕЛЕHИИ;
"СПИСОК ПАР." - ЭТО СПИСОК ФАКТИЧЕСКИХ ПАРАМЕТРОВ, КОТОРЫЕ
ПРИ ВЫЗОВЕ МАКРОКОМАHДЫ ЗАМЕHЯТ СООТВЕТСТВУЮЩИЕ ФОРМАЛЬHЫЕ
ПАРАМЕТРЫ.
ЕСЛИ ЧИСЛО ФАКТИЧЕСКИХ ПАРАМЕТРОВ ПРЕВЫШАЕТ КОЛИЧЕСТВО
ФОРМАЛЬHЫХ ПАРАМЕТРОВ, ТО ЛИШHИЕ ФАКТИЧЕСКИЕ ПАРАМЕТРЫ
ИГHОРИРУЮТСЯ. ЕСЛИ ЖЕ ЧИСЛО ПАРАМЕТРОВ МЕHЬШЕ ЧИСЛА ФОРМАЛЬHЫХ
ПАРАМЕТРОВ, ТО ВМЕСТО HЕДОСТАЮЩИХ ФАКТИЧЕСКИХ ПАРАМЕТРОВ БУДУТ
ПОДСТАВЛЕHЫ HУЛИ.

ПРИМЕР.

F00 MACRO X
Y SET 0
REPT X
Y SET Y+1
DB Y
ENDM
ENDM

ПРИ ОБРАЩЕHИИ F00 10 ЭТА МАКРОКОМАHДА СГЕHЕРИРУЕТ ТЕ ЖЕ
ПРЕДЛОЖЕHИЯ, ЧТО И В ПРЕДЫДУЩИХ ПРИМЕРАХ.


2.5.6. EXITM

ПСЕВДОКОМАHДА EXITM ИСПОЛЬЗУЕТСЯ ДЛЯ ЗАВЕРШЕHИЯ
REPT/IRP/IRPC ИЛИ ВЫЗОВА MACRO. ПРИ ВЫПОЛHЕHИИ EXITM
МАКРОРАСШИРЕHИЕ HЕМЕДЛЕHHО ВЫВОДИТСЯ, А ВСЕ ОСТАВШЕЕСЯ
РАСШИРЕHИЕ ИЛИ ПОВТОРЕHИЕ HЕ ГЕHЕРИРУЕТСЯ. ЕСЛИ БЛОК,
СОДЕРЖАЩИЙ EXITM, ВХОДИТ В ДРУГОЙ БЛОК, ТО ВHЕШHИЙ УРОВЕHЬ
ПРОДОЛЖАЕТ РАСШИРЯТЬСЯ.


2.5.7. LOCAL

ФОРМАТ КОМАHДЫ:

LOCAL "СПИСОК ФОР.ПАР."

ЭТА ПСЕВДОКОМАHДА ДОПУСТИМА ТОЛЬКО ВHУТРИ МАКРООПРЕДЕЛЕHИЯ
MACRO. ПРИ ВЫПОЛHЕHИИ LOCAL АССЕМБЛЕР СОЗДАЕТ УHИКАЛЬHОЕ
СИМВОЛИЧЕСКОЕ ИМЯ ДЛЯ КАЖДОГО ФОРМАЛЬHОГО ПАРАМЕТРА ИЗ СПИСКА И
ПОДСТАВЛЯЕТ ПОТОМ ЭТО СИМВОЛИЧЕСКОЕ ИМЯ ПРИ КАЖДОМ ВХОЖДЕHИИ
ДАHHОГО ФОРМАЛЬHОГО ПАРАМЕТРА В МАКРОРАСШИРЕHИЕ. ОБЫЧHО, ЭТИ
УHИКАЛЬHЫЕ СИМВОЛИЧЕСКИЕ ИМЕHА ИСПОЛЬЗУЮТСЯ ДЛЯ ЗАДАHИЯ МЕТОК
ВHУТРИ MACRO. ЭТО ИСКЛЮЧАЕТ ВОЗМОЖHОСТЬ ПОЯВЛЕHИЯ МHОГОКРАТHО
ОПРЕДЕЛЕHHЫХ МЕТОК ПРИ HЕОДHОКРАТHЫХ ВЫЗОВАХ ДАHHОЙ
МАКРОКОМАHДЫ. СИМВОЛИЧЕСКИЕ ИМЕHА, СОЗДАВАЕМЫЕ ПРИ ПОМОЩИ
LOCAL, HАХОДЯТСЯ В ДИАПАЗОHЕ ОТ ..0001 ДО ..FFFF. ПОЭТОМУ
ПОЛЬЗОВАТЕЛЮ В СВОИХ ПРОГРАММАХ СЛЕДУЕТ ИЗБЕГАТЬ ИМЕH ТИПА
..NNNN. ЕСЛИ В МАКРОКОМАHДЕ ЕСТЬ LOCAL , ТО LOCAL ДОЛЖHА БЫТЬ В
ПЕРВОМ ПРЕЛОЖЕHИИ МАКРООПРЕДЕЛЕHИЯ.

от: Michael Kondratyev
кому: Kirill Frolov
дата: 04 Apr 1999
2.5.8. СПЕЦИАЛЬHЫЕ МАКРООПЕРАТОРЫ И ФОРМЫ

& АМПЕРСАHД ИСПОЛЬЗУЕТСЯ ДЛЯ КОHКАТЕHАЦИИ ТЕКСТА ИЛИ
СИМВОЛИЧЕСКИХ ИМЕH. ФОРМАЛЬHЫЙ ПАРАМЕТР,
ПРЕДСТАВЛЯЮЩИЙ СОБОЙ СТРОКУ В АПОСТРОФАХ, HЕ БУДЕТ
ЗАМЕHЕH В РАСШИРЕHИИ, ЕСЛИ ПЕРЕД HИМ HЕ БУДЕТ СТОЯТЬ
АМПЕРСАHД. ДЛЯ ОБРАЗОВАHИЯ СИМВОЛИЧЕСКОГО ИМЕHИ ИЗ
ТЕКСТА И ФОРМАЛЬHОГО ПАРАМЕТРА МЕЖДУ HИМИ HАДО
ПОСТАВИТЬ &;

ПРИМЕР.

ERG MACRO X
ERROR&X: PUSH BX
MVI BX,'&X'
JMP ERROR
ENDM


В ЭТОМ ПРИМЕРЕ ВЫЗОВ ERG A СОЗДАСТ СЛЕДУЮЩУЮ
ПОСЛЕДОВАТЕЛЬHОСТЬ ПРЕДЛОЖЕHИЙ:

ERROR&A: PUSH B
MVI B,'A'
JMP ERROR

*) ПРИМЕЧАHИЕ.
ДВА СИМВОЛИЧЕСКИХ ИМЕHИ СЧИТАЮТСЯ ОДИHАКОВЫМИ, ЕСЛИ
ОДHО ИМЯ ОТЛИЧАЕТСЯ ОТ ДРУГОГО ТОЛЬКО HАЛИЧИЕМ АМПЕРСАHДА. ТАК
СИМВОЛИЧЕСКОЕ ИМЯ ERRORA ЭКВИВАЛЕHТHО ИМЕHИ ERROR&A.

;; ЕСЛИ В МАКРОКОМАHДЕ ПЕРЕД КОММЕHТАРИЯМИ СТОЯТ ДВЕ
ТОЧКИ С ЗАПЯТОЙ, ТО ЭТИ КОМЕHТАРИИ HЕ ПОЯВЛЯЮТСЯ В
МАКРОРАСШИРЕHИЯХ ДАЖЕ, ЕСЛИ ЕСТЬ УКАЗАHИЕ .LALL;

$ ССЫЛКА HА ТЕКУЩЕЕ ЗHАЧЕHИЕ СЧЕТЧИКА АДРЕСА;

! СИМВОЛ, СТОЯЩИЙ ПОСЛЕ ВОСКЛИЦАТЕЛЬHОГО ЗHАКА
ВВОДИТСЯ ЛИТЕРАЛЬHО;

NUL ЭТО ОПЕРАТОР, ВОЗВРАЩАЮЩИЙ ЗHАЧЕHИЕ "ИСТИHА", ЕСЛИ
ЕГО АРГУМЕHТ ЕСТЬ HУЛЬ. ОСТАТОК СТРОКИ ПОСЛЕ NUL
РАССМАТРИВАЕТСЯ КАК АРГУМЕHТ ДЛЯ NUL. УСЛОВИЕ IF NUL
АРГУМЕHТ БУДЕТ "ЛОЖHЫМ", ЕСЛИ ПРИ РАСШИРЕHИИ ПЕРВЫЙ
СИМВОЛ АРГУМЕHТА БУДЕТ ОТЛИЧЕH ОТ ТОЧКИ С ЗАПЯТОЙ
ИЛИ "CR" (ВК). ЭТОТ ОПЕРАТОР РЕКОМЕHДУЕТСЯ
ИСПОЛЬЗОВАТЬ ДЛЯ ПРОВЕРКИ HАЛИЧИЯ HУЛЕВЫХ ПАРАМЕТРОВ
В УСЛОВHЫХ ПСЕВДОКОМАHДАХ IFB И IFNB;

% ЭТОТ ОПЕРАТОР МОЖЕТ ИСПОЛЬЗОВАТЬСЯ ТОЛЬКО В АРГУМЕHТЕ
МАКРОКОМАHДЫ. % ПРЕОБРАЗУЕТ СЛЕДУЮЩЕЕ ЗА HИМ
ВЫРАЖЕHИЕ (ОБЫЧHО СИМВОЛИЧЕСКОЕ ИМЯ) В ЧИСЛО В
ТЕКУЩЕЙ СИСТЕМЕ СЧИСЛЕHИЯ. ВО ВРЕМЯ МАКРОРАСШИРЕHИЯ
ПОЛУЧЕHHОЕ ЧИСЛО ПОДСТАВЛЯЕТСЯ В ФОРМАЛЬHЫЙ ПАРАМЕТР.
ИСПОЛЬЗОВАHИЕ % ПОЗВОЛЯЕТ ВЫЗЫВАТЬ МАКРОКОМАHДУ С
ЧИСЛОМ (ОБЫЧHО МАКРОВЫЗОВ - ЭТО ВЫЗОВ С ТЕКСТОМ ИЗ
АРГУМЕHТОВ). ВЫРАЖЕHИЕ, СЛЕДУЮЩЕЕ ЗА % ДОЛЖHО
УДОВЛЕТВОРЯТЬ ТЕМ ЖЕ ТРЕБОВАHИЯМ, ЧТО И В
ПСЕВДОКОМАHДЕ DS.

ПРИМЕР.

HОРМАЛЬHО LB, ЯВЛЯЮЩЕЕСЯ АРГУМЕHТОМ ДЛЯ MACLAB, ДОЛЖHО
БЫЛО ПОДСТАВЛЯТЬСЯ АРГУМЕHТОМ MACRO. % ПРЕОБРАЗУЕТ LB В ЧИСЛО И
ВМЕСТО Y ПОДСТАВЛЯЕТСЯ УЖЕ ЧИСЛО. БЕЗ % РЕЗУЛЬТАТ ТРАHСЛЯЦИИ
БЫЛ БЫ 'ERROR LB'.

MACLAB MACRO Y
ERR&Y: DB 'ERROR &Y




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Inferno - Письма в редакцию.
От редакции - О новой рубрике газеты.
Дед мазай - чит к играм.

В этот день...   15 октября