Как ориентироваться в машинном языке 1969 г.

Начало - Эта книга создана в качестве введения в программирование на машинном языке и языке ассемблера для ЭВМ "Синклер ZX Спектрум".


             Как ориентироваться в машинном языке

                            НАЧАЛО

         Эта    книга   создана   в   качестве   введения   в
программирование на машинном языке и языке ассемблера для ЭВМ
"Синклер ZX Спектрум". 
         Может  оказаться,  что до чтения этой книги у вас не
было  ясного  представления  о  программировании  на машинном
языке.  Вы  можете даже не знать что такое машинный язык. Вам
может  быть  даже неизвестно, что есть разница между машинным
языком  и  языком  ассемблера,  и  чем  они оба отличаются от
программирования на языке "Бейсик". 
         Не  беспокойтесь  и  не  пугайтесь профессионального
жаргона - мы все постепенно объясним. 
         Прежде всего давайте посмотрим как работает ЭВМ: 

             1 PROGRAMMER-------------- 2KEYBOARD
                  |                        |
                  |                        |
             5TV SCREEN---------------- 3OPERATING SISTEM
                                           |
                                           |
                                  4CENTRAL PROCESSING UNIT

  1 - программист, 2 - клавиатура, 3 - операционная система,
     4 - центральный процессор, 5 - телевизионный экран.

         Цель этой диаграммы в том, чтобы показать, что между
программистом  и  мозгом "Спектрум", центральным процессором,
имеется  барьер.  В процессе обычной обработки программист не
может  задать центральному процессору, обычно называемому ЦП,
что тот должен делать. 
         В  ЭВМ "Синклер" выбран ЦП типа Z80A, представляющий
собой более быстродействующий вариант популярного типа Z80. 4
чипа  Z80, 6502, 6809 и 8088 стали широко распространенными в
качестве ЦП для микро-ЭВМ. Z80 - самый популярный из них. 
         Вас  не  удивит,  что Z80 не понимает слова на языке
"Бейсик".  На  самом деле ни один чип не был разработан таким
образом,  чтобы мы могли непосредственно связываться с мозгом
ЭВМ. 
         Если достаточно глубоко вдуматься, можно понять, что
было  бы  очень  трудно, если вообще возможно, в любом случае
задать  для  чипа  ЭВМ  команду,  имеющую смысл для человека.
Снимите крышку вашего "Синклера" (если решитесь) и посмотрите
на  ближайший к громкоговорителю чип - это ЦП Z80A. Очевидно,
этот  чип вашей ЭВМ может реагировать только на электрические
сигналы, передаваемые ему остальными частями схемы. 

                   Что такое машинный язык?

         Чип  Z80  сконструирован таким образом, что он может
принимать сигналы одновременно с восьми подсоединенных к нему
контактов. 
         Разработчики  чипа  Z80  сконструировали  его  таким
образом,  что  разные  комбинации  поступающих на него с этих
восьми  контактов  сигналов будут "командовать" Z80 выполнять
разные  функции.  Помня  о том, что на самом деле есть только
электрические   сигналы,   давайте  примем  систему  условных
обозначений  этих  сигналов  -  например,  ставя "1", если на
одном из контактов есть сигнал, и "0", если сигнала нет. 
         Типичная команда тогда могла бы выглядеть так: 

                       0 0 1 1 1 1 0 0

                  Это существенно отличается от: 

                       "LET A = A + 1"

         Тем  не  менее,  именно  это  и  есть машинный язык.
Название  говорит  само за себя. Это - язык для машин. Каждый
производитель   различных   чипов  сконструировал  для  своей
продукции свой особый язык. 
         Здесь  вы можете задать себе вопрос, если это и есть
машинный  язык,  то в чем проблема? Почему не воспользоваться
проделанной    кем-то    другим    работой,    что   позволит
программировать  на  эВМ  на  языке, который я легко понимаю,
таком как "Бейсик" или "Кобол"? 
         В  этом  есть  определенный  смысл  из-за  следующих
преимуществ машинных языков: 
    - более быстрое выполнение программы; 
    - более эффективное использование памяти; 
    - более короткие программы (в памяти); 
    - независимость от операционной системы. 
         Все     перечисленные     выше     преимущества    -
непосредственное следствие программирования на языке, который
ЦП  воспринимает  без  предварительной  трансляции,  когда вы
программируете  на  "Бейсике", то на самом деле ЭВМ выполняет
программу операционной системы, написанную на машинном языке.
Эта программа выглядит примерно так: 

      NEXT  ВЗЯТЬ СЛЕДУЮЩУЮ КОМАНДУ
            ПЕРЕВЕСТИ ЕЕ В ПОСЛЕДОВАТЕЛЬНОСТЬ 
            КОМАНД МАШИННОГО ЯЗЫКА 
            ВЫПОЛНИТЬ КАЖДУЮ КОМАНДУ 
            ЗАПИСАТЬ РЕЗУЛЬТАТ, ЕСЛИ ЭТО НУЖНО 
            СНОВА ПЕРЕЙТИ НА NEXT 

         Если  вас  интересует,  где ЭВМ берет эту программу,
операционную  систему,  то она хранится в ПЗУ. Иными словами,
она  встроена  в  "Спектрум",  (ПЗУ  -  сокращенное  название
постоянного  запоминающего устройства машинной памяти, ячейки
которой   вы   не  можете  менять,  а  можете  только  читать
(REED/PEEKED). 
         Программа  на языке "Бейсик" может выполняться почти
в 60 раз медленнее, чем программа, написанная непосредственно
на машинном языке. 
         Причина  этого в том, что трансляция отнимает время,
получающиеся  в  результате  команды  машинного  языка  менее
эффективны.   Аналогичным   образом,   обычно  более  быстрым
оказывается  личный  автомобиль, а не общественный транспорт;
вы  можете  сократить  путь  по  известным  вам дорогам, а не
следовать   маршрутом   общественного   транспорта,  которому
приходится  удовлетворять  общественные  потребности.  Тем не
менее нам приходится первыми признать, что у программирования
на машинном языке есть свои недостатки: 
    - программы трудно читать и отлаживать; 
    - их невозможно перенести на другие ЭВМ; 
    - программы оказываются длиннее (в командах); 
    - трудно выполнять арифметические вычисления. 
         Это  означает,  что  вам  следует  очень  продуманно
принимать решение о том, какой метод программирования следует
использовать для каждой конкретной задачи. 
         Очень  большую программу из области финансов следует
писать   на   языке,  разработанным  для  обработки  чисел  и
таком,что   программы  в  случае  необходимости  можно  легко
модифицировать. 
         С  другой  стороны,  нет  ничего  хуже, чем игра для
аркады  (аркада  -  помещение  для игры на ЭВМ),написанная на
языке  "Бейсик". Когда вы сядете играть, она окажется слишком
медленной. 
         Ваш  выбор языка программирования будет определяться
вашими собственными потребностями, объемом памяти вашей ЭВМ ,
требующимся   временем   реакции,  отпущенным  на  разработку
временем и т.д. 
         Итак,     подведя     итог,    машинный    язык    -
последовательность  команд  понятных  для  ЦП  и  поддающихся
представлению в виде чисел. 

                  ЧТО ТАКОЕ ЯЗЫК АССЕМБЛЕРА?

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

                       0 0 1 0 0 0 0 1
                       0 0 0 0 0 0 0 0
                       0 1 0 0 0 0 0 0
                            и т.д.

         К счастью мы можем придумать ряд имен для каждого из
этих   чисел.  Язык  ассемблера  как  раз  и  является  таким
представлением машинного языка. Так что люди могут читать его
в более понятной форме, чем: 0 1 1 1 0 1 1 1 
         Между  языком  ассемблера  и  машинным  языком  есть
только  одно  различие: язык ассемблера на один уровень выше,
чем  машинный  язык.  Его легче читать человеку, чем машинный
язык,   но  с  другой  стороны,  ЭВМ  не  может  читать  язык
ассемблера. Он не является адаптацией машинного языка подобно
"Бейсику".   Для  каждой  команды  языка  ассемблера  имеется
идентичная  (по  функции) команда машинного языка и наоборот,
иными   словами,   между  ними  имеется  взаимно  однозначное
соответствие.  Поэтому  можно  сказать,  что  язык ассемблера
эквивалентен машинному языку. 
         Язык    ассемблера    использует    мнемонику   (или
сокращения)   для  повышения  удобочитаемости.  Например,  на
данной  стадии  обучения команда INC HL может почти ничего не
означать   для  вас,  но,  по  крайней  мере,  вы  можете  ее
прочитать.  Если  бы  вы  сказали,  что  "INC"  - стандартное
сокращение    (или    мнемоническое   обозначение)   INCREASE
(увеличить),  а  "HL"  - "переменная", то просто посмотрев на
эту  команду  вы  можете  получить  представление  о том, что
происходит. 
         Та же самая команда на машинном языке имеет вид: 

                       0 0 1 0 0 0 1 1

         Теперь,очевидно,  вы  можете  также  "прочитать" эту
команду  в  том  смысле, в котором вы можете прочитать число.
Это  не  будет  много для вас означать, если только у вас нет
справочной таблицы или ваш мозг не действует почти как ЭВМ. 
         Язык     ассемблера    может    быть    преобразован
непосредственно  в машинную программу с помощью программы или
вами  самими.  Такая  программа  называется "АССЕМБЛЕР"ом. Вы
можете  рассматривать  ее как программу, выполняющую довольно
утомительную  задачу  трансляции  вашей  написанной  на языке
ассемблера  программы  в  последовательность команд машинного
языка,  понятных "Спектрум" и мы считаем, что "ассемблер" для
"ZX Спектрум" уже имеется. 
         Тем  не  менее,  такие  ассемблеры обычно требуют 6К
памяти  и  имеют  ограниченное  применение  на  ЭВМ с объемом
памяти  16К.Дисплей  "Спектрум"  отнимает  7К памяти, и после
загрузки  ассемблера у вас может остаться всего 4К памяти для
программы  на  языке  ассемблера. (Это означает примерно 1/2К
программы на машинном языке). 
         Альтернативный  способ  работы  -  вместо применения
программы  ассемблера  самому  транслировать  мнемонику языка
ассемблера  в  машинный  язык вручную, применяя приведенные в
этой книге таблицы. 
         Это  трудно, по началу кажется безнадежно, неудобно,
но  это-  прекрасная  практика  и дает вам глубокое понимание
того, как работает ЦП "Спектрум". 
         Мы  на  самом  деле рекомендуем, чтобы вы попытались
написать  таким способом короткую программу на машинном языке
-   т.е.   написать   ее   на   языке  ассемблера  и  вручную
транслировать на машинный язык прежде, чем покупать программу
ассемблера. 

                          ЗАКЛЮЧЕНИЕ

                              ЦП

         Центральный  процессор  ЭВМ - это чип, выполняющий в
ЭВМ вычислительные и управляющие функции. 

                        Машинный язык

         Язык,  воспринимаемый  ЦП.  Для  ЦП "Спектрум" - это
машинный язык Z80, содержащий приблизительно 200 команд. 

                        Язык "Бейсик"

         Язык программирования, разработанный так, чтобы быть
понятным человеку. Когда ЭВМ выполняет команду на этом языке,
ей  приходится транслировать эту команду в последовательность
команд  машинного  языка. Поэтому программы на языке "Бейсик"
значительно  медленнее  работают,  чем  программы на машинном
языке, но их легче писать. 

                       Язык ассемблера

         Представление  команд машинного языка в сокращенной,
понятной  человеку  записи,  например,  HALT  -  ассемблерный
эквивалент команды машинного языка 0 1 1 1 0 1 1 0. 

                     Программа ассемблера

         Программа,  транслирующая  команды  языка ассемблера
(удобочитаемые и понятные человеку) в команды машинного языка
(воспринимаемые ЭВМ). 

              Постоянное запоминающее устройство

         Большая   программа   на   машинном   языке,  обычно
называемая  программируемым  оборудованием. Программа, жестко
встроенная   в  аппаратуру  ЭВМ.  Она  сохраняется  даже  при
отключении  питания.  Для  "Спектрум" ПЗУ запрограммировано в
машинных  кодах  Z80  и  написано  специально  для  него. ПЗУ
"Спектрум"  занимает  ячейки  памяти  с 0 по 16383. Вы можете
только   обращаться  к  содержимому  этих  ячеек,  тогда  как
остальную память вы можете не только читать, но и изменять. 




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Scenergy - Как с нами связаться.
Club IM2 - Терминология и теоритические аспекты прерываний и многозадачности.
free scene news - новости сайта freeart.boom.ru
Разберемся - Подробный отчет о прохождении игры DIZZY-7.
Письмо - О графике и не только.

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