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

Ниже описаны некоторые основные принципы работы компьютера.Эти

принципы важны для понимания 8088 и его работы.Все, что говорится

в этом разделе, верно и для других компьютеов.В соответствующих

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

8088, хотя основная часть сведений, относящихся только к 8088,

появится в следующей главе.

 

Работа компьютера состоит в выборке команд из памяти и их

выполнении.Каждая команда проходит через этот двухшаговый

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

регистров процессора.Этот регистр называют счетчиком программы

или указателем команды.Он является "маркером" текущей

выполняемой команды.То место в памяти, на которое указывает этот

регистр, содержит следующую команду, которую должен будет выбрать и

выполнить процессор.Процессор читает в этом месте один или

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

Затем процессор увеличивает указатель в соответствии с числом

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

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

Нормальное выполнение программы является последовательным, от одной

команды к другой, расположенной следом.

 

Процессор может изменить последовательный цикл выборки-исполне-

ния при выполнении команды, которая помещает в указатель команд но-

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

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

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

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

задает адрес команды, которая должна выполняться следующей.Цикл в

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

на Фиг.2.16 на языке ассемблера 8088 показывает сохранение одного

и того же значения в последовательных байтах памяти.Команда

перехода в конце цикла приводит к повторному выполнению его команд.

Microsoft (R) Macro Assembler Version 5.0011/2/88 21:30:42

Фиг. 2.16 Команда переходаPage1-1

 

 

1PAGE,132

2TITLEФиг. 2.16 Команда перехода

3 0000CODESEGMENT

4ASSUMECS:CODE

5

6 0000MEMLABELBYTE

7

8 0000FIG2_16:

9 00002E: C6 87 0000 R 00MOVMEM[BX],0

10 000643 INCBX

11 0007EB F7JMPFIG2_16

12

13 0009CODEENDS

14END

 

 

Фиг. 2.16 Команда перехода

 

Обратите внимание, что в команде JMP для определения сле-

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

"FIG2_16".Это - еще одна из возможностей ассемблера.Хотя в

машинном языке требуется абсолютный адрес следующей команды, язык

ассемблера требует лишь программно определенную метку.Ассемблер

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

команду машинного языка.

 

Команда перехода не обязательно должна быть безусловной как в

приведенном примере.8088 располагает множством команд перехода,

которые выполняются в соответствии с некоторым кодом условия.

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

выполнении процессором.Условие, указанное в команде условного

перехода, сравнивается с кодом условия, сохраненного в регистре

состояний.Если условия совпадают, то процессор переходит по

указанному адресу.В противном случае процессор игнорирует

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

последовательном порядке.На Фиг.2.17 предыдущий пример изменен.

Цикл в этом примере прерывается, когда значение BX становится

равным 1000.

 

На Фиг.2.17 появляется новая команда сравнения, которая

устанавливает коды состояния.Команда условного перехода (JNE

(Jump if Not Equal) переход, если не равны) выполняет переход на

"FIG2_17", если условие выполнено.Если условие не выполняется,

8088 выполняет команду, следующую за условным переходом, в данном

случае команду NOP.Команда условного перехода позволяет проверить

Microsoft (R) Macro Assembler Version 5.0011/2/88 22:31:33

Фиг. 2.17 Команда условного переходаPage1-1

 

 

1 PAGE,132

2 TITLEФиг. 2.17 Команда условного перехода

3 0000CODESEGMENT

4 ASSUMECS:CODE

5

6 0000MEMLABELBYTE

7

8 0000FIG2_17:

9 00002E: C6 87 0000 R 00MOVMEM[BX],0

10 000643INCBX

11 000781 FB 03E8CMPBX,1000

12 000BEB F3JMPFIG2_17

13

14 000DCODEENDS

15 END

 

 

Фиг. 2.17 Команда условного перехода

 

значения данных в процессе выполнения программы.Ход выполнения

программы может меняться в зависимости от результатов этой

проверки.


 

Mail.ru