КАТЕГОРИИ: Архитектура-(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
Пример: 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 [модификатор] … … …
Дата добавления: 2014-01-04; Просмотров: 241; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |