Ниже описаны некоторые основные принципы работы компьютера. Эти
принципы важны для понимания 8088 и его работы. Все, что говорится
в этом разделе, верно и для других компьютеов. В соответствующих
местах мы будем специально оговариваться, что речь идет об Intel
8088, хотя основная часть сведений, относящихся только к 8088,
появится в следующей главе.
Работа компьютера состоит в выборке команд из памяти и их
выполнении. Каждая команда проходит через этот двухшаговый
процесс. Выборкой очередной порции в этом цикле управляет один из
регистров процессора. Этот регистр называют счетчиком программы
или указателем команды. Он является "маркером" текущей
выполняемой команды. То место в памяти, на которое указывает этот
регистр, содержит следующую команду, которую должен будет выбрать и
выполнить процессор. Процессор читает в этом месте один или
несколько байтов, интерпретирует их как комнду и выполняет ее.
Затем процессор увеличивает указатель в соответствии с числом
байтов в команде. Теперь счетчик программы указывает на следующую
команду. Этот цикл повторяется для всех без исключения команд.
Нормальное выполнение программы является последовательным, от одной
команды к другой, расположенной следом.
Процессор может изменить последовательный цикл выборки-исполне-
ния при выполнении команды, которая помещает в указатель команд но-
вое значение. Такие команды являются командами передачи
управления, поскольку выполнение программы переходит в новую
область. Инструкция перехода или выбора варианта является самым
распространенным способом передачи управления. Команда перехода
задает адрес команды, которая должна выполняться следующей. Цикл в
программе является примером использования команды перехода. Пример
на Фиг. 2.16 на языке ассемблера 8088 показывает сохранение одного
и того же значения в последовательных байтах памяти. Команда
перехода в конце цикла приводит к повторному выполнению его команд.
Microsoft (R) Macro Assembler Version 5.00 11/2/88 21:30:42
Фиг. 2.16 Команда перехода Page 1-1
1 PAGE ,132
2 TITLE Фиг. 2.16 Команда перехода
3 0000 CODE SEGMENT
4 ASSUME CS:CODE
5
6 0000 MEM LABEL BYTE
7
8 0000 FIG2_16:
9 0000 2E: C6 87 0000 R 00 MOV MEM[BX],0
10 0006 43 INC BX
11 0007 EB F7 JMP FIG2_16
12
13 0009 CODE ENDS
14 END
Фиг. 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.00 11/2/88 22:31:33
Фиг. 2.17 Команда условного перехода Page 1-1
1 PAGE ,132
2 TITLE Фиг. 2.17 Команда условного перехода
3 0000 CODE SEGMENT
4 ASSUME CS:CODE
5
6 0000 MEM LABEL BYTE
7
8 0000 FIG2_17:
9 0000 2E: C6 87 0000 R 00 MOV MEM[BX],0
10 0006 43 INC BX
11 0007 81 FB 03E8 CMP BX,1000
12 000B EB F3 JMP FIG2_17
13
14 000D CODE ENDS
15 END
Фиг. 2.17 Команда условного перехода
значения данных в процессе выполнения программы. Ход выполнения
программы может меняться в зависимости от результатов этой
проверки.