Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ассемблер.doc
Скачиваний:
24
Добавлен:
25.08.2019
Размер:
526.34 Кб
Скачать

2.10. Принципы работы компьютера

Ниже описаны некоторые основные принципы работы компьютера. Эти принципы важны для понимания 8088 и его работы. Все, что говорится в этом разделе, верно и для других компьютеов. В соответствующих местах мы будем специально оговариваться, что речь идет об Intel 8088, хотя основная часть сведений, относящихся только к 8088, появится в следующей главе.

Работа компьютера состоит в выборке команд из памяти и их выполнении. Каждая команда проходит через этот двухшаговый процесс. Выборкой очередной порции в этом цикле управляет один из регистров процессора. Этот регистр называют счетчиком программы или указателем команды. Он является "маркером" текущей выполняемой команды. То место в памяти, на которое указывает этот регистр, содержит следующую команду, которую должен будет выбрать и выполнить процессор. Процессор читает в этом месте один или несколько байтов, интерпретирует их как комнду и выполняет ее. Затем процессор увеличивает указатель в соответствии с числом байтов в команде. Теперь счетчик программы указывает на следующую команду. Этот цикл повторяется для всех без исключения команд. Нормальное выполнение программы является последовательным, от одной команды к другой, расположенной следом.

Процессор может изменить последовательный цикл выборки-исполнения при выполнении команды, которая помещает в указатель команд новое значение. Такие команды являются командами передачи управления, поскольку выполнение программы переходит в новую область. Инструкция перехода или выбора варианта является самым распространенным способом передачи управления. Команда перехода задает адрес команды, которая должна выполняться следующей. Цикл в программе является примером использования команды перехода. Пример на Фиг. 2.16 на языке ассемблера 8088 показывает сохранение одного и того же значения в последовательных байтах памяти. Команда перехода в конце цикла приводит к повторному выполнению его команд.

Microsoft (R) Macro Assembler Version 5.00 10/31/88 22:30:38

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

1   PAGE ,132

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

3 0000              CODE SEGMENT

4        ASSUME CS:CODE

5

6 0000              MEMLABEL 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 Команда условного перехода                  Page1-1

1   PAGE ,132

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

3 0000 CODE SEGMENT

4        ASSUME CS:CODE

5

6 0000 MEMLABEL 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

       END

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]