Optron #20
25 октября 1998

Премьера рубрики - Новая рубрика "Ликбез" - Ассемблер: взгляд издалека.

<b>Премьера рубрики</b> - Новая рубрика




Хакер Рашпиль

  К юбилею "Оптрона" мы приурочили премье-
ру  новой  рубрики - "ликбез". В ней будут
публиковаться   различные   "общеобразова-
тельные" материалы по софту, харду и т.п.
  Конечно,  такая рубрика - вовсе не изоб-
ретение нашей редакции. Подобное публикуют
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" (Дневник Лаборанта Ж. Скальпив - продолжение).

Мнение - И в железе есть душа.

Обратная связь - Что пишут и говорят о нас.

Премьера рубрики - Новая рубрика "Ликбез" - Ассемблер: взгляд издалека.

Реклама - Реклама и объявления...

Четыре килобайта - Газете год...


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

Похожие статьи:
Реклама - приобретайте Vicomm модемы!
Начинающим - описание дискового коммандера F-commander V 4.01
Лоцман - Приключения Крузи (по мотивам игры Бегство на Хархан).
Описание новинок - 'описание' на "Sherwood'а".
Последнее слово в номер - "еще раз призываю писать в генз статьи".

В этот день...   21 ноября