Nicron #01
30 сентября 1996

Программирование - курс изучения ассемблера от Wlodek Black.

╔═══╦═══════════╦══════════════════════════════╦═══════════════╗
║ 5.║           ║ - Курс изучения ассемблера - ║               ║
╚═══╩═══════════╩══════════════════════════════╩═══════════════╝

(C) WLODEK BLACK

Здравствуйте, уважаемые пользователи!
В начале я позволю себе выразить искреннюю  признательность  ре-
дакции газеты " NICRON "  за предложение о сотрудничестве.
 Речь зашла о неких заочных курсах по языку программирования
"АССЕМБЛЕР". Собственно, я сам предложил это как один из вариан-
тов моего участия в столь крутом начинании.
 Ни для кого не секрет, что среди нас, уважаемые коллеги, немало
знаменитых кодеров (это значит программистов на ассемблере). Но
сколько еще не раскрывшихся талантов!
  Ничуть не умаляя (а наоборот, восхваляя...) роль "ИНФОРКОМ"-а
в великом деле ассемблеризации (читайте их  книги!),  предлагаю
вам нечто, что можно назвать конспектом лекций по ассемблеру. У
этого конспекта есть пара преимуществ перед книгами "ИНФОРКОМ"а:
его можно пересылать по сети и за него не надо платить. Но есть
и недостаток: ориентирован он на компьютер "MSX", который, хоть
и построен на том же процессоре, но отличается, как самолет  от
паровоза. Я просто не успел внести коррективы! Но  я  их  внесу
(так внесу, что... !...), тем более, что  и  в  Политехническом
мне теперь доводиться читать курс ассемблера не только для MSX,
но и для Спектрума.






       000h.Введение.ЧТО МОЖЕТ ДАТЬ ОВЛАДЕНИЕ АССЕМБЛЕРОМ?

   Здравствуйте, уважаемый пользователь! На данном этапе предпо-
лагается, что Вы уже хорошо знакомы с каким-либо языком програм-
мирования высокого уровня, Бейсиком, например. В то же время Вы
наверняка видели множество компьютерных игр  с великолепной гра-
фикой и понимаете, что на Бейсике такого не напишешь.На Бейсике,
как  и  на  любом другом языке высокого уровня, можно создавать
лишь то, что позволяет язык. При программировании на ассемблере
и в кодах Вам будет доступно все, что позволяет машина.  Компью-
терные игры дают возможность "почувствовать разницу" даже непро-
фессионалу. Написание программы на языке самого  процессора  мо-
жет помочь, даже когда язык высокого уровня предоставляет  необ-
ходимые средства, но программа работает медленно или  оказывает-
ся слишком большой. Программист, владеющий машинным языком  про-
цессора, гораздо легче справляется с проблемами сбоев, программ-
ной несовместимости, необходимости адаптации программ  к  своим
условиям и т.д.   Определенную значимость имеют и вопросы "взло-
ма" программ, "обессмерчивания" игр, борьбы со злым умыслом (ви-
русы). Наконец, знание машины вдоль и поперек дает ни с чем  не
сравнимое чувство уверенности в себе, ощущение своей полезности
обществу. Все самые мощные, самые нужные, самые сенсационные,да
и самые дорогие программные продукты пишутся именно на ассембле-
ре, по крайней мере, для 8-разрядных машин.
   Процессор Z80, помимо MSX-"Ямахи" и  "Daewoo",  используется
еще и в таком супер-популярном компьютере, как  "Спектрум";  на
его основе работают телефонные автоопределители номера,мини-АТС,
промышленные роботы, даже детские игрушки. Z80 - единственный 8-
разрядный процессор, продолжающий развиваться в настоящее время:
уже созданы быстродействующие и сверхэкономичные модификации, и
прогресс не собирается останавливаться. Z80 - единственный 8-ра-
зрядный процессор, ежегодный объем производства которого  увели-
чивается.  В  России  он  выпускается  под  названием К1810ВМ80
и КР1858ВМ1 - обычный и высокопроизводительный варианты соответ-
ственно.

001h. ЛАДОНЬ С ВОСЕМЬЮ ПАЛЬЦАМИ, СТИЛЬ МОДЕРН НА ПЕЧАТНОЙ ПЛАТЕ,
		1+1=10 И ДРУГИЕ ВЕСЕЛЫЕ ВЕЩИ.

   Процессор Z80 - восьмиразрядный. Основная единица информации,
с которой он работает, - байт. Байт - это 8 бит. Двоичная систе-
ма счисления очень проста. Каждый последующий разряд числа стар-
ше предыдущего в 2 раза.


128     64      32      16       8       4       2       1
 *       *       *       *       *       *       *       *

бит 7  бит 6  бит 5   бит 4    бит 3   бит 2   бит 1   бит 0

Например: 11001011 двоичное равно:

  1       1       0       0       1       0       1       1

 128  +  64                    +  8            +  2    +  1

							=203.

Число из одних единиц в количестве 8-ми "колов" равно 255.Таким
образом, диапазон значений байта простирается от 0 до 255. С чи-
слом 255 Вы могли встречаться в играх, "потоптанных"  взломщика-
ми - например, до 255-и может быть доведено  количество  жизней,
патронов и т.п.
  Двоичная запись числа в большинстве случаев не совсем удобна -
она громоздка, да и не слишком наглядна; цепочки нулей и единиц
сливаются в мельтешащий узор, в котором человеку легко запутать-
ся и наделать ошибок. Поэтому человек придумал для  себя  более
подходящую запись двоичных чисел - шестнадцатиричную форму. При
представлении байта в шестнадцатиричном виде он условно разбива-
ется на два полубайта по 4 бита в каждом (в зарубежной литерату-
ре можно встретить неблагозвучное название "ниббл";  в  русском
же языке пользуются термином "тетрада" или просто говорят "полу-
байт"), каждый из которых обозначается одним символом -  цифрой
от 0 до 9 , а далее буквой A,B,C,D,E или F.
   Двухбайтовое число, представляющее собой единое целое,  назы-
вают словом. Слово содержит 16 двоичных разрядов. В шестнадцати-
ричном виде оно записывается четырьмя символами.
   В MSX-Бейсике Вы уже  сталкивались с шестнадцатиричной  запи-
сью чисел - например, &hF37D.  В ассемблере эта запись выглядит
немного иначе: число должно обязательно начинаться с цифры, поэ-
тому к hex-числам, начинающимся с буквы, приписывают в начале 0,
а букву "h" (hexadecimal - шестнадцатиричное)  ставят в конце -
0F37DH.
  Существуют производные единицы - килобайт, мегабайт, гигабайт.
Килобайт - это 1024 байта. Мегабайт - 1024 килобайта.  И так да-
лее. Множитель 1024 был выбран вместо 1000 по двум причинам: во-
первых,  1024  в  двоичном  представлении   -   круглое   число
(10000000000; в hex - 0400h); во-вторых, 1024 близко  к  привыч-
ной для человека тысяче.Ходит шутка: у начинающего программиста
в килобайте 1000 байт, а у опытного - в километре 1024 метра.
   Нетрудно подсчитать значение двухбайтового слова:максимально
оно равно 65535 (0FFFFH).
   Теперь представим такую ситуацию. От нулевого байта мы вычли
единицу. Сколько же получится? Вообразим себе магнитофонный сче-
тчик метража ленты. Что будет, если совершить один оборот  счет-
чика назад? Получится 999. В то же время 999 - это 0 - 1. Стало
быть, 999=-1. Если бы счетчик имел 8 разрядов и при  этом  лишь
по одной единице на оборот вала, то один  оборот назад  из поло-
жения 00000000 дал бы 11111111, то есть 11111111=-1. Вот  мы  и
узнали, как представляются  в двоичном виде отрицательные числа:
старший, 7-й,бит может быть использован как признак знака числа
- если он равен 1, то число - отрицательное.  Если мы продолжим
крутить наш счетчик назад, то, сделав 128  оборотов,  достигнем
значения 10000000 (двоичное). Это - предел  для  отрицательного
числа на основе одного байта.  В  десятичном виде он равен -128.
В сторону положительных значений предел равен 01111111 двоичное,
или 127 десятичное. Для слова диапазон значений - от -32768  до
+32767.
   Если на нашем счетчике было 00000001, то, прибавив к нему  1
(совершив 1 оборот вперед), мы получим 00000010.  Вот и выходит,
что 1+1=10.
   Итак, обнаружив в памяти машины байт 0FFH, мы можем предполо-
жить, что это либо 255, либо -1.  Так  как  же отличить одно от
другого? Ответ  может  показаться  неожиданным:  никак.  Истина
всплывет, лишь когда этот байт  будет  использован  процессором
при выполнении какой-либо команды.Для каждой команды существует
свое жесткое правило, как расценивать байт данных - либо  как 8-
разрядное целое без знака (0...255), либо  как  7-разрядное  со
знаком (-128...127).
  Для слова знаковым является старший, 15-й, бит.
  Байты и слова нам понадобятся на каждом шагу. Байт - основная
единица для арифметических, логических операций процессора;  па-
мять компьютера также имеет байтовую организацию. Слово -  глав-
ная единица для адресации  памяти.  Z80  может  непосредственно
адресовать 64К памяти. Это 65536 ячеек, в каждой из которых хра-
нится свой байт. 16-разрядная шина адреса  и  8-разрядная  шина
данных - краеугольные камни архитектуры процессора. Архитектура
же компьютера MSX-2 сложнее - его память превышает 64К,  и, так
как процессор одновременно способен обращаться только к 64К,ОЗУ
компьютера приходится разделять на страницы, переключаемые опре-
деленным образом.


[ Конец 1-го текста ].
                                             (c)Wlodek Black.
                                          Тел.(095)462-8902
                                               Владимир.





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

Похожие статьи:
Звук - Ламповые усилители. Стерео лампочник 2х5 Вт из старых телевизоров. Часть 2.
Музыкальная страничка - самые лучшие песни отечественных групп: Человек и Кошка/Ноль "Песня о любви к Родине".
Проходилка - Сегодня я закончу рассматривать игру DIZZY-7.

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