Студопедия

КАТЕГОРИИ:

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


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




Группа представлена командами безусловного и условного переходов, командами вызова подпрограмм и командами возврата из подпрограмм (табл.23).

 

Таблица 8.

Название команды Мнемокод КОП Т Б Ц Операция
Длинный переход в полном объеме ПП LJMP ad16 (PC) ad16
Абсолютный переход внутри страницы в 2 Кб AJMP ad11 A10a9a8 (PC) (PC) + 2, (PC0-10) ad11
Короткий относительный переход внутри страницы в 256 байт SJMP rel (PC) (PC) + 2, (PC) (PC) +rel
Косвенный относительный переход JMP @A+DPTR (PC) (A) + (DPTR)
Переход, если аккумулятор равен нулю JZ rel (PC)(PC)+2, если (A)=0, то (PC)(PC)+rel
Переход, если аккумулятор не равен нулю JNZ rel (PC)(PC)+2, если (A)≠0, то (PC)(PC)+rel
Переход, если перенос равен единице JC rel (PC)(PC)+2, если (С)=1, то (PC)(PC)+rel
Переход, если перенос равен нулю JNC rel (PC)(PC)+2, если (С)=0, то (PC)(PC)+rel
Переход, если бит равен единице JB bit, rel (PC)(PC)+3, если (b)=l, то (PC)(PC)+rel
Переход, если бит равен Нулю JNB bit, rel (PC)(PC)+3, если (b)=0, то (PC)(PC)+rel
Переход, если бит установлен, с последующим сбросом бита JBC bit, rel (PC) (PC) + 3, если (b)=1, то (b) 0 и (PC) (PC) + rel
Декремент регистра и переход, если не нуль DJNZ Rn, rel D8 – DF (PC) (PC) + 2, (Rn) (Rn) - 1, если (Rn) ≠ 0, то (PC) (PC) + rel
Декремент прямо-адресуемого байта и переход, если не нуль DJNZ ad, rel D5 (PC) (PC) + 2, (ad) (ad) - 1, если (ad) ≠ 0, то (PC) (PC) + rel
Сравнение аккумулятора с прямоадресуемым байтом и переход, если не равно CJNE A, ad, rel B5 (PC) (PC) + 3,если (A) ≠ (ad), то (PC) (PC) + rel, если (A) < (ad), то (C) 1, иначе (C) 0
Сравнение аккумулятора с константой и переход, если не равно CJNE A, #d, rel B4 (PC) (PC) + 3,если (A) ≠ #d, то (PC) (PC) + rel, если (A) < #d, то (C) 1, иначе (С) 0
Сравнение регистра с константой и переход, если не равно CJNE Rn, #d, rel B8 – BF (PC) (PC) + 3,если (Rn) ≠ #d, то (PC) (PC) + rel, если (Rn) < #d, то (C) 1, иначе (С) 0
Сравнение байта в РПД с константой и переход, если не равно CJNE @Ri,#d,rel B6 – B7 (PC) (PC) + 3,если ((Ri)) ≠ #d, то (PC) (PC) + rel, если ((Ri)) < #d, то (C) 1, иначе (C) 0
Длинный вызов подпрограммы LCALL adl6 (PC) (PC) + 3, (SP) (SP) +1, ((SP)) (PC0…7), (SP) (SP) + 1, ((SP)) (PC8…15), (PC) ad16
Абсолютный вызов подпрограммы в пределах страницы в 2 Кб ACALL ad11 A10a9a8 (PC) (PC) + 2, (SP) (SP) + 1, ((SP)) (PC0…7), (SP) (SP) + 1, ((SP)) (PC8…15), (PC0-10) ad11
Возврат из подпрограммы RET (PC8…15) ((SP)), (SP) (SP) - 1, (PC0…7) ((SP)), (SP) (SP) – 1
Возврат из подпрограммы обработки прерывания RETI (PC8…15) ((SP)), (SP) (SP) - 1, (PC0…7) ((SP)), (SP) (SP) – 1
Пустая операция NOP (PC) (PC) + 1

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

LJMP ad16 (Long Jump - длинный переход) – длинный абсолютный переход по всему адресному пространству ПП. В трехбайтовой команде содержится полный 16-битный адрес перехода (ad16), позволяющий обращаться к любой ячейке памяти в пределах 64К. На практике редко возникает необходимость перехода в пределах всего адресного пространства и чаще используются укороченные команды перехода, занимающие меньше места в памяти.

AJMP ad11 (Absolute Jumpабсолютный переход) – абсолютный переход в пределах одной страницы памяти программ размером 2048 байт. Такие команды содержат только 11 младших бит адреса перехода (ad11). Команды абсолютного перехода имеют формат 2 байта, при этом второй байт команды содержит 8 младших разрядов адреса (А7-А0), которые адресуют 256 байт памяти, а 3 старших разряда (А10-А8) находятся в первом байте вместе с кодом операции. Для изменения адреса перехода необходимо выбирать команду с другим кодом операции. Всего имеется 8 команд типа AJMP. При выполнении команды в вычисленном адресе следующей по порядку команды ((РС)= (PC) + 2) 11 младших бит заменяются на ad11 из тела команды абсолютного перехода.

SJMP rel (Short Jump– короткий переход) - относительный переход позволяет передать управление в пределах -128 ÷ +127 байт относительно адреса следующей команды (команды, следующей по порядку за командой относительного перехода). Формирование адреса относительного перехода (rel) осуществляется путем сложения базового адреса с адресом в поле операнда команды. В качестве базового адреса используется содержимое программного счетчика, а адрес в поле операнда команды представляет собой восьмиразрядное смещение rel(relative - относительный). Число rel интерпретируется командой как целое со знаком, представленное в дополнительном коде. Диапазон его представления -128 ÷ +127. При определении числа rel следует учесть, что программный счетчик указывает на следующую, подлежащую выполнению, команду. Относительный переход широко используется в командах передачи управления, так как по сравнению с абсолютными переходами они придают программе важное качество перемещаемости.

JMP @A + DPTR – косвенный переход по адресу, представляющим собой сумму содержимого аккумулятора A и регистра DPTR. Эта команда удобна тем, что предоставляет возможность организации перехода по адресу, вычисляемому самой программой и неизвестному при написании исходного текста программы. При этом в регистре DPTR находится постоянная часть адреса, в аккумуляторе – вычисляемая.

Команды условного перехода имеют структуру Jump(условие) bit, rel или Jumр(условие), rel и позволяют осуществлять переход при выполнении следующих условий (переход если):

- JZ— аккумулятор содержит нулевое значение;

- JNZ — аккумулятор содержит не нулевое значение

- JC — бит переноса С установлен;

- JNC — бит переноса С не установлен;

- JB — прямоадресуемый бит равен 1

- JNB — прямоадресуемый бит равен 0;

- JBC — прямоадресуемый бит равен 1 и сбрасывается в нулевое значение при выполнении команды.

Все команды условного перехода содержат короткий относительный адрес, т. е. переход может осуществляться в пределах -128... +127 байт относительно следующей команды, аналогично команде SJMP.

Команды вызова подпрограмм и возврата из них:

LCALL ad16 – длинный вызов подпрограммы в пределах полного адресного пространства 64К. Трехбайтовая команда аналогичная команде LJMP.

ACALL ad11 – двухбайтовая команда вызова подпрограммы в пределах адресного пространства 2К. Как и для команды AJMP, имеется 8 команд типа ACALL.

RET – безадресная команда возврата из подпрограммы.

RETI - безадресная команда возврата из подпрограммы обработки прерывания.

Все команды данной группы, за исключением CJNE и JBC, не оказывают воздействия на флаги. Команда CJNE устанавливает флаг C, если первый операнд оказывается меньше второго. Команда JBC сбрасывает флаг C в случае перехода.


Поделиться:

Дата добавления: 2015-02-10; просмотров: 112; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты