Программирование в машинных кодах и на языке ассемблера 1993 г.

Заключение - окончание первой части книги и примечания к ней.


6. Заключение.

 

На этом мы заканчиваем «Первые шаги в машинном коде».

Достаточно ли того, что Вы изучили, для того, чтобы начать программировать в машинных кодах или на языке Ассемблера?

По-видимому, нет. Хотя все необходимые сведения мы дали. Мы старались сделать изложение доступным и понятным даже для тех, кто только-только начал свое общение с компьютером, но Вам необходимы еще многие часы практики. Мы предлагаем Вам следующий подход в дальнейшей работе.

Во второй части этой книги «Практикум по программированию в машинных кодах» Вы найдете массу полезных примеров, разбор которых поможет Вам набраться опыта, а практические рекомендации помогут сэкономить дни самостоятельной работы.

Приобретите какую-либо программу Дизассемблер (конечно с инструкцией) и с ее помощью попробуйте просмотреть машинный код фирменных игровых программ. Анализируйте увиденное. Вносите изменения и смотрите, что из этого получается. Это спорт, и очень захватывающий. Вы сами не заметите, как начнет приходить опыт.

Приобретите программу Ассемблер с инструкцией. Вы увидите, что Ассемблер имеет немало возможностей для упрощения программирования в кодах. Он имеет несколько своих команд, называемых директивами Ассемблера и они помогут Вам в составлении хорошо читаемых, удобных программ.

После этого Вы сможете начать писать свои процедуры и программы в машинных кодах, но не старайтесь, как можно больше сделать сами. Наоборот, максимум процедур старайтесь взять в готовом виде из других программ, конечно внося необходимые изменения. Ведь изобретая новый автомобиль, конструктор не изобретает к нему новые болты и гайки.

На всех этапах работы Вам поможет также часть третья нашей книги – «Справочник по программированию в машинных кодах Z-80».



[1] Процессор Z-80 разрабатывался на основе своего предшественника, процессора 8080. Большинство команд у них совпадают, но для Z-80 было добавлено несколько десятков новых команд. Они начинаются с префикса: 203, 221, 237 или 253 (в шестнадцатеричном коде - CB, DD, ED или FD). Поэтому появились операции, код которых состоит из двух байтов, за которыми следуют операнды.

 

[2] Наш житейский опыт учит, что сначала идут старшие разряды, а потом младшие. Например, в числе 567 сначала идут сотни (5), потом - десятки (6) и только затем единицы (7). В компьютере - наоборот. Это связано с тем, что первые компьютеры имели такую маленькую память, что о старших разрядах речь тогда и не шла. Они явились более поздним дополнением, и им пришлось занять не первое место.

 

[3] Стек можно организовать даже в экранной области, и некоторые фирмы этим пользуются. Программа организована так, что картинка, которая загружается перед началом программы, содержит стек. После загрузки основного блока (блоков) машинного кода со стека снимаются данные, которые обеспечивают нормальный старт программы. Если Вы удалили, заменили или изменили фирменную заставку, то программа работать не будет. Чтобы Вы визуально не видели на экране, что в картинке есть какие-то данные в виде точек и полос, их можно спрятать за черным цветом PAPER экрана.

Такая защита есть, например, в программе "NETHEREARTH".

Другой хитроумный прием, используемый профессионалами, состоит во  временной организации стека в той области памяти, куда Вы хотите быстро перебросить большое количество данных.

Тогда вместо того, чтобы перетаскивать блоки памяти из одного места в другое, их просто отправляют на стек. Такая операция происходит чрезвычайно быстро и переброска картинки из памяти на экран, например, происходит  в 2 раза быстрее, чем при использовании других, самых быстрых команд процессора (так, например, в программе "STARION" этим приемом обеспечена необычайная гладкость и плавность мультипликации.)

 

 

[4] Вы, очевидно, обратили внимание на то, что после числа, записанного в шестнадцатеричной системе, ставят букву "H".

Иногда для этой цели используют символ "хэш" ("#"). Его еще называют "решеткой". Тогда запись выглядит так: #9C.

Для обозначения десятичного числа ставят символ "D", либо ничего не ставят вообще: 156 = 156D = 9CH = #9C.

 

[5] Справка: Известные дисассемблирующие программы тоже бывают релоцируемыми и нерелоцируемыми. Так, например, для дизассемблера MONS 3 Вы сами можете задать адрес, в который он будет загружаться и работать. Это значит, что либо он внутри себя не содержит абсолютных переходов, либо они есть, но настраиваются после старта программы с помощью специальной инициализирующей процедуры.

Дисассемблеры MONITOR 16 и MONITOR 48 - нерелоцируемы. По этому желательно иметь и тот и другой. Для работы с блоками, загружаемыми в верхние области памяти, применяют MONITOR 16, который загружается в нижние области, и наоборот.

Есть, конечно, блоки, для которых неприменим ни тот, ни другой. В этом случае их надо либо резать на куски выгрузкой по частям SAVE «имя» CODE m,n, либо применять дизассемблер - MONS3, который, конечно, тоже имеет определенные пределы своих возможностей.

 

[6] Примечание: (STKEND) здесь стоит в скобках потому, что это косвенная адресация. Если адрес STKEND равен 23653, то адрес (STKEND) - это то, что содержится в STKEND.

[7] Читатели, желающие более подробно ознакомиться с ошибками ПЗУ «Спектрума» могут это сделать в 9-12-м выпусках нашего периодического издания «ZX-РЕВЮ» за 1992 год, где приведен весьма детальный обзор, выполненный нами по материалам иностранной печати.

 




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



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

Похожие статьи:
Упаковщики - распковка ZIP архивов.
Phantasmogore - Samael (русский).
Шутка - Снегопад был таким, что за два часа окно снаружи сплошь залепило снегом.
Проходилка - Волшебник страны Оз
От редакции - Спектрумисты! С Hовым годом вас!

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