Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Процедуры. Команды условного перехода и флаги

Команды условного перехода и флаги

End start

Mov bx,0

Code

Data

Команды условного перехода

Code2 ends

Mov ax,bx

M1 label far

Code2 segment

Code1 ends

Lea bx,adr

Code1 segment

Data ends

Adr dd m1

Data segment

Косвенный регистровый межсегментный переход

Code2 ends

Mov ax,bx

M1 label far

Code2 segment

Code1 ends

Jmp adr

Code1 segment

Data ends

Adr dd m1

Data segment

Seg2 ends

M2 label far

Seg2 segment

Второй сегмент

Seg1 ends

M1 label far

Jmp far ptr m2

Seg1 segment

Прямой межсегментный переход.

Межсегментные переходы

Размер команды - 5 байт, из которых два байта составляют смещение в сегменте и два байта значение сегментной составляющей адреса.

Метки, которые участвуют в передаче управления, должны быть объявлены с помощью директивы label far.

 

Пример

Первый сегмент

 

……………

…………..

jmp m1;здесь far ptr необязательно

 

Если метка в тексте программы встречается раньше, чем обращение к ней, то модификатор far ptr можно не указывать.

 

Косвенный межсегментный переход.

Адрес метки должен быть записан в сегмент данных, а в команде jmp указывается адрес памяти, где расположен адрес метки.

 

……………………

………………….…

…………..

 

Адрес перехода указывается косвенно в регистре. Применяется, когда адрес перехода меняется во время выполнения прграммы.

 

……………………

jmp dword ptr [bx]

………………….…

…………..

 

 

 

Передача управления возможна в пределах одного сегмента.

Для принятия решения о том, куда будет передано управление, должно быть сформировано условие.

 

Способы формирования условия:

1) Любая команда, изменяющая состояние арифметических флагов.

2) Команда сравнения: cmp опер.1,опер.2 (из опер.1 вычитается опер.2, а результат никуда не записывается, воздействует только на флаги)

3) Состояние регистра cx/ecx

 

 

Операнды Команда Условие Состояние флага
любые je = zF=1
jne zF=0
     
со знаком jl < SF#OF
jle <= SF#OFor ZF=1
jg > SF=OF and ZF=0
jge >= SF=OF
без знака jb < CF=1
jbe <= CF=1 or ZF=1
ja > CF=0 and ZF=0
jae >= CF=0

 

Пример:

n equ 50; в сегменте данных выделяется const=50

pole db n dup(?)

start:

m1:

mov pole [bx],0; обнуляется массив данных в m1

inc bx; увеличивается bx на 1

cmp bx,n; сравниваем bx с n

jne m1; если bx ≠ n, то переход в m1 для обнуления

…; если bx=50, то выходим из программы.

Команды передачи управления анализируют состояния флагов

 

jc/jnc - cf=1/0 – флаг переноса

jp/jnp - pf=1/0 – флаг паритета

jz/jnz - zf=1/0 – флаг нуля

js/jns - sf=1/0 – флаг знака

jo/jno - sf=1/0 – флаг переполнения

Это любой участок программы, который заканчивается директивой ret.

 

имя proc [модификатор]

<== предыдущая лекция | следующая лекция ==>
Lea si,addr | Main endp. Процедура может располагаться в начале сегмент
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 241; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.