|
ZX User #02
05 декабря 1996 |
|

┌───────┐
│СИСТЕМА│
└───────┘
Теневой макро ассемблер-отладчик ALASM128/512 v2.8
Краткое описание функциональных возможностей.
Оглавление:
1. РАСПРЕДЕЛЕНИЕ ПАМЯТИ
2. ХОЛОДНЫЙ ЗАПУСК
3. КОМАНДЫ СРЕДЫ АССЕМБЛЕРА
4. КОМАНДЫ РЕДАКТОРА
5. ДИРЕКТИВЫ АССЕМБЛЕРА
6. ОШИБКИ КОМПИЛЯТОРА
7. В СЛЕДУЮЩИХ ВЕРСИЯХ
════════════════════════════════════════════════════════════════
1. РАСПРЕДЕЛЕНИЕ ПАМЯТИ
ALASM позволяет работать одновременно с несколькими текстами,
расположенными в разных страницах памяти пользователя. Переход
от редактирования одной страницы к другой осуществляется вводом
команды
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 (CS/SPACE).
Line
Формат: LINE номер строки
Устанавливает курсор на строку с указанным номером. Строки
нумеруются с нулевой и до конца текста с приращением 1 на
каждой строке.
При редактировании текста пользователю доступны функции,
вызываемые одновременным нажатием двух клавиш. Эти функции
ускоряют работу в редакторе и не имеют операндов:
SS/I - продолжение поиска;
SS/D - переключение русского и латинского регистров ввода тек-
стовой информации. Изменение регистра индицируется
видоизменением курсора;
SS/Q - удаление текущей строки. При выполнении этой команды
удаляемая строма автоматически переносится в карман, но
только в том случае, если он не был занят другой инфор-
мацией;
SS/W - вставка пустой строки. Текущая строка сдвигается вноз;
SS/E - копирование текущей строки в карман. После этой команды
курсор перемещается на следующую строку;
CS/1 - табуляция;
CS/2 - вставка пробела в позицию курсора. Остальная часть строки
сдвигается вправо;
────────────────────────────────────────────────────────────────
────────────────────────────────────────────────────────────────
5. ДИРЕКТИВЫ АССЕМБЛЕРА
При написании компилятора Автор придерживался набора дирек-
тив, принятых в TASM3.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=#ЗЧAB
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 "MAKEб?7",6
LDIR
;После подачи команды ASSEMBLE компиляция передается
;программе MAKEб*7, находящейся в странице 6,
;затем находящийся в ней INCLUDE вызывает подчиненную
;программу, состоящую из директивы MAIN и команды LDIR.
;Во включаемых файлах MAIN игнорируется, поэтому после ассембли-
;рования LDIR происходит возврат в основную програму и продолже-
;ние компиляции.
────────────────────────────────────────────────────────────────
7.
INCBIN "имя файла"[,длина]
Включение в компилируемую программу кодового блока, записанного
на диске под именем "имя файла" размером "длина" байт или по
умолчанию из данных каталога.
Пример:
ORG #E000
LD HL,SCRFILE
LD DE,#4000
LD BC,6144
LDIR
RET
SCRFILE INCBIN "SCRб?7",6144
;По адресу SCRFILE в процессе компиляции будет загружен файл
;SCRб*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 "Здесь была строка символов"," ВАСЯ"
────────────────────────────────────────────────────────────────
10.
DEFB байт[,список байт]
Резервирование списка байт
Пример:
DEFB "У",13,10,"попа",13,10,"была",13,10,"собака",13,10
────────────────────────────────────────────────────────────────
11.
DEFW слово[,список слов]
Резервирование списка слов.
Пример:
DEFW ALASKA,BUFFER,12,#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. В СЛЕДУЮЩИХ ВЕРСИЯХ
Существующая версия ALASMa не является последней, так как пути
усовершенствования неисчислимы. Автор сделает все возможное,
чтобы сделать ассемблер еще более удобным для пользователя.
Список доработок, которые следует ожидать в будущих версиях в
первую очередь:
- увеличение скорости компиляции более чем в 2 раза;
- возможность настройки системных данных;
- увеличение возможностей конфигурирования;
- поддрежка режима расширенной памяти на всех типах машин;
- перекодировка йцукен-яверты;
- увеличение плотности хранения текста при сохранении
совместимости форматов версий сверху вниз;
- директивы условной компиляции;
- макрооперации и макроопределения;
- вывод меток не только по имени, но и по значению;
- RAMDISK для файлов, подгружаемых с помощью INCBIN;
- устранение недостатков, связанных с однопроходностью.
Other articles:
|
|
|
|
|
|
|
|
|
|
Similar articles:
В этот день... 15 November