КОМАНДЫ БЕЗУСЛОВНЫХ ПЕРЕХОДОВ


Так как физический адрес ячейки памяти состоит из адреса сегмента и смещения внутри сегмента, то имеются команды перехода, которые модифицируют оба регистра CS и IP, и имеются команды перехода, которые модифицируют только ре­гистр IP. Команды, изменяющие содержимое регистров CS и IP, называются командами межсегментного перехода, гак как изменяют текущий сегмент кода, а модифицирующие только содержимое регистра IP — команды внутрисегментного перехо­да, так как сегмент кода остается неизменным.

Точка, куда передается управление (адрес следующей исполняемой коман­ды) в межсегментных переходах, обозначается как FAR_TAG (от англ. far — далеко), а во внутрисегментных переходах как NEAR_TAG (от англ. near — близко). Команды безуслов­ного перехода разделяются на внутрисегментные и межсег­ментные, на прямые и косвенные. В прямых переходах адрес перехода задается непосредственно в команде, как это было для команд условных переходов. В косвенных переходах в команде задается не адрес перехода, а адрес ячейки памяти (регистра), в которой содержится адрес перехода. Команды безусловных переходов имеют следующие форматы (см. приложение): JMP SHORT_TAG — безусловный переход типа SHORT (короткий): содержимое IP устанавливается равным сумме IP и расширенного со знаком до 16 бит значения IP_INC; JMP NEAR_TAG — безусловный переход типа NEAR (внутрисегментный, близкий): содержимое IP устанавли­вается равным сумме IP и значения IP_INC, представленного в виде младшего IP_INC-LO и старшего IР_INС-НI байтов; JMP FAR_TAG — безусловный переход типа FAR (межсегмен­тный, далекий); логический адрес перехода непосредственно содержится в коде команды, где IP_NEW-LO и IP_NEW-HI со­ответственно младший и старший байт нового содержимого IP a CS­_NEW-LO и CS_NEW-HI— младший и старший байт нового содержимого CS; JMP R16/M16 (NEAR) — внутрисег­ментный косвенный переход: эффективный адрес перехода со­держится в адресуемом слове или в регистре, определяемом способом адресации; JMP М32 (FAR) — межсегментный косвенный переход; логический адрес перехода содержится в ад­ресуемой ячейке памяти, представляющей собой двойное cловo, причем в слове с меньшим адресом содержится смещение, в слове с большим адресом — адрес сегмента.

3.3. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ N3

Перед выполнением работы изучите порядок ее проведе­ния, получите индивидуальное задание и ознакомьтесь с ним.

3.3.1. ВЫЧИСЛЕНИЕ ВЫРАЖЕНИЙ.

Исследуйте особен­ности вычисления выражения по программе N 2 (рис. 3.9)

W. = (|X| + 1) • Y + Z — 1344)/X,

где X, Y, Z — неза­висимые переменные, W — результат, представленный в виде двух слов: частного и остатка от деления.

1) Включите микро-ЭВМ, как описано в п. 1.2.1.

2) Введите программу на рис. 3.9 в память микро-ЭВМ, начиная с адреса 0000h:0100h (см. п. 2.2.1).

3) Для подготовки программы к выполнению занесите в регистры процессора и ячейки памяти данные, необходимые для выполнения программы (см. п. 2.2.2); для программы N 2 в сегментный регистр CS занесите начальный адрес используе­мого сегмента кода (OOOOh), в сегментный регистр DS началь­ный адрес сегмента данных (OOOOh) и, начиная с адреса 0000h:0200h, занесите числа X = — 5, Y = 37, Z = 278 (слова); проверьте правильность записи данных чтением со­держимого регистров и ячеек памяти.

4) Выполните введенную ранее в память программу в пошаговом режиме (см. п.2.2.3). Проконтролируйте содержимое регистров процессора, изменяемых выполненной командой и перепишите их содержимое в отчет. Проверьте правильность работы программы вычислением результата вручную.

5) Выполните введённую ранее программу в режиме ав­томатического выполнения (см. п. 2.2.5), изменив исходные данные (содержимое ячеек памяти с адресами DS:200h,
DS:202h, DS:204h). Добейтесь возникновения арифметического переполнения при выполнении арифметических операций. Полу­ченные при этом значения исходных переменных X, Y, Z и
результата W запишите в отчет. Для получения результата при переполнении заблокируйте выполнение команд условных переходов, записав вместо них в память код 90h (нет операции). Объясните полученные результаты.

Загрузка...