3.14. Управляющие рагистры

Для операций управления в процессоре 8088 используются главным образом три 16-битовых регистра. Это указательстека (SP), указатель команды (IP) и регистр флагов. Два регистра-указателя процессор использует для необходимой при выполнении программы адресации в памяти. Регистр флагов содержит коды состояний, которые программа может использовать для управления своим выполнением.

3.14.1. Указатель инструкций (IP)

Указатель команд - это 16-битовый регистр, который содержит смещение очередной команды. Как показано в предыдущем пункте, Процессор использует регистр CS совместно с регистром IP для формирования 20-битового физического адреса. Регистр CS определяет сегмент выполняемой программы, а IP задает смещение. Поскольку в задании адреса очередной команды участвует два регистра, существует несколько способов задать ход выполнения программы. Наиболее обычный из этих способов осуществляется при нормальном выполнении программы. При извлечении процессором команды из памяти и ее выполнении значение регистра IP увеличивается на размер команды в байтах. Теперь пара CS:IP указывает на следующую команду.

Для изменения порядка выполнения команд используются команды перехода. Команда перехода одного вида изменяет только регистр IP и дает переход внутри одного сегмента. Этот тип перехода называется внутри сегментным или близким (NEAR) переходом. Спецификация для него требует лишь новое значение для регистра IP. Регистр CS остается без изменений. Близкий переход может передавать управление только внутри текущего сегмента, поэтому дальность перехода ограничена сверху 64K байт. Для перехода к более отдаленному участку программы требуется переход другого типа.

Переход второго типа называется межсегментным или далеким (FAR) переходом. При этом переходе процессор назначает новые значения как для IP так и для CS. Этот переход позволяет выполнять новую программу расположенную в любом месте адресного пространства 8088. Но для выполнения такого перехода команда должна определить новые значения для обоих регистров - CS и IP. При прямом переходе это требует пяти-байтовой команды : один байт на код операции и по два байта для регистров CS и IP.