ZX Power
#01
11 октября 1996 |
|
Рабочий стол - Краткое описание: макро-ассемблера отладчика "ALASM 2.8".
Теневой макро ассемблер-отладчик 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. ________________________________
Другие статьи номера:
Похожие статьи:
В этот день... 2 декабря