Теневой макро ассемблер-отладчик
ALASM 128/512 v2.8
Краткое описание функциональных
возможностей .
Оглавление :
1. РАСПРЕДЕЛЕНИЕ ПАМЯТИ
2. ХОЛОДНЫЙ ЗАПУСК
3. КОМАНДЫ СРЕДЫ АССЕМБЛЕРА
4. КОМАНДЫ РЕДАКТОРА
5. ДИРЕКТИВЫ АССЕМБЛЕРА
6. ОШИБКИ КОМПИЛЯТОРА
7. В СЛЕДУЮЩИХ ВЕРСИЯХ
________________________________
1. РАСПРЕДЕЛЕНИЕ ПАМЯТИ
Позволяет pаботать одновременно
с несколькими текстами, располо-
женными в разных страницах памя-
ти пользователя . Переход от ре-
дактирования одной страницы к
другой осуществляется вводом ко-
манды PAGE [страница] из рабочей
строки асемблера . Количество
текстов, которые может обрабаты-
вать ALASM , зависит только от
объема памяти компьютера . Стра-
ницы в ассемблере нумеруются по
маске максимального значения ,
выводимого в порт #7FFD для пе-
реключения страницы.
2. ХОЛОДНЫЙ ЗАПУСК
При запуске ассемблера из
TR-DOS экран очищается и на нем
появляется авторское вступление,
после чего проводится тест памя-
ти по двум старшим и трем млад-
шим битам порта #7FFD . Его ре-
зультаты выводятся на экран в
виде XXX кб mask XX . Числа ука-
зывают , сколько памяти доступно
ассемблеру на Вашем компьютере и
какие биты порта записи #7FFD
отвечают за доступ . По этим би-
там маскируется операнд команды
PAGE. Ниже теста памяти выводит-
ся HELP , содержащий список ко-
манд ассемблера и его редактора.
Горячие клавиши этих команд вы-
несены в заглавный режим . Ниже
предлагается нажать CS/0 для за-
пуска SETUP или получения допол-
нительной информации. Меню SETUP
позволит вам изменить визуальные
и конфигуративные параметры ра-
боты ассемблера и, при желании ,
записать их на диск. Все измене-
ния, внесенные в SETUP , записы-
ваются непосредственно в тело
моноблока ассемблера "alasm.C" .
Функции запуска SETUP или полу-
чения дополнительной информации
доступны только при холодном за-
пуске . После соответствующего
сообщения нажатие любой клавиши
приведет к очистке экрана и вы-
ходу в рабочую строку ассембле-
ра.
3. КОМАНДЫ СРЕДЫ АССЕМБЛЕРА
Среда ассемблера обладает соб-
ственной системой команд , боль-
шинство которых совместимы с ко-
мандами TASM2.0. Список этих ко-
манд может быть получен на экра-
не нажатием клажиши "H" (HELP).
Ввести необходимую команду мож-
но, нажав латинскую букву , вхо-
дящую в состав этой команды в
виде заглавной. При этом введен-
ная команда отображается в рабо-
чей строке, после чего, если это
необходимо, ждет ввода операндов
или , в зависимости от назна-
чения , подтверждения нажатием
ENTER. После ввода команды она
дублируется в рабочем экране и
выполняется. В случае некоррект-
ности операндов выводится соот-
ветствующее сообщение. Выполне-
ние любой команды может быть
прервано нажатием BREAK. Если в
результате выполнения команды
может быть потерян текст , то ,
если он был изменен , выводится
запрос на его сохранение : File
has been changed. Save (Y/N) ? В
систему команд среды ассемблера
входят :
Help
Формат : HELP
Вывод на экран списка команд ,
доступных в ассемблере и редак-
торе. Команда HELP не содержит
операндов и не нуждается в под-
тверждении нажатием ENTER.
Quit
Формат: QUIT [адрес][,страница]
Выход из ассемблера. В случае,
если параметры не заданы, проис-
ходит выход через дно стека , в
противном случае осуществляется
безусловный переход по указанно-
му адресу. Параметр "страница"
выводится в порт #7FFD с уста-
новкой бита 4 (по умолчанию за-
дается 0). В качестве параметров
"адрес" и "страница" могут быть
использованы метки или содержа-
щие их арифметические выражения.
Debug
Формат : DEBUG
Выход в отладчик STS. При от-
сутствии в странице 7 монитора
выдается соответствующее сообще-
ние. Если перед вводом этой ко-
манды был откомпилирован текст ,
то в указатель адреса отладки
монитора будет записан адрес по-
следнего ORG. При этом , набрав
в отладчике SS/5 , Вы получите
возможность отлаживать свою про-
грамму, наблюдая на экране имена
меток по их адресам.
Run
Формат : RUN [адрес][,страница]
Выполняет те же действия , что
и команда QUIT , но перед этим
заносит в стек адрес возврата в
резидентный модуль ассемблера ,
что позволяет вернуться в ас-
семблер из запускаемой программы
по команде RET. По умолчанию па-
раметр "адрес" принимает значе-
ние последней директивы ORG , а
параметр "страница" - 0.
Work
Формат : WORK [filename[.ext]]
Загрузка файла в текущую рабо-
чую страницу. По умолчанию за-
дается расширение "H"."filename"
может представлять собой маску.
В этом случае будет загружен
первый файл, который ей удовлет-
воряет. В случае , если параметр
"filename" не введен, то пользо-
вателю предоставляется возмож-
ность выбрать файл из каталога
текущего диска путем выбора его
курсором из списка файлов, появ-
ляющегося в верхнй части экрана.
Catalogue
Формат : CATALOGUE [mask]
По умолчанию задается "*.*"
(все файлы). Выводит на экран
каталог диска. Формат маски оп-
ределяется следующим образом :
знак "?" определяет , что в дан-
ной позиции может находиться лю-
бой символ. Знак "*" определяет,
что , начиная с данной позиции ,
все символы могут принимать про-
извольные значения. При достиже-
нии ограничителя (символ "." или
конец строки ) предполагается ,
что остальная часть строки за-
полнена символами "ПРОБЕЛ".
nUmbers
Формат : NUMBERS [параметр]
Смена системы счисления ото-
бражаемой числовой информации.
"Параметр" представляет собой
одно из двух выражений : "DEC"
или "HEX".
Name
Формат : NAME newfilename[.ext]
Сменить имя файла на новое. По
умолчанию задается расширение
"H". "newfilename" - новое имя
файла.
Print
Формат : PRINT [bytes list]
Выводит в порт ZX-LPRINT теку-
щийтекст , предварительно выводя
указанный список байт. Байты
указываются через запятую.
Edit
Формат : EDIT [имя файла]
Переход к редактированию файла
в текущей странице. В случае ,
если задан параметр "имя файла",
файл с таким именем загружается
в текущую страницу. Если же файл
на диске не найден , в текущей
странице создается новый файл с
введенным именем.
Merge
Формат : MERGE имя файла
Подгрузка текстового файла
формата ALASM в конец текущего
файла. Параметр "имя файла" яв-
ляется обязательным.
counT
Формат: COUNT арифмет. выражение
Производит вычисление указан-
ного арифметического выражения.
Результат вычислений выводится в
десятичной и шестнадцатиричной
системах. В качестве параметров
арифметического выражения могут
использоваться метки, их старшие
и младшие байты.
sYmbol
Формат : SYMBOL [маска]
Вывод на экран списка меток ,
удовлетворяющих условию "маска".
Команда выполняется только в
случае , если до этого была про-
изведена компиляция. В качестве
атрибута метки могут выводиться
следующие сообщения :
число- Значение метки , опреде-
ленное при компиляции ;
NoDef- Метка не была определена,
но была использована ;
Macro- Метка представляет собой
имя блока макроопределе-
ния ;
Wrong- Формат метки не определен
вследствие ошибок компи-
ляции.
Assemble
Формат : ASSEMBLE
Производит компиляцию текста в
текущей странице, начиная с пер-
вой строки. В процессе компиля-
ции на экран выводится количест-
во откомпилированных строк для
контроля зависания машины. По
окончании компиляции на экран
выводятся сообщения :
Symbols: AAAAA-BBBBB
Указанная разность представляет
собой количество свободной памя-
ти в странице , отведенной под
таблицу меток. В случае , если
таблица меток разведена по раз-
личным страницам, параметр AAAAA
указывает адрес последней записи
в POST SYMBOLS PAGE , а параметр
BBBBB - в SYMBOL LIST PAGE ;
Time= XXX.XX
Это число представляет собой
точное время компиляции текста с
точностью до сотых долей секун-
ды.
Save
Формат : SAVE
Текуший файл записывается на
диск. В случае , если файл с та-
ким именем на диске уже сущест-
вует , он удаляется без дополни-
тельных запросов.
Info
Формат : INFO
Выдает на экран номер версии ,
список номеров системных страниц
памяти и перечисление файлов ,
находящихся во всей памяти ком-
пьютера на момент подачи коман-
ды.
paGe
Формат : PAGE [номер страницы]
Переход к странице , указанной
в качестве параметра "страница".
До следующего изменения парамет-
ра команды PAGE указанная стра-
ница становится текущей и все
команды для текущих страниц бу-
дут выполняться над ней.
4. КОМАНДЫ РЕДАКТОРА
При входе в окно редактирова-
ния экран разбивается на две
части: окно редактирования и ин-
формационная строка , в которой
отображается номер страницы те-
кущего файла, его имя, количест-
во свободной памяти в этой стра-
нице и количество байт , перене-
сенных в карман (если это число
не равно 0 ). В этой же строке
обеспечивается подача сервисных
команд обслуживания текста. В
процессе редактирования пользо-
вателю доступны сервисные коман-
ды обслуживания текста, однако в
отличии от среды ассемблера, ре-
зультат их выполнения не отобра-
жается на экране в виде тексто-
вого сообщения, а контролируется
самим пользователем. Список ко-
манд редактора асемблера ALASM :
Quit
Формат : Q
Выход из редактора в среду
ассемблера.
Begin
Формат : B
Переход к началу текста.
End
Формат : E
Переход к концу текста.
Search
Формат: SEARCH [строка символов]
Поиск строки символов по
тексту. Поиск начинается с пози-
ции , следующей за текущей пози-
цией курсора и продолжается до
конца текста. При остановке по-
иска он может быть продолжен пу-
тем ввода комбинации SS/I , при-
чем если такая командя дана за
концом последней строки текста ,
поиск будет начат с его начала.
Если параметр "строка символов"
не указан, то будет использована
строка , введенная в предыдущий
раз.
sYmbol
Формат : SYMBOL [имя метки]
Поиск описания метки по
тексту. При поиске предполагает-
ся, что первый символ имени мет-
ки находится в нулевой позиции.
Свойства - аналогично SEARCH.
coDe
Формат : CODE XXX>[код символа]
Установка в позицию курсора
символа с произвольным кодом ,
набираемым на клавиатуре. При
вводе команды появляется код
символа , находящегося в текущей
позиции курсора и предлагается
заменить его на другой. Если па-
раметр игнорировать , никаких
действий произведено не будет.
Restore
Формат : R
Копирование содержимого карма-
на в позицию курсора. Строка ,
на которой находится курсор ,
оказывается первой после содер-
жимого кармана. После этой опе-
рации сбрасывается флаг разреше-
ния дополнения кармана.
Clear
Формат : C
Очистка кармана.
Xreplace
Формат: REPLACE строка1-строка2
Начиная с позиции , следующей
за текущей позицией курсора ,
производится поиск текста "стро-
ка1". Как только он будет обна-
ружен , выдается сообщение
"REPLACE (Y/N/G)?". При ответе
"Y" текущая "строка1" заменяется
на "строка2" и поиск продолжает-
ся дальше. При ответе "N" поиск
продолжается без замены. При от-
вете "G" все встреченные выраже─
ния "строка1" будут заменены на
"строка2" без дополнительных за-
просов. В любой момент работы
команды ее выполнение может быть
прервано нажатием BREAK.
Line
Формат : LINE номер строки
Устанавливает курсор на строку
с указанным номером. Строки ну-
меруются с нулевой и до конца
текста с приращением 1 на каждой
строке.
При редактировании текста
пользователю доступны функции ,
вызываемые одновременным нажати-
ем двух клавиш. Эти функции ус-
коряют работу в редакторе и не
имеют операндов :
SS/I - продолжение поиска ;
SS/D - переключение русского и
латинского регистров вво-
да текстовой информации.
Изменение регистра инди-
цируется видоизменением
нием курсора ;
SS/Q - удаление текущей строки.
При выполнении этой ко-
манды удаляемая строма
автоматически переносится
в карман , но только в
том случае , если он не
был занят другой информа-
цией ;
SS/W - вставка пустой строки.
Текущая строка сдвигается
вниз ;
SS/E - копирование текущей стро-
ки в карман. После этой
команды курсор перемеща-
ется на следующую строку;
CS/1 - табуляция ;
CS/2 - вставка пробела в позицию
курсора. Остальная часть
строки сдвигается вправо;
5. ДИРЕКТИВЫ АССЕМБЛЕРА
При написании компилятора Автор
придерживался набора директив ,
принятых в TASМ3.0. Директивы ,
не присутствующие в вышеуказан-
ном творении, выбраны в соответ-
ствии с международной практикой
написания компиляторов языка ас-
семблера , т.е. с помощью фонаря
и англо-русского словаря. Список
директив компилятора ALASM и их
описание :
1. ORG адрес[,страница]
Установка адреса компиляции. По
умолчанию параметр "страница"
задается равным 0. В качестве
информации о текущем адресе ком-
пиляции может использоваться
символ "$" , эквивалентный обра-
щению к зарезервивованной пере-
менной, содержащей адрес первого
байта команды, в которой произо-
шло обращение. Пример:
ORG #7D19
LDIR
LDIR записан по адресу #7D19
ORG #C069,#84
INDR
INDR записан по адресу #C069 в
странице #84 512й памяти.
2. Метка EQU значение
Присваивает метке значение, эк-
вивалентное параметру "значе-
ние". Пример :
SCREEN EQU #4000 ; SCREEN=#4000
ATTRS EQU #5B00 ; ATTRS=#5B00
SCR_LEN EQU ATTRS-SCREEN
;SCR_LEN=#1B00
3. Опреации выделения старшего
и младшего байтов слова :
NUMB1 EQU #1234
NUMB2 EQU #ABCD
STBMLB EQU .NUMB1*256+'NUMB2
;STBMLB=#34AB
MLBSTB EQU 'NUMB1*256+.NUMB2
;MLBSTB=#12CD
; Старайтесь избегать деления на
;256 для получения старшего бай-
;та, необходимого слова, так как
;деление занимает в 280 раз
;больше времени, чем просто опе-
;рация выделения старшего байта
DEFB 'NUMB2
;Абсолютно эквивалентно, но нам-
;ного быстрее, чем
DEFB NUMB2/256
;При задании байтового значения
;метки младший байт выделяется
;автоматически
DEFB .NUMB1
;эквивалентно
DEFB NUMB1
;поэтому используется в основном
;для
DEFW .NUMB1
4. DISP адрес
;Установка адреса , в котором
;должна работать программа.
ENT
;Присвоение адресу работы про-
;граммы текущего адреса компиля-
;ции. Пример:
SCREEN EQU #4000
ORG #8000
LD HL,BEGIN
;Пересылка в область экрана
LD DE,SCREEN
;и запуск программы ожидания
LD BC,END-BEGIN
;[A] прерываний
LDIR
CALL SCREEN
DI
HALT
BEGIN DISP SCREEN
MARKA DEC A
HALT
JP NZ,MARKA
;JP - не случайно
RET
ENT
END
5. INCLUDE "имя"[,страница]
Включение в компилируемый файл
дополнительного текстового бло-
ка , записанного на диске под
именем "имя". При этом указанный
файл загружается в страницу, оп-
ределенную параметром "страница"
( по умолчанию - текущая ). По
окончании компиляции включенного
блока компиляция продолжается со
строки , следующей после данной
директивы. Особенностью данной
директивы является то, что файл,
указанный в ней , не будет за-
гружаться с диска , если он уже
находится в необходимой страни-
це. Пример :
LDIR
INCLUDE "TOKENIZE",1
OTDR
INCLUDE "ALASM2"
HALT
Сначала быдет откомпилирован
LDIR, потом текст "TOKENIZE.H" ,
загруженный в страницу 1 , потом
OTDR , затем в текущую страницу
будет загружен и откомпилирован
текст "ALASM2.H" , после чего с
диска будет считан основной файл
и компиляция продолжится с ко-
манды HALT.
6. MAIN "имя файла"[,страница]
Указание основного файла компи-
ляции. Директива MAIN должна
быть первой исполнимой директи-
вой подчиненного файла. Будьте
внимательны с именами файлов ,
содержащими символы "." или "*".
Лучше заменить их на символ "?".
Пример :
MAIN "MAKE6?7",6
LDIR
; После подачи команды ASSEMBLE
компиляция передается программе
MAKE6*7 , находящейся в странице
6, затем находящийся в ней IN-
CLUDE вызывает подчиненную прог-
рамму , состоящую из директивы
MAIN и команды LDIR. Во включае-
мых файлах MAIN игнорируется ,
поэтому после ассемблирования
LDIR происходит возврат в основ-
ную программу и продолжение ком-
пиляции.
7. INCBIN "имя файла"[,длина]
Включение в компилируемую прог-
рамму кодового блока, записанно-
го на диске под именем "имя фай-
ла" размером "длина" байт или по
умолчанию из данных каталога.
Пример :
ORG #E000
LD HL,SCRFILE
LD DE,#4000
LD BC,6144
LDIR
RET
SCRFILE INCBIN "SCR6?7",6144
; По адресу SCRFILE в процессе
компиляции будет загружен файл
SCR6*7 , который после запуска
будет перенесен в экран.
8. DUP число
Левая программная скобка. Ука-
зывает на начало блока , который
необходимо компилировать "число"
раз подряд.
EDUP
Правая программная скобка. Ука-
зывает на конец повторяемого
блока. Пример :
DUP 32
LDI
LD A,B
OR C
JR Z,$+3 ;$ - адрес первого
;байта компилируемой команды
LD (HL),D
EDUP
;Блок текста между DUP и EDUP
;будет откомпилирован 32 раза.
9. DEFM "строка символов"
[,"строка символов"]
Резервирование строки символов.
Пример :
DEFM "Здесь была строка "
DEFM "символов"," ВАСЯ"
10. DEFB байт[,список байт]
Резервирование списка байт.
Пример :
DEFB "У",13,10,"попа",13,10
DEFB "была",13,10,"собака"
11. DEFW слово[,список слов]
Резервирование списка слов.
Пример :
DEFW ALASKA,BUFFER,12,
DEFW #BD15,32767,.NUMB1
12. DEFS количество повторений
[,список байт]
Список байт (по умолчанию - 0 )
копируется в текущий адрес ком-
пиляции. Число циклов равно па-
раметру "количество повторений".
Пример :
LD SP,#5B00
DEFS 8,#C5,#D5,#E5,#F5
; эквивалентно
; DUP 8
; PUSH BC
; PUSH DE
; PUSH HL
; PUSH AF
; EDUP
6.ОШИБКИ КОМПИЛЯТОРА
При компиляции исходного
текста возможна выдача ошибок
времени компиляции , связанных с
невнимательностью программиста.
Список ошибок времени компиля-
ции ассемблера ALASM128/512 :
0 - синтаксическая ошибка ;
1 - зарезерворована ;
2 - зарезервирована ;
3 - короткий переход некорректен
4 - зарезервирована ;
5 - зарезервирована ;
6 - повторное описание метки ;
7 - зарезервирована ;
8 - зарезервирована ;
9 - зарезервирована ;
10 - компиляция в ПЗУ ;
11 - недопустимая операция ;
12 - неправильная MACRO-операция
13 - не используется ;
14 - ошибка системного стека ;
15 - ошибка диска ;
Ошибки времени заполнения :
wrong short - неправильное обра-
щение к метке за пределами
"короткого" поля ;
not defined - метка не определе-
на.
7. В СЛЕДУЮЩИХ ВЕРСИЯХ
Существующая версия ALASMа не
является последней, так как пути
усовершенствования неисчислимы.
Автор сделает все возможное ,
чтобы сделать ассемблер еще бо-
лее удобным для пользователя.
Список доработок, которые следу-
ет ожидать в будущих версиях в
первую очередь :
- увеличение скорости компиляции
более чем в 2 раза ;
- возможность настройки систем-
ных данных ;
- увеличение возможностей конфи-
гурирования ;
- поддрежка режима расширенной
памяти на всех типах машин ;
- перекодировка йцукен-яверты ;
- увеличение плотности хранения
текста при сохранении совмес-
тимости форматов версий сверху
вниз ;
- директивы условной компиляции;
- макрооперации и макроопределе-
ния ;
- вывод меток не только по име-
ни, но и по значению ;
- RAMDISK для файлов , подгружа-
емых с помощью INCBIN ;
- устранение недостатков , свя-
занных с однопроходностью.
Набрал в текстовом редакторе
ANACONDA Мищенко Алексей Ана-
тольевич ( ALEM ). Адрес :
Украина , 310177 , Харьков-177 ,
пр. Славы , 7. Кв 17.
Телефон : ( 0572 ) 70-37-49.
________________________________