Assembler для начинающих






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