Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Близкие и далекие переходы.

Цель работы

Цель работы: освоить команды передачи управления языка Ассемблера.

Задание

Разработать программу реализации циклического процесса в соответствии с вариантом задания. Вычисляется выражение типа

ì y1, x< 0

Y = í y2, x=0

î y3, x> 0

 

при этом используется целочисленное деление (div), а параметром цикла является переменная x

Вариант y1 y2 y3 a b c d x
  c·x a -b2d (b+c) ·x   -7     [-5; 2]

 

Теоретическая часть

Команды передачи управления

Команды передачи управления делятся на 3 вида:

- команды переходов,

- команды организации циклов,

- команды обращения к процедурам.

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



Близкие и далекие переходы.

 

Мнемоники команд переходов в ЯА образуются от слова Jump.

Например, безусловный переход:

JMP оp,

где ор – имя команды, которой передается управление (т.е. метка).

Адрес перехода ассоциируется с меткой команды. Метка – это имя команды, которое располагается до мнемоники команды и отделяется двоеточием. Любая программная метка (включая имя процедуры) имеет атрибут NEAR или FAR.

Например,

АМ1: ADD AX, 4

………………….

JMP AM1

 

Команды перехода модифицируют указатель команд IP и, возможно, регистр сегмента команд CS и бывают двух типов:

- если команда изменяет только IP, т.е. передача управления внутри сегмента, то переход называется ближний переход NEAR.

- если изменяется пара регистров CS: IP, - это межсегментный переход или далекий переход FAR. Заметим, что переход из ассемблерного участка программы в Паскаль-программу также является далеким переходом.

а) команды, анализирующие результаты предыдущей команды (флаги) – условный переход в классическом понимании. Они имеют только 1-байтовое смещение.

Если условный переход требует удаления более чем на 128Б (30-40 команд), то используется комбинация условного и безусловного перехода.

Например:

Требуется NEAR переход на метку ZERO по флагу ZF=1, тогда

Получим фрагмент программы

………..

JNZ CONTINUE; if ZF< > 1 then continue

JMP ZERO

CONTINUE

Т.е. используется условный переход по противоположному признаку, а по ZF=1 получим 2-хбайтовый переход.

Мнемоника условного перехода сложна, таких переходов более 20. Некоторые очевидны. Для образования мнемоники используют следующие сокращения:

E – equal (=)

N – not (не)

G – greater (больше для знаковых целых)

L – less (меньше для знаковых целых)

A – above (выше) беззнаковых

B –below (ниже) для беззнаковых

В условных переходах используется после J от одной до трех букв (из перечисленных выше).

Например, после сравнения чисел результат ор1< ор2, возможны 2 команды, эквивалентные между собой для одного и того же перехода:

- для знаковых JL ADRES

JNGE ADRES

- для беззнаковых JB ADRES

JNA ADRES

б) команды управления циклом

LOOP ор

- управление циклом по счетчику, где ор – метка первой команды цикла, цикл управляется счетчиком в СХ.

Команда LOOP уменьшает содержимое СХ (dec СХ) и передает управление в начало цикла, если содержимое СХ< > 0, иначе управление передается команде следующей за LOOP.

Обычно цикл оформляется следующим образом.

mov CX, N; СХ = {число проходов цикла}

L1: ……… начало цикла

……………….

LOOP L1;

Особенности команды LOOP:

- счетчик цикла находится только в CX;

- начальное значение загружается в CX> 0 до входа в цикл;

- команды прохода цикла выполняются хотя бы один раз;

- LOOP осуществляет переход типа SHORT, поэтому проход цикла не должен занимать ³ 128Б (»30-40 команд); если нужен более длинный проход цикла, то используется сочетание условных и безусловных переходов;

CX может использоваться как операнд в цикле, но не должен изменяться другими командами.


<== предыдущая лекция | следующая лекция ==>
Peabody | Понятие САЗПР, ее цель, и объект автоматизации




© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.