Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
вектора прерываний.rtf
Скачиваний:
2
Добавлен:
12.08.2019
Размер:
249.94 Кб
Скачать

Сегментные регистры

Четыре сегментных регистра — cs, ds, ss, es — определяют в памяти начала четырех 64 Кбайтовых сегментов. Программа может распределять более четырех сегментов, но при этом для адресации до­полнительных сегментов она должна перемещать соответствующие им пра­вильные значения между одним или несколькими сегментными регистрами.

Сегментные регистры являются строго специализированными. Вы не мо­жете выполнять над ними математические вычисления или хранить в них ре­зультаты других операций. Регистр сегмента кода cs указывает в памяти на начало машинного кода программы. Регистр сегмента данных ds содержит начальный адрес переменных программы. Регистр сегмента стека ss опреде­ляет начало стекового пространства. Дополнительный сегментный регистр es является вспомогательным, но несмотря на то что в большинстве программ в es и ds содержатся одинаковые адреса, он может упрощать некоторые опера­ции, связанные с этими регистрами.

Регистр командного указателя

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

Флаги

Хотя регистр флагов состоит из 16 бит, из них используются только 9 (см. рис. 4.2), остальные 7 бит програм­мами не используются. Отдельные биты флагов представляются одиночными буквами о, d, i, t, s, z, a, p, с. В не­которых руководствах (включая и это) для них часто применяются обозначения of, df, if и т.п. В табл. 4.1 содер­жатся полные имена для каждого битового флага.

В основном в битах регистра флагов процессора 8086 отража­ются результаты выполнения различных команд и операций. На­пример, после сложения флаг переноса cf показывает, получился ли в результате перенос. Флаг переполнения указывает, может ли результат сложения чисел со знаком быть правильно представлен с помощью заданного количества битов. Флаги могут также слу­жить для других целей. Например, можно выполнить в регистре сдвиг влево, передав первую значащую цифру для проверки во флаг переноса cf, после чего другие команды могут выполняться в зависимости от установки этого или других битов регистра фла­гов. Можно так же использовать cf в качестве однобитового уст­ройства, предупреждающего о возникновении ошибок, информи­руя другие части программы о неполадках. По мере изучения ко­манд языка ассемблера вы также узнаете о той важной роли, кото­рую играют флаги в работе программ.

Таблица 4.1. Флаги 8086

Символ

Полное имя

О ИЛИ Of

Флаг переполнения

d или df

Флаг направления

i или if

флаг прерывания

t или tf

флаг трассировки

s или sf

Флаг знака

z или zf

Флаг нуля

а или af

Вспомогательный флаг

p или pf

Флаг четности

с или cf

флаг переноса