На главную Назад
Добро пожаловать, уважаемый посетитель!

Мы уже видели, как из нулей и единиц, хранимых в ЭВМ, формируются

числа.Теперь мы посмотрим как комбинации тех же значений 0 и 1

могут быть использованы для программирования компьютера.

 

Машинная программа представляет собой последовательность ко-

манд (инструкций).Эти команды "объясняют" компьютеру, что он

должен делать.Это похоже на рецепты в кулинарной книге.В

рецепте имеется описание действий, которые необходимы для

приготовления определенного блюда.Подобным образом, компьютер

имеет последовательность команд, которые точно описывают ему

последовательность действий.Этот набор команд называется

программой.Процесс построения корректного набора команд

называют программированием компьютера.В нашей аналогии с рецептом

рецепт является программой, а тот кто его написал - программистом.

Роль компьютера здесь играет повар, готовящий еду.

 

Реальная программа, которую выполняет компьютер, это последова-

тельность едениц и нулей, связанных с памятью компьютера. Эту стро-

ку бит принято называть машинным языком. Машинный язык-этотот

язык который машина понимает. Компьютер извлекает команды машинного

языка из памяти точно определенным способом. Затем компьютер выпол-

няет команду, обозначенную данной конфигурацией бит. Этот цикл изв-

лечения и исполнения будет разобран в одном из последующих разделов

данной главы.

 

Однако машинный язык мало о чем говорит людям.Если вы хотите

сложить два числа в 8088 (например, содержимое регистров AX BX -

краткое описание регистров сейчас последует), команда будет

выглядеть таким образом:

 

0000001111000011B(или 03C3H)

 

Эти два байта точно указывают компьютеру какую опреацию произвести.

Аналогично, для вычитания двух чисел (вычитание регистра BX из ре-

гистра AX) мы будем иметь в машинном языке

 

0010101111000011B(или 2BC3H)

 

Здесь необходимо коротко пояснить, что такое регистры, поскольку в

обсуждении основ работы 8088 с ними приходится чато сталкиваться.

Регистр - это часть процессора, предназанченная для сохранения дан-

ных.К данным, сохраненным в регистре, процессор получает доступ

очень быстро - намного быстрее, чем к данным, хранимым в памяти.

Возможно еще специальное использование регистров в некоторых коман-

дах.В третьей главе будет дано полное описание регистров 8088.

Хотя машинный язык - это действительно прекрасно, если вы явля-

етесь компьютером, он труден для программистов - людей.К счастью,

существует более простой способ программирования.Этим методом,

более близким людям, чем машинам, является программирование на

языке ассемблера.

 

Язык ассемблера, как язык программирования, т.е. более понятный

программисту, чеммашинный, язык, всееще сохраняет все значения

машинного языка.Компьютер читает программы наязыке ассемблера и

переводит их в машинный язык, в ту форму, которая понятна ЭВМ. Этот

процесс,называемый"ассемблированием"программы,фактически

является переводомс одного языкана другой. Операциюперевода с

языка ассемблерана машинный языквыполняет программа, называемая

ассемблером.

 

Чтобы лучше понять разницу, давайте взглянем на примеры,

которыми мы уже пользовались выше.Ассемблерная команда для

сложения содержимого регистров AX и BX проста:

 

ADDAX,BX

 

Аналогично, для вычитания регистра BX из регистра AX мы напишем:

 

SUBAX,BX

 

Ассемблер превращает эти предложения в форму, которую мы видели вы-

ше.Компьютер сам управляется с проблемой превращения файла с по-

нятным человеку текстом в программу на машинном языке, которую мог

бы выполнить процессор.

 

Язык ассемблера не похож на языки типа Фортран, Кобол или

Паскаль.Эти языки, как и многие подобные им, являются языками

высокого уровня.Языки высокого уровня разработаны для того, чтобы

можно было иметь дело непосредственно с задачей, решаемой

программой.В этом качестве они иногда называются процедурными

языками, поскольку описывают процедуру, используемую для решения

задачи.Языки высокого уровня машинно-независимы.Программа,

написанная на Фортране для IBM PC будет правильно работать и давать

те же самые результаты при выполнении на IBM/370.язык

программирования не зависит от машины.

 

Програмы же на языке ассемблера непосредственно относятся к той

машине, на которой они должны выполняться. Языкассемблерамашин-

нозависимый. Языкассемблера для IBMPC принципиально отличенот

языка ассемблера для IBM/370. Этосвязано с тем, что команды языка

ассемблерапочти одинкодномупереводятся вкоманды машинного

языкат.е. каждаякоманда языкаассемблера обычнопреобразуется

точнов однукомандумашинногоязыка. Посколькумашинные языки

разныхкомпьютеров различны,то различаютсяи языкиассемблера.

Обычно каждое утверждение языкаассемблера генерирует одну команду

машинногоязыка.Внекоторыхслучаяхэтонетак,потому что

существуют команды, которые не являются частью выполняемой програм-

мы, а предназачены для ассемблера. Они описывают действия ассембле-

ра, которыйдолжен выполнять ихво время ассемблирования.Пример

директивыассемблеру(такойпредназначеннойтолькодлянего

команды) -

 

TITLEПример Программы

 

Эта инструкция сообщает ассемблеру заголовок программы.После

трансляции ассемблером прграммы этот заголовок - "Пример

программы"- появляется в верхней части каждой страницы сообщений

ассемблера.Эта инструкция имеет смысл только для ассемблера.В

8088 нет команды, которая могла бы выполнить эту опреацию.


 

Mail.ru