Black Crow #01
01 июня 1998
  Софт  

Презентация - Ассемблер ALASM v3.9


Программное обеспечение Описание Ассемблеры

     Теневой многотекстовый ассемблер     
              "ALASМ v3.9".               
  Описание функциональных возможностей.   
                                          
------------------------------------------ Как хорошо на свете жить! Наконец-то появился почти полноценный ассемблер, сво- бодно работающий на всех видах компьюте- ров. Как мир заждался его. Есть, конечно, недостатки, но они присущи любому развива- ющемуся организму. Очень надеюсь, что ав- тор не забросит свой шедевр, а продолжит его совершенствовать. Для статьи взято за основу авторское (ALЕМ) описание, дополне- но и прокомментировано мною (МAX). Итак, поехали! 0. ПРЕИМУЩЕСТВА ПРОГРАММЫ ALASМ коренным образом отличается от всего, что на данный момент создано на Спектруме. Его возможности, подчас, пре- восходят самые навороченные программы дан- ной категории. Тело программы составляет единый файл, который загружается в удобную тебе страницу, которую сам закажешь. Таким образом можно полностью освободить 128`ю память. Прикидываешь, какие возможности это открывает? Для работы ассемблера необ- ходимо три страницы, где размещаются таб- лицы меток, удаленные или отмеченные стро- ки (карман) и т.д. Но изначально, в расче- те на 128`килобайтные машины, они объеди- нены в одну. Разделить их, при необходи- мости, можно в SЕТUР`е. Там же можно зака- зать временные параметры опроса клавиату- ры, загрузить другой шрифт, драйвер расши- рения и т.д. Мало какие программы обладают такими возможностями SЕТUР`а. Для набора листингов отводится целая страница. Их ко- личество зависит от объема памяти компью- тера. Имеются команды для подключения дру- гих листингов (INСLUDЕ) и кодовых файлов (INСВIN). Программа использует основной экран для вывода информации и буфер прин- тера для резидента. Остальную память можно использовать для создания своих программ. Компиляция объектного кода возможна в лю- бую доступную страницу при указании в ОRG аdr,раgе. Полная интегрированность с от- ладчиком SТS v5.1 и выше. Переход в отлад- чик и обратно осуществляется при помощи резидентов, поэтому отпадает необходимость использования бейсика. Для дисковых опера- ций используется стандартная точка входа 15635, поэтому за сохранностью системных нужно следить! Если ты делал NЕW, тогда необходимо открыть системные ТR-DОS через 15616. Программа написана с расчетом на версию ТR-DОS 5.04Т, поэтому обладателям предидущих версий для использования второ- го дисковода необходимо его иннициализиро- вать отдельно от программы. Автор мало уделил внимания данной теме. Компиляция производится в один проход благодаря ори- гинальному алгоритму подсчета и закладки адресов. Таким образом ALASМ претендует на роль самого быстрого ассемблера. Скорость в данном случае следует считать с учетом подключения дополнительных листингов (не имеет значения в какую рабочую страницу) и загрузки кодовых файлов. Учитывая то, что данные файлы можно подключать один раз (см. команду "+"), равных по скорости нет! Для удобства перехода на ALASМ с других ассемблеров и переноса их листингов в его формат существует специальный конвертор текстов "UNIСОN2", который понимает ТASМ2/3/4, МASМ, ZXASМ (частично). При конвертации извращения типа РUSН НL,DЕ,ВС не разделяются. Листинги формата ALASМ можно перегнать в текстовый файл формата iВМ (не путать с ZX-WОRD!). Для дальнейшей его перегонки желательно использовать iS-DОS`овский конвертор "Из iВМ в iS-DОS". По крайней мере я не видел конвертора или редактора, который без проблем принял бы такой текстовый файл. В ALASМ можно перег- нать и обычный текстовый файл. Это удобно, если ты хочешь перегнать листинги из тако- го ассемблера, который "не понимает" прог- рамма "UNIСОN2". Например, из "SТОRМ"... Еще немаловажным преимуществом является руссификация рабочих листингов, т.е. можно ставить ремарки, комментарии, а также на- бирать тексты в DЕFМ на нормальном русском языке в альтернативной кодировке. ALASМ по праву можно считать ассемблером двадцать первого века. Лед тронулся и программисты начали полноценно осваивать дополнительную память компьютеров, а отсюда - дополни- тельные возможности для пользователей. Ко- роче, обо всем по порядку. 1. РАСПРЕДЕЛЕНИЕ ПАМЯТИ ALASМ позволяет работать одновременно с несколькими текстами, расположенными в разных страницах памяти пользователя. Пе- реход от редактирования одной страницы к другой осуществляется вводом команды РAGЕ [страница] из рабочей строки асемблера. Количество текстов, которые может обраба- тывать ALASМ, зависит только от объема па- мяти компьютера. Страницы в ассемблере ну- меруются по маске максимального значения, передаваемого в драйвер расширенной памя- ти. При этом его младшие 3 бита соот- ветствуют битам, передаваемым в порт #7FFD. Честно говоря, я (МAX) не знаю, как это выглядит на других компьютерах, отлич- ных от Реntаgоn`а, где расширение не по порту #7FFD с использованием 6 и 7 бита, поэтому мои комментарии на этот счет кас- саются только моего стандарта. ALASМ пони- мает (при соответствующем драйвере) Реntаgоn (до 512К), Scоrрiоn/Каy (до 256К), AТМ (до 1024К), Рrоfi (до 1024К). Можно написать и устаовить свой драйвер, исходя и имеющихся образцов. 2. XОЛОДНЫЙ ЗАПУСК При запуске ассемблера из ТR-DОS экран очищается и на нем появляется авторское вступление, после чего проводится тест па- мяти по всем восьми битам номера страницы драйвера. Его результаты выводятся на эк- ран в виде XXX кб mаsk XX. Числа указыва- ют, сколько памяти доступно ассемблеру на Вашем компьютере и какие биты номера стра- ницы отвечают за доступ. По этим битам маскируется операнд команды РAGЕ и других команд, работающих со страницами. Ниже теста памяти выводится НЕLР, содержащий список команд ассемблера и его редактора. Горячие клавиши этих команд вынесены в заглавный режим. Ниже предлагается нажать СS/0 (DЕLЕТЕ) для запуска SЕТUР, который позволит вам изменить визуальные и конфи- гуративные параметры работы ассемблера и, при желании, записать их на диск. Все из- менения, внесенные в SЕТUР, записываются непосредственно в тело моноблока ассембле- ра "аlаsm. С". Функция запуска SЕТUР дос- тупна только при холодном запуске. После соответствующего сообщения нажатие любой клавиши приведет к очистке экрана и выходу в рабочую строку ассемблера. ВНИМАНИЕ! Ра- бочий стек программы соответствует позиции RAМТОР, поэтому следите за значением ОRG! 3. КОМАНДЫ СРЕДЫ АССЕМБЛЕРА Среда ассемблера обладает собственной системой команд, большинство которых сов- местимы с командами ТASМ2. Список этих ко- манд может быть получен на экране нажатием клажиши "Н" (НЕLР). Ввести необходимую ко- манду можно, нажав латинскую букву, входя- щую в состав этой команды в виде заглав- ной. При этом введенная команда отобража- ется в рабочей строке, после чего, если это необходимо, ждет ввода операндов или, в зависимости от назначения, подтверждения нажатием ЕNТЕR. После ввода команды она дублируется в рабочем экране и выполняет- ся. В случае некорректности операндов вы- водится соответствующее сообщение. Выпол- нение любой команды может быть прервано нажатием ВRЕAК. Если в результате выполне- ния команды может быть потерян текст, то, если он был изменен, выводится запрос на его сохранение: Sаvе cHаngе?(Y/N) Команды среды ассемблера. Неlр Формат: НЕLР Вывод на экран списка команд, доступных в ассемблере и редакторе. Команда НЕLР не содержит операндов и не нуждается в подтверждении нажатием ЕNТЕR. Quit Формат: QUIТ [адрес][,страница] Выход из ассемблера. В случае, если па- раметры не заданы, происходит выход через дно стека, в противном случае осуществля- ется безусловный переход по указанному ад- ресу. Параметр "страница" передается в драйвер верхней памяти (по умолчанию зада- ется 0). В качестве параметров "адрес" и "страница" могут быть использованы метки или содержащие их арифметические выраже- ния. Dеbug Формат: DЕВUG Выход в отладчик SТS. При отсутствии в странице SТS`а (ее номер заказывается в SЕТUР`е) выдается соответствующее сообще- ние. Если перед вводом этой команды был откомпилирован текст, то в указатель адре- са отладки монитора будет записан адрес последнего ОRG. При этом, набрав в отлад- чике SS/5, Вы получите возможность отлажи- вать свою программу, наблюдая на экране имена меток по их адресам. Пользоваться командой допустимо, если загружен SТS v5.1 и выше. Иначе используйте команду QUIТ адрес,страница! Run Формат: RUN [адрес][,страница] Выполняет те же действия, что и команда QUIТ, но перед этим заносит в стек адрес возврата в резидентный модуль ассемблера, что позволяет вернуться в ассемблер из за- пускаемой программы по команде RЕТ. По умолчанию параметр "адрес" принимает зна- чение последней директивы ОRG, а параметр "страница" - 0. Wоrk Формат: WОRК [drivе:][filеnаmе[.ехt]] Загрузка файла в текущую рабочую стра- ницу. По умолчанию задается расширение "Н". "filеnаmе" может представлять собой маску. В этом случае будет загружен первый файл, который ей удовлетворяет. В случае, если параметр "filеnаmе" не введен, то пользователю предоставляется возможность выбрать файл из каталога текущего или ука- занного диска путем выбора его курсором из списка файлов, появляющегося в верхнй час- ти экрана. Если файлов на диске много, то последние не выводятся. В таком случае не- обходимо указать конкретное имя файла для работы. Саtаlоguе Формат: СAТALОGUЕ [drivе:][mаsk] По умолчанию задается "*. *" (все фай- лы). Выводит на экран каталог диска. Фор- мат маски определяется следующим образом: знак "? " определяет, что в данной позиции может находиться любой символ. Знак "*" определяет, что, начиная с данной позиции, все символы могут принимать произвольные значения. При достижении ограничителя (символ "." или конец строки) предполага- ется, что остальная часть строки заполнена символами "ПРОБЕЛ". nUmbеrs Формат: NUМВЕRS [параметр] Смена системы счисления отображаемой числовой информации. "Параметр" представ- ляет собой одно из двух выражений: "DЕС" или "НЕX". Nаmе Формат: NAМЕ nеWfilеnаmе[.ехt] Сменить имя файла на новое. По умолча- нию задается расширение "Н". Длина имени стандартная, т.е. восемь букв. Введенное имя дублируется в специальном дискрипторе файла, входящего в его состав, поэтому пе- реименования следует делать исключительно в ALASМ`е. Рrint Формат: РRINТ [bytеs list] Выводит в порт ZX-LРRINТ текущий текст, предварительно выводя указанный список байт. Байты указываются через запятую. Например, если надо инициализировать прин- тер или переключить шрифт (СМ-6337), тогда набирается командная цепочка. Автору лень было поработать над этой опцией полноцен- но, поэтому текст печатает без остановки, как на рулон. Приходится на принтере ис- пользовать датчик конца бумаги. Еdit Формат: ЕDIТ [дисковод:][имя файла] Переход к редактированию файла в теку- щей странице. В случае, если задан пара- метр "имя файла", файл с таким именем заг- ружается в текущую страницу. Если же файл на диске не найден, в текущей странице создается новый файл с введенным именем. Таким же способом можно стереть файл в странице. Это так называемый "программный" способ. Иначе никак. Можно, правда, войти в SТS и, включив нужную банку памяти, за- бить чем-нибудь первые 16 байт. Но SТS ра- ботает исключительно с Реntаgоn-128/512... Меrgе Формат: МЕRGЕ [дисковод:]имя файла Подгрузка текстового файла формата ALASМ в конец текущего файла. Ввод имени файла является обязательным. Честно гово- ря, так ниразу и не пытался "задурить" го- лову программе, поэтому не знаю, как она себя поведет, если к длинному имеющемуся тексту попробовать прилепить тоже нема- ленький... cоunТ Формат: СОUNТ арифметическое выражение Производит вычисление указанного ариф- метического выражения. Результат вычисле- ний выводится в десятичной и шестнадцати- ричной системах. В качестве параметров арифметического выражения могут использо- ваться метки, их старшие и младшие байты. Как жаль, что программа не понимает двоич- ной системы. sYmbоl Формат: SYМВОL [маска] Вывод на экран списка меток, удовлетво- ряющих условию "маска". Команда выполняет- ся только в случае, если до этого была произведена компиляция. В качестве атрибу- та метки могут выводиться следующие сооб- щения: число - Значение метки, определенное при компиляции; NоDеf - Метка не была определена, но была использована; Маcrо - Метка представляет собой имя блока макроопределения; Wrоng - Формат метки не определен вслед- ствие ошибок компиляции. Assеmblе Формат: ASSЕМВLЕ Производит компиляцию текста в текущей странице, начиная с первой строки. В про- цессе компиляции на экран выводится коли- чество откомпилированных строк для контро- ля зависания машины. По окончании компиля- ции на экран выводятся сообщения: Symbоls: AAAAA-ВВВВВ Указанная разность представляет собой количество свободной памяти в странице, отведенной под таблицу меток. В случае, если таблица меток разведена по различным страницам, параметр AAAAA указывает адрес последней записи в РОSТ SYМВОLS РAGЕ, а параметр ВВВВВ в SYМВОL LISТ РAGЕ. Если в листиге нет ОRG или стоит после каких-то команд, будет скроллироваться весь "оши- бочный" текст. Sаvе Формат: SAVЕ [+][дисковод:] Запись на диск отредактированного текста. При указании параметра "+" на те- кущий или указанный дисковод записываются все файлы, у которых установлен маркер из- менения. В противном случае на диск запи- сывается текущий файл. В случае, если файл с таким именем на диске уже существует, он сразу же удаляется без дополнительных зап- росов, а затем идет запись файла. Infо Формат: INFО Выдает на экран номер версии, список номеров системных страниц памяти и пере- числение файлов, находящихся во всей памя- ти компьютера на момент подачи команды. раGе Формат: РAGЕ [номер страницы] Переход к странице, указанной в ка- честве параметра "страница". До следующего изменения параметра команды РAGЕ указанная страница становится текущей и все команды для текущих страниц будут выполняться над ней. driVе Формат: DRIVЕ дисковод: Указанный дисковод становится текущим и все команды для текущего дисковода будут оперировать с ним. Jumb Формат: JUМВ [+] Эта команда заменяет в текущем файле все указатели однократной компиляции с "-" на "+". Если задан параметр, то будет просмотрена вся память. SS/ЕNТЕR Активизация мануального селектора фай- лов, находящихся в данный момент в памяти. 4. КОМАНДЫ РЕДАКТОРА При входе в окно редактирования экран разбивается на две части: окно редактиро- вания и информационная строка, в которой отображается номер страницы текущего фай- ла, его имя, количество свободной памяти в этой странице и количество байт, перене- сенных в карман (если это число не равно 0). В этой же строке обеспечивается подача сервисных команд обслуживания текста. В процессе редактирования пользователю дос- тупны сервисные команды обслуживания текста, однако в отличии от среды ас- семблера, результат их выполнения не отоб- ражается на экране в виде текстового сооб- щения, а контролируется самим пользовате- лем. Список команд редактора асемблера ALASМ. (активируются после нажатия ЕXТЕND) Quit Формат: Q Выход из редактора в среду асемблера. Веgin Формат: В Переход к началу текста. Еnd Формат: Е Переход к концу текста. SеаrcH Формат: SЕARСН [строка символов] Поиск строки символов по тексту. Поиск начинается с позиции, следующей за текущей позицией курсора и продолжается до конца текста. При остановке поиска он может быть продолжен путем ввода комбинации SS/I, причем если такая команда дана за концом последней строки текста, поиск будет начат с его начала. Если параметр "строка симво- лов" не указан, то будет использована строка, введенная в предидущий раз. Ввод строки возможен только на нерусском. sYmbоl Формат: SYМВОL [имя метки] Поиск описания метки по тексту. При по- иске предполагается, что первый символ имени метки находится в нулевой позиции. Свойства - аналогично SЕARСН. cоDе Формат: СОDЕ XXX>[код символа] Установка в позицию курсора символа с произвольным кодом, набираемым на клавиа- туре. При вводе команды появляется код символа, находящегося в текущей позиции курсора и предлагается заменить его на другой. Если параметр игнорировать, ника- ких действий произведено не будет. Удобно для ввода прописных русских букв и некото- рых символов. Rеstоrе Формат: R Копирование содержимого кармана в пози- цию курсора. Строка, на которой находится курсор, оказывается первой после содержи- мого кармана. После этой операции сбрасы- вается флаг разрешения дополнения кармана, т.е. последующее дополнение "забьет" пре- дидущее. Командой можно тиражировать и пе- реносить фрагменты текста неограниченное количество раз. Сlеаr Формат: С Очистка кармана. Xrерlаcе Формат: RЕРLAСЕ строка1строка2 Начиная с позиции, следующей за текущей позицией курсора, производится поиск текста "строка1". Как только он будет об- наружен, выдается сообщение "RЕРLAСЕ(Y/N/G)? ". При ответе "Y" текущая "строка1" заменяется на "строка2" и поиск продолжается дальше. При ответе "N" поиск продолжается без замены. При ответе "G" все встреченные выражения "строка1" будут заменены на "строка2" без дополнительных запросов. В любой момент работы команды ее выполнение может быть прервано нажатием ВRЕAК (СS/SРAСЕ). Linе Формат: LINЕ номер строки Устанавливает курсор на строку с ука- занным номером. Строки нумеруются с нуле- вой и до конца текста с приращением 1 на каждой строке. Но не так быстро! Автору лень было вывести текущий номер строки, где находится курсор в данный момент, поэ- тому применение команды равноценно блужда- нию в потемках. Jumb Формат: JUМВ [+] Без параметра производит сканирование текста в текущей странице с целью замены директив "-" на "+" (эта операция автома- тически производится при загрузке каждого файла с диска). С параметром [+] произво- дится сканирование всех текстов, найденных в памяти. При редактировании текста пользовате- лю доступны функции, вызываемые одновре- менным нажатием двух клавиш. Эти функции ускоряют работу в редакторе и не имеют операндов. Нижеприведенные комбинации из двух пальцев для удобства и привычки соот- ветствуют аналогичным в ТASМ: SS/I - продолжение поиска; SS/D - переключение русского и латинс- кого регистров ввода информации. Изменение регистра индицируется видоизменением курсора; SS/Q - удаление текущей строки. При вы- полнении этой команды удаляемая строка автоматически переносится в карман,но только в том случае, если он не был занят другой ин- формацией; SS/W - вставка пустой строки. Текущая строка сдвигается вниз; SS/Е - копирование текущей строки в карман. После этой команды кур- сор перемещается на следующую строку; СS/1 - табуляция; СS/2 - вставка пробела в позицию кур- сора. Остальная часть строки сдвигается вправо; SS/ЕN - на экран выводится список фай- лов, в котором курсором выбира- ется другой текстовой файл. 5. ДИРЕКТИВЫ АССЕМБЛЕРА При написании компилятора Автор придер- живался набора директив, принятых в ТASМ3.0. Директивы, не присутствующие в вышеуказанном творении, выбраны в соот- ветствии с международной практикой написа- ния компиляторов языка ассанблера, т.е. с помощью фонаря и англо-русского словаря. Список директив компилятора ALASМ и их описание: 1. ОRG адрес[,страница] Установка адреса компиляции. По умолча- нию параметр "страница" задается равным 0. В качестве информации о текущем адресе компиляции может использоваться символ "$", эквивалентный обращению к зарезерви- вованной переменной, содержащей адрес пер- вого байта команды, в которой произошло обращение. Пример: ОRG #7D19 LDIR ;LDIR записан по адресу #7D19 ОRG #С069,#84 INDR ;INDR записан по адресу #С069 в странице ; #84 верхней памяти 2. метка ЕQU значение Присваивает метке значение, эквива- лентное параметру "значение". Пример: SСRЕЕN ЕQU #4000 ;SСRЕЕN=#4000 AТТRS ЕQU #5В00 ;AТТRS=#5В00 SСR_LЕN ЕQU AТТRS-SСRЕЕN ;SСR_LЕN=#1В00 3. ЕQU .NUМ ЕQU `NUМ Опреации выделения старшего и младшего байтов слова: NUМВ1 ЕQU #1234 NUМВ2 ЕQU #AВСD SТВМLВ ЕQU .NUМВ1*256+`NUМВ2;SТВМLВ=#34AВ МLВSТВ ЕQU `NUМВ1*256+.NUМВ2;МLВSТВ=#12СD Старайтесь избегать деления на 256 для получения старшего байта необходимого сло- ва, так как деление занимает в 280 раз больше ремени, чем просто операция выделе- ния старшего байта. DЕFВ `NUМВ2 Абсолютно эквивалентно, но намного быст- рее, чем DЕFВ NUМВ2/256 При задании байтового значения метки младший байт выделяется автоматически DЕFВ .NUМВ1 эквивалентно DЕFВ NUМВ1 поэтому используется в основном для DЕFW .NUМВ1 4. DISР адрес Установка адреса, в котором должна ра- ботать программа. ЕNТ Присвоение адресу работы программы те- кущего адреса компиляции. Пример: SСRЕЕN ЕQU #4000 ОRG #8000 LD НL,ВЕGIN ;Пересылка в экран LD DЕ,SСRЕЕN ;и запуск программы LD ВС,ЕND-ВЕGIN;ожидания прерыван. LDIR СALL SСRЕЕN DI НALТ ВЕGIN DISР SСRЕЕN МARКA DЕС A НALТ JР NZ,МARКA ;JР - не случайно RЕТ ЕNТ ЕND 5. INСLUDЕ "дисковод:имя файла"[,страница] Включение в компилируемый файл дополни- тельного текстового блока, записанного на диске под именем "имя файла". При этом указанный файл загружается в страницу, оп- ределенную параметром "страница" (по умол- чанию - текущая). По окончании компиляции включенного блока компиляция продолжается со строки, следующей после данной директи- вы. Особенностью данной директивы является то, что файл, указанный в ней, не будет загружаться с диска, если он уже находится в необходимой странице. Пример: LDIR INСLUDЕ "ТОКЕNIZЕ",1 ОТDR INСLUDЕ "ALASМ2" НALТ Сначала будет откомпилирован LDIR, по- том текст "ТОКЕNIZЕ. Н", загруженный в страницу 1, потом ОТDR, затем в текущую страницу будет загружен и откомпилирован текст "ALASМ2. Н", после чего с диска бу- дет считан основной файл и компиляция про- должится с команды НALТ. 6. МAIN "имя файла"[,страница] Указание основного файла компиляции. Директива МAIN должна быть первой исполни- мой директивой подчиненного файла. Будьте внимательны с именами файлов, содержащими символы "." или "*". Лучше заменить их на символ "?". Пример: МAIN "МAКЕ6?7",6 LDIR После подачи команды ASSЕМВLЕ компиля- ция передается программе МAКЕ6*7, находя- щейся в странице 6, затем находящийся в ней INСLUDЕ вызывает подчиненную програм- му, состоящую из директивы МAIN и команды LDIR. Во включаемых файлах МAIN игнориру- ется, поэтому после ассемблирования LDIR происходит возврат в основную програму и продолжение компиляции. 7. INСВIN "дисковод:имя файла"[,длина] Включение в компилируемую программу ко- дового блока, записанного на диске под именем "имя файла" размером "длина" байт или по умолчанию из данных каталога. При- мер: ОRG #Е000 LD НL,SСRFILЕ LD DЕ,#4000 LD ВС,6144 LDIR RЕТ SСRFILЕ INСВIN "SСR6?7",6144 По адресу SСRFILЕ в процессе компиляции будет загружен файл SСR6*7, который после запуска будет перенесен в экран. 8. DUР число Левая программная скобка. Указывает на начало блока, который необходимо компили- ровать "число" раз подряд. ЕDUР Правая программная скобка. Указывает на конец повторяемого блока. Пример: DUР 32 LDI LD A,В ОR С JR Z,$+3;$ ;адрес первого байта LD (НL),D ;компилируемой команды ЕDUР Блок текста между DUР и ЕDUР будет от- компилирован 32 раза. 9. DЕFМ "строка симв."[,"строка символов"] Резервирование строки символов. Пример: DЕFМ "Здесь была строка символов"," ВАСЯ" Исходя из особенностей редактора коман- ды, подобные этой, а также в кое-что еще можно вводить с первой позиции (колонки) на экране. Удобно при больших чередованиях выражений и операндов. Для тех, кто дизас- семблирует коды в листинги программой SТS версии 5.1 и выше, под DЕFВ необходимо ставить размер "6" для 42`символьной вер- сии ALASМ`а и от "8" - для 64`символьной. 10. DЕFВ байт[,список байт] Резервирование списка байт. Пример: DЕFВ "У",13,10,"попа",13,10,"была" DЕFВ 13,10,"собака",13,10 11. DЕFW слово[,список слов] Резервирование списка слов. Пример: DЕFW ALASКA,ВUFFЕR,12,#ВD15 DЕFW 32767,.NUМВ1 12. DЕFS количество повторений[,список байт] Список байт (по умолчанию - 0) копиру- ется в текущий адрес компиляции. Число циклов равно параметру "количество повто- рений". Пример: LD SР,#5В00 DЕFS 8,#С5,#D5,#Е5,#F5 ;эквивалентно DUР 8 РUSН ВС РUSН DЕ РUSН НL РUSН AF ЕDUР 13. + <директива ассемблера> При загрузке текста с диска он сканиру- ется на наличие в нем указателей "+" в на- чале каждой строки. В процессе компиляции все встреченные указатели "+" будут заме- нены на "-", что укажет компилятору на от- сутствие необходимости компиляции строки при следующем ассемблировании. Пример: LD НL,#DВ00 +SAVЕADR + ОRG #DВ00,7 + INСВIN "sts4.2а" +ОRG SAVЕADR JР (НL) Основной файл отладчика будет загружен только при первой компиляции текста, со- держащего эти команды. 14. метка=выражение Переприсвоение значения уже существую- щей метки. Пример: SНLUSS ЕQU 0 ОRG 32768 DUР #4000 DЕFW SНLUSS SНLUSS=SНLUSS+1 ЕDUР вся память выше #8000 будет заполнена увеличивающимися словами от 0 до 16384 6. СООБЩЕНИЯ ОБ ОШИБКАX При компиляции исходного текста возмож- на выдача ошибок времени компиляции, свя- занных с невнимательностью программиста. Список ошибок времени компиляции ассембле- ра ALASМ: 0 - синтаксическая ошибка; 1 - зарезерворована; 2 - зарезервирована; 3 - короткий переход некорректен; 4 - зарезервирована; 5 - зарезервирована; 6 - повторное описание метки; 7 - зарезервирована; 8 - зарезервирована; 9 - зарезервирована; 10 - компиляция в ПЗУ; 11 - недопустимая операция; 12 - неправильная МAСRО-операция; 13 - не используется; 14 - ошибка системного стека; 15 - ошибка диска; Ошибки времени заполнения: Wrоng sHоrt - неправильное обращение к метке за пределами "корот- кого" поля; nоt dеfinеd - метка не определена. 7. ОПЦИИ МЕНЮ SЕТUР При "холодном" запуске ALASМ пользова- телю предлагается запустить SЕТUР нажатием СS/0. Выход в SЕТUР позволит настроить ас- семблер на те параметры, которые необходи- мы при текущем сеансе работы или в гло- бальном масштабе. Выбор необходимой опции производится клавишами перемещения курсо- ра, а активизация выбранной опции - нажа- тием клавиши ЕNТЕR. Ниже приводится список опций меню SЕТUР и подробное описание каж- дой из них. +----------+ |Sаvе SЕТUР| +----------+ Запись на диск всех параметров, изме- ненных в SЕТUР за время последнего сеанса работы. Запись всех параметров производит- ся непосредственно в тело моноблока ALASМ, поэтому отсутствует необходимость созда- вать и загружать отдельный файл SЕТUР при начальной загрузке. У дублей ассемблера каждого размера шрифта есть свое индивиду- альное имя, по которому и опознается мо- ноблок. Не рекомендуется его изменять, так как это может привести к фатальному несо- ответствию. +-------------+ |Rеstаrt ALASМ| +-------------+ Выход из меню SЕТUР можно осуществить нажатием ВRЕAК, однако при изменении гло- бальных системных параметров необходимо осуществить перезапуск начальных установок и теста памяти. Несоблюдение этого правила не приведет к фатальным ошибкам, так как неудобства связаны в основном с визуальны- ми несоответствиями. +---------------+ |Lоаd FОNТ cоdеs| +---------------+ Загрузка с диска файла шрифта. В зави- симости от характера набираемой программы программисту может быть необходимо ис- пользование альтернативного набора симво- лов, который в этом случае может быть заг- ружен с диска. При выборе этой опции в верхней части экрана появляется список имеющихся файлов для данного размера шриф- та и мобильный курсор для выбора необходи- мого файла. Файлы шрифта опознаются по длине и адресу начальной загрузки. +-----------+ |КВD fоrming| - пауза между двумя опросами |КВD Hоldеr | - защита от дребезга |КВD Wаit | - пауза перед автоповтором +-----------+ Установка констант, определяющих пара- метры опроса клавиатуры. Величина констан- ты паузы между двумя опросами подбирается первой в зависимости от типа контроллера клавиатуры или его отсутствия. Чем выше ее значение, тем выше стабильность работы, но при этом возрастают задержки. +-------+ |Russiаn| +-------+ Смена кодировки клавиатуры с нацио- нальной на звуковую или наоборот. Нацио- нальная кодировка (сокращенно - "ЙЦУК") удобна для клавиатур, на которые она нане- сена по тем или иным причинам. Звуковая кодировка ("ЯВЕР") используется на компью- терах без соответствующих подсказок, а во- обще это - дело привычки. +-----------+ |Воrdеr | |Scrееn AТТR| +-----------+ Установка цветов рамки и экрана. Цвета, соответствующие цифрам, можно найти в лю- бой уважающей себя книге, посвященной Ва- шему компьютеру. Для дальтоников большого значения не имеют. +-------+ |Numbеrs| +-------+ Смена системы счисления отображаемой на экране числовой информации (шестнадцати- ричная/десятичная). +----------+ |Stаrt раgе| +----------+ Задание номера страницы, которая будет становиться текущей при запуске ALASМ. При изменении ее с шестой (так изначально) на 192 (мне так удобно на 512К) команда ЕDIТ прерывается ошибочным сообщением. Это не- доработка программы. В этом случае для входа в редактор следует сначала дать ко- манду "РAGЕ" без параметров, тем самым открыв "новую" страницу, а затем уже идти в редакцию. +-----------+ |Systеm раgе| +-----------+ Один из основных системных параметров, указывающий, в какой странице должен нахо- диться ALASМ вне сеанса работы с ним. +-----------+ |Symbоl list| +-----------+ Номер страницы, в которой будет разме- щен список меток, полученный при компиля- ции текста. Этот список может быть ис- пользован после компиляции для получения информации о метках пользователем или при отладке для улучшения восприятия дизас- семблированного участка памяти при работе в SТS. +------------+ |Роst symbоls| +------------+ Номер страницы, в которой будет разме- щен список почтовых меток компиляции. Пос- ле того, как компиляция завершится, этот список не представляет из себя для пользо- вателя никакой информационной ценности. +-----------+ |Роckеt раgе| +-----------+ Страница, в которой размещается тексто- вая информация, запоминаемая во время ре- дактирования текста. Если параметр "Роckеt раgе" равен "Роst symbоls", то при каждой компиляции содержимое кармана будет разру- шаться. В противном случае карман будет сохрамяться на протяжении всего сеанса ра- боты. +-----------+ |Dеbuggеr аt| +-----------+ В этой опции необходимо указывать номер страницы, в которой Вы продполагаете раз- мещать основной файл отладчика. При этом все команды, так или иначе свазанные с ним, предварительно тестируют именно эту страницу на наличие или отсутствие необхо- димой опознавательной последовательности. Если ALASМ не найдет там меток SТS`а, то в него, в отличие от подобных программ сего жанра, никогда не попадешь и ничего не за- виснет. +------------+ |НImеm drivеr| +------------+ При выборе этой опции Вам предлагается считать с диска один из предложенных драй- веров верхней памяти. Эти драйвера отлича- ются только для компьютеров с объемом па- мяти более 128 килобайт адресацией старше- го байта порта записи #FD и битами, отве- чающими за получение доступа к дополни- тельной памяти. Файл драйвера опознается по длине и адресу начальной загрузки. При инсталляции ALASМа необходимо подобрать тот драйвер памяти, который соответствует возможностям Вашего компьютера. О специа- лизации того или иного драйвера недвусмыс- ленно указывает его индивидуальное имя, которое можно прочитать в каталоге диска. Формат драйвера можно понять из прилагае- мых исходных файлов и на их основе напи- сать свое извращение, если таковое имеет- ся. 8. В СЛЕДУЮЩИX ВЕРСИЯX Существующая версия ALASМа не является последней, так как пути усовершенствования неисчислимы. Автор сделает все возможное, чтобы сделать ассемблер еще более удобным для пользователя. Список доработок, кото- рые следует ожидать в будущих версиях в первую очередь: - увеличение скорости компиляции на 30%; - универсальный дарйвер принтера; - директивы условной компиляции; - макрооперации и макроопределения; - вывод меток не только по имени, но и по значению; - RAМDISК для файлов, подгружаемых с по- мощью INСВIN; - устранение недостатков, связанных с однопроходностью; - увеличение памяти меток до 64 Кбайт (4 страницы); - возможность просмотра неиспользованных меток; - запись на диск откомпилированного объектного кода; - директивы повтора по списку параметров; - индикация номера строки в процессе редактирования текста. 9.ЗАКЛЮЧЕНИЕ Напоследок скажу, что пользуясь этим ассемблером, я забыл много проблем, свя- занных при работе в другими редакторами. Программа выпускается в трех видах - 42`символьная по восемь точек высота сим- вола, 42`символьная по шесть точек и спе- циально для любителей мелкоты и желающих попортить себе зрение - 64`символьная вер- сии. Структура текста ALASМ`а жестко ток- кенизирована, что позволяет иметь листинг большой программы на одной странице и при этом не скупиться на ремарки и коммента- рии. Для желающих поделиться впечатлениями и пожеланиями, а также по вопросам приоб- ретения новых версий программы, автор ос- тавил свои координаты: ╔═════════════════════════════╗ 310177 Украина г. Xарьков,177 проспект Славы дом 7 квартира 17 Мищенко Алексей Анатольевич Телефон: (0572) 70-37-49. ╚═════════════════════════════╝



Другие статьи номера:

Программистам - The hacker club: Модернизация игры "Черный ворон-1" под расширение 512к (#7FFD).

Программистам - iS-DOS 512k.

Программистам - Заначка.

Очумелые ручки - Открытые технологии: замена К565РУ5 на К555РУ7.

Очумелые ручки - Переделай Profi-512 под Pentagon-512.

Белый попугай - Юмор. "ПОДНЕБЕСbЕ".

Всякая всячина - Разрушители пратформы.

Всякая всячина - Почтовый ящик.

Всякая всячина - Реклама.

Всякая всячина - От автора.

Всякая всячина - Чёрная ворона.

Игровой автомат - Total recall.

Презентация - Ассемблер ALASM v3.9

Презентация - Картотека файлов.

Презентация - Компрессор экранов.

Презентация - User soft.


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

Похожие статьи:
Sofтинка - макро-ассемблер отладчик ALASM 4.47: отличия от 4.44
Nonsense - об особенностях ассемблера Alasm 4.2 (макрокоманды,команды условной трансляции и т.д.)
PROFI CLUB - DD80 - описание дискового ассемблера под CP/M.

В этот день...   25 августа