Премьера рубрики - Новая рубрика "Ликбез" - Ассемблер: взгляд издалека.
Хакер Рашпиль
К юбилею "Оптрона" мы приурочили премье-
ру новой рубрики - "ликбез". В ней будут
публиковаться различные "общеобразова-
тельные" материалы по софту, харду и т.п.
Конечно, такая рубрика - вовсе не изоб-
ретение нашей редакции. Подобное публикуют
Deja Vu, Proton, Aspect и многие другие
электронные издания.
А "Плутониум" с первого же своего выпус-
ка содержит рубрику с таким же, как и у
нас, названием (правда, в "Плутониуме" она
не столько "просветительская", сколько
"публицистическая", а чисто "образова-
тельные" материалы помещаются вне этой
рубрики).
Так что "Оптрон" всего лишь следует об-
щему примеру.
Конечно, нам могут сказать: "Вы что же,
настолько обленились, что собираетесь за-
полнять объём газеты переписанными спра-
вочными материалами? А заодно лишить юзера
радости самостоятельного поиска, отучить
его пользоваться справочниками и учебника-
ми?"
Но мы вовсе не собираемся так поступать!
"Ранее известная информация" будет поме-
щаться в "Оптроне" только в тех случаях,
когда она:
- по тем или иным причинам недоступна
читателям газеты;
- была раскидана по разным источникам и
приведена автором в определенную систему;
- рассматривается автором с его
собственной, особой точки зрения.
Словом, девизом нашей новой рубрики бу-
дет: особый взгляд на известное.
Открывает рубрику серия статей об Ас-
семблере. Инфарх, автор этой серии, знаком
читателям "Оптрона" в качестве ведущего
"Литстранички". Но на этот раз он выступа-
ет в новой ипостаси.
"Инфарх отлично владеет словом, прекрас-
но знает нужды и заботы наших юзеров, -
рассудила редакция. - Так кому же, как не
ему, быть Гуру?" Поэтому, начиная с этого
выпуска, Инфарх дополнительно к заботам о
"Литстраничке" взваливает на свои плечи
ещё и "Ликбез". Так пожелаем же ему удачи
в этом начинании!
──══════════──
Ассемблер: взгляд издалека
Инфарх, 1998
──══ Вступление ══──
Приветствую вас, уважаемые читатели
Оптрона! Сегодня по вашим многочисленным
заявкам мы начинаем цикл статей о том, что
такое ассемблер и "с чем его едят". А
"едят" его, сразу скажу, сначала с голов-
ной болью, а потом с удовольствием.
В самом деле, не зря ведь ассемблер яв-
ляется главным языком программирования на
Speccy. Ни один из других языков (Бейсик,
Паскаль, Си...) не дает и десятой доли
возможностей ассемблера. Программа на ас-
семблере работает гораздо быстрее, занима-
ет в памяти меньше места и предоставляет
программисту гораздо больше простора для
"издевательства" над машиной.
Для начала хочу предупредить, что сей
рассказ рассчитан на тех, у кого слова
"система счисления" не вызывают непреодо-
лимого желания попинать ногами труп учите-
ля математики. И ещё я предполагаю, что вы
уже знакомы с "Бейсиком". Ведь трудно на-
чать с самого начала: всегда получается,
что было что-то и до этого. Итак, присту-
пим к знакомству.
──══ Что такое машинный код ══──
Процессор Z80 принимает сигналы с шины
данных (ШД) и устроен таким образом, что
разные комбинации этих сигналов предписы-
вают этому процессору выполнить ту или
иную функцию. Состояние одной линии ШД
принято описывать в двоичной форме: "1" -
есть сигнал, "0" - нет сигнала. Типичная
команда машинного языка может выглядеть
так:
001111000
Думаю, это несколько отличается от зна-
комого по "Бейсику"
LET A=A+1
Тем не менее, суть данной команды именно
такова. Вот это и есть машинный код. Все
необходимые комбинации единиц и нулей, при
помощи которых осуществляется управление
процессором, предварительно размещаются в
памяти компьютера.
Надо сказать, что у программ в кодах
есть и свои недостатки:
1) Их сложно читать и отлаживать;
2) Они оказываются длиннее в командах;
3) Трудно выполнять арифметические
действия.
Очевидно, некоторые читатели уже тянут
руку к сорок первой кнопке с мыслью о том,
что этот язык - только для особо опасных
маньяков, способных ввести в компьютер
несколько десятков тысяч комбинаций единиц
и нулей, при условии знания наизусть всех
их назначений.
И здесь вы совершенно правы. Редкий фа-
натик может творить в таких условиях. Бо-
лее нормальные люди используют АССЕМБЛЕР.
──══ Суть ассемблера ══──
Язык ассемблера и был придуман как раз
для того, чтобы не стараться понять смысл
программы вроде
00100001
00000000
01000000
и т.д. К счастью, для каждой подобной ком-
бинации можно подобрать название, которое
может быть прочитано и понято. Такие наз-
вания называют мнемониками команд. Напри-
мер, на данном этапе обучения конструкцию
типа
INC A
вы можете и не понять, но по крайней мере
прочитаете. А если сказать, что INC -
стандартное сокращение от слова INCREMENT
(последовательное увеличение/приращение;
модификация суммированием), а "А" - пере-
менная, то у вас будет уже некоторое
представление о происходящем. Во всяком
случае, "INC A" наверняка более понятно,
чем "00111100".
Между языком ассемблера и машинным кодом
есть только одно различие: ассемблер на
один уровень выше машинного языка. Челове-
ку читать его легче, чем машинный код, но,
с другой стороны, ЭВМ не может читать язык
ассемблера.
Он не является адаптацией машинного язы-
ка, подобно "Бейсику", где для каждой опе-
рации необходимо выполнение большого коли-
чества команд процессора. В ассемлере каж-
дой команде соответствует идентичная по
назначению команда машинного языка.
Для того, чтобы написать программу на
ассемблере и привести ее в вид, понятный
вашему Speccy, (т.е. машинный код), су-
ществуют специальные программы, о которых
далее и пойдет речь.
──══ Редакторы и мониторы ══──
Редактором ассемблера (далее - просто
"Ассемблер") называется программа, при по-
мощи которой вы можете ввести в компьютер
текст программы на ассемблере и скомпили-
ровать эту программу в машинный код, "по-
нятный" процессору. Именно так команда
"INC A" превратится в "00111100".
На сегодня редакторов ассемблера сущест-
вует множество, как для 48К-машин, так и
для 128К. Вам самим предстоит выбрать из
них тот, который подходит больше.
Теперь о мониторах. Это слово означает
некую программу, назначение которой - по-
мочь вам пронаблюдать за тем, что происхо-
дит в памяти компьютера во время выполне-
ния вашей (и не только вашей) программы. О
них мы поговорим подробнее несколько поз-
же.
А сейчас я попробую помочь вам выбрать
себе Ассемблер, которым вы и будете поль-
зоваться в дальнейшем. Рекомендую отнес-
тись к этой теме внимательно, так как каж-
дый Ассемлер хранит тексты программ в сво-
ём уникальном формате. Перенос текста ва-
шей программы (исходника) из одного редак-
тора в другой бывает, порой, сопряжён с
большими трудностями, и успех не всегда
гарантирован. Меняя Ассемблер, вы рискуете
лишиться всех ваших предыдущих работ.
──══ Что мы имеем? ══──
Для начала припомните объём памяти ваше-
го Speccy. Правда, сейчас осталось уже
очень мало 48-х машин, но все же... Для
таковых - Ассемблеров гораздо меньше. В
этом случае наблюдается редкое единодушие.
Почти все рекомендуют использобать пакет
"DEVPAC", куда входит Ассемблер "Gens" и
мониторная программа "Mons". Такое сочета-
ние (Ассемблер и монитор в "одном флако-
не") предоставляет максимум удобств.
"Mons", ко всему прочему, может дизассемб-
лировать программу в машинных кодах, прев-
ратив ее в исходный текст формата Ассемб-
лера "Gens". Я сам использовал "DEVPAC" -
и ни одного нарекания на его работу не
имел. Однако дела обстояли таким образом
лишь до того, как у меня появился
Speccy-128.
Здесь - совсем иначе. Ассемблеров очень
много, и выбор свой я сделал не сразу. Пе-
речислю некоторые, сказав несколько слов о
каждом.
TASM
Этот редактор от версии к версии совер-
шенствовался, поэтому формат текста версии
2 несовместим с последующими. Начиная с
версии 3, реализована функция "Import 2.0"
для преобразования формата. Версия 4.0
имеет в своем составе монитор "STS". Ас-
семблер неплох, но несколько ограничен в
возможностях, а шрифт 64 символа в строке
не всегда удобен для чтения. О нем, равно
как и о других программах, которые я упо-
мяну, настоятельно рекомендую прочитать
полное описание.
MASM
Очень похож на "TASM", как внешним
оформлением, так и возможностями. Имеет в
составе "STS" и функцию импорта из TASM 3.
Радует то, что выбор файла для работы осу-
ществляется не вводом его имени, а курсо-
ром.
Оба вышеуказанных Ассемблера (да и не
только они), имеют в своем составе такие
стандартные функции, как поиск в тексте
фрагмента с возможностью замены, включение
в ассемблирование текста ассемблера и ко-
довых блоков с диска, ну и, конечно, ввод
текста программы с последующим её ассемб-
лированием.
ALASM
А вот это уже штука помощнее. В этом ас-
семблере предусмотрена возможность наст-
ройки на способ переключения страниц памя-
ти вашей машины с помощью подгружаемых
драйверов, написанных, опять-таки, в фор-
мате "ALASM". Это даёт возможность рабо-
тать с несколькими разными текстами однов-
ременно. Также есть возможность изменить
набор символов (фонт). Встроенный "STS",
очевидно, уже стал стандартом.
Но не обошлось и без недостатков. К та-
ковым можно отнести невозможность компиля-
ции текстов из нескольких страниц одновре-
менно, сложности в синтаксисе и индикации
ошибок. А самое главное - полученный после
компиляции код нельзя записать на диск
средствами самого Ассемблера. Для этого
приходится использовать Бейсик или "STS".
ZX-ASM
Здесь реализован уже другой подход. Если
в предыдущих Ассемблерах управление проис-
ходило с помощью "горячих клавиш", то в
"ZX-ASM" имеется обширная система меню. Но
в то же время это составляет определённое
неудобство, поскольку на выбор необходимой
функции уходит иногда слишком много (во
всяком случае, для меня) времени.
XAS
В целом оставляет очень приятные впечат-
ления. Листание текста происходит довольно
быстро, ускорены дисковые операции. Можно
работать с текстами в двух страницах. При-
чём, подгрузка текста при ассемблировании
происходит во вторую страницу, тем самым
появляется возможность обработать за раз
до 30 Кb текста. Имеется и перекодировщик
(отдельным файлом) для конвертации текстов
других форматов в "XAS". Еще одна страница
выделена для макросов, которые можно в лю-
бой момент отредактировать. Есть возмож-
ность сокращённого набора и автотабуляция.
Ложка дёгтя: невозможность замены при
поиске в тексте, нет приоритетов в арифме-
тике. Ещё нет функции "Merge", но это оку-
пается возможностью переноса текста из
страницы в страницу.
STORM
Листание текста тут происходит... ну
очень быстро! Это относится и к ассембли-
рованию. Сокращённый набор и автотабуля-
ция, правильный приоритет в арифметических
операциях, а также очень быстрый поиск в
тексте.
К недостаткам можно отнести непривычное
управление и невозможность работы одновре-
менно с несколькими текстами.
STS
Ну, вот мы и до него добрались. Как уже
говорилось, это мониторная программа. И
скажу ещё, что на данный момент замены ей
не найдешь, ибо "STS", в буквальном смысле
слова, незаменим для 128-х машин. С его
помощью вы можете контролировать состояние
всех ресурсов машины в процессе пошагового
выполнения (трассировки) программы в ма-
шинных кодах. При этом на экране вы наблю-
даете полноценный дизассеблер, а не двоич-
ные числа.
От версии к версии "STS" совершенство-
вался, обрастая новыми функциями. Есть
версия 3.2 с возможностью просмотра блока
данных как графики. А версия "STS 4.3+@"
предоставит возможность удобно работать с
MAGIK-файлами.
Короче говоря, берите и пользуйтесь. Не
пожалеете!
──══ В заключение... ══──
Вот и подошел к концу вводный курс. Надо
ещё добавить, что преимущества и недостат-
ки Ассеблеров я описал далеко не все, но
это уже - для самостоятельного изучения...
Осталось вам подобрать себе подходящий
инструмент и дождаться продолжения этой
статьи, в котором мы попробуем разобраться
уже конкретно с языком ассемблера.
Все описанные программные продукты вам
поможет найти наша редакция. При этом до-
бавлю, что без ваших писем и звонков мы не
сможем дать той информации, которая вам
действительно нужна!
Координаты, как редакции, так и мои
собственные, вы сможете найти на страничке
"About".
До встречи!!!
──══════════──
Другие статьи номера:
|
|
|
|
|
|
|
|
Премьера рубрики - Новая рубрика "Ликбез" - Ассемблер: взгляд издалека.
|
|
|
|
|