Optron
#20
25 октября 1998 |
|
Премьера рубрики - Новая рубрика "Ликбез" - Ассемблер: взгляд издалека.
Хакер Рашпиль К юбилею "Оптрона" мы приурочили премье- ру новой рубрики - "ликбез". В ней будут публиковаться различные "общеобразова- тельные" материалы по софту, харду и т.п. Конечно, такая рубрика - вовсе не изоб- ретение нашей редакции. Подобное публикуют 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". До встречи!!! ──══════════──
Другие статьи номера:
ZX-Обоз - Обзор электронной прессы: Deja VU 5. |
Лит. страничка - Гриф "Y" (Дневник Лаборанта Ж. Скальпив - продолжение). |
Мнение - И в железе есть душа. |
Обратная связь - Что пишут и говорят о нас. |
Премьера рубрики - Новая рубрика "Ликбез" - Ассемблер: взгляд издалека. |
Реклама - Реклама и объявления... |
Четыре килобайта - Газете год... |
Похожие статьи:
В этот день... 21 ноября