Склад команд умовних і безумовних переходів, страница 2

JBC ACC.3,LAB6 ; Переходу на LAB6 німа, т.я.

; (A[3])=0

JBC ACC.2,LAB7 ; (A)=72h (0111 0010b) і перехід

; до адреси, яка відповідає

; мітці LAB7

Примітка. Якщо команда DJNZ використовується для зміни виходу

порту, значення, яке використовується як операнд, зчитується з буфера

порту, а не з виводів БІС.

Команда JC <1b>

Команда "перехід, якщо перенос встановлений" виконує перехід до

адреси, якщо прапор переносу дорівнює "1", в протилежному випадку

виконується наступна команда. Адреса переходу визначається при допомозі

додання відносного адресного зміщення зі знаком у другому байті команди

(1b) і вмісту лічильника команд, після додання до нього 2. Ця команда на

прапори не впливає.

Асемблер: JC <мітка>

Код: 01000000 1b

Час: 2 цикли

Алгоритм: (PC):=(PC)+2

якщо (С)=1, то (PC):=(PC)+<1b>

Пример: ;(C)=0

JC LAB8 ;нема переходу на LAB8

CPL C ;(C):=1

LAB8: JC LAB9 ;перехід на мітку LAB9, т.я. (C)=1

LAB9: NOP

Команда JNB <bit>, <1b>

Команда "перехід, якщо біт не встановлений" виконує перехід за

адресою, якщо вказаний біт дорівнює "0", в протилежному випадку

виконується наступна команда. Адреса переходу визначається при допомозі

додання відносного зміщення зі знаком в третьому байті команди (1b) і

вмісту лічильника команд після додання до нього 3. Ця команда на прапори

не впливає.

Асемблер: JNB (bit), <метка>

Код: 0 0 1 1 0 0 0

0

bit address re18

Час: 2 цикли

Алгоритм: (PC):=(PC)+3

якщо (bit)=0, (PC):=(PC)+<1b>

Пример: ;(P2)=CAh (11001010b)

;(A)=56h (0101 0110b)

JNB P1.3,LAB10 ;нема переходу на LAB10

JNB ACC.3,LAB11 ;перехід на метку LAB11

LAB11: INC A

Команда JNC <1b>

Команда "перехід, якщо перенос не встановлений" виконує перехід за

адресою, якщо прапор переносу дорівнює "0", в протилежному випадку

виконується наступна команда. Адреса переходу визначається при допомозі

додання відносного адресного зміщення зі знаком в другому байті команди

(1и) і вмісту лічильника команд після додання до нього 2. Прапор переносу

не змінюється. Ця команда на інші прапори не впливає.

Асемблер: JNC <мітка>

Код: 01010000 lb

Час: 2 циклaи

Алгоритм: (PC):=(PC)+2

якщо (С)=0, то (PC):=(PC)+<lb>

Пример: ;(C)=1

JNC LAB12 ;нема переходу на LAB12

CPL C

LAB12: JNC LAB13 ;перехід на метку LAB13

Команда JNZ <1b>

Команда "перехід, якщо вміст акумулятора не дорівнює нуля" виконує

перехід за адресою, якщо хоча б один біт акумулятора дорівнює "1", в

протилежному випадку виконується наступна команда. Адреса переходу

визначається доданням відносного адресного зміщення зі знаком у другому

байті команди (1b) і вмісту лічильника (РС) після додання до нього 2. Вміст

акумулятора не змінюється. Ця команда на прапори не впливає.

Асемблер: JNZ <мітка>

Код: 01110000 re18

Час: 2 цикли

Алгоритм: (PC):=(PC)+2

якщо (A)<>0, то (PC):=(PC)+<1b>

Пример: ;(A)=00h

JNC LAB14 ;нема переходу на LAB14

INC A

LAB14: JNZ LAB15 ;перехід на мітку LAB15

LAB15: NOP

Команда JZ <1b>

Команда "перехід, якщо вміст акумулятора дорівнює "0" виконує

перехід за адресою, якщо все біти акумулятора дорівнюють "0", в

протилежному випадку виконується наступна команда. Адреса переходу

визначається доданням відносного адресного зміщення зі знаком у другому

байті команди (1b) і вмісту лічильника команд після додання до нього 2. Ця

команда на прапори не впливає.

Асемблер: JZ <мітка>

Код: 01100000 1b

Час: 2 цикли

Алгоритм: (PC):=(PC)+2

якщо (A)=0, то (PC):=(PC)+<1b>

Пример: ;(A)=01H

JZ LAB16 ;нема переходу на LAB16

DEC A

LAB16: JZ LAB17 ;перехід на мітку LAB17

LAB17: CLR A

Команда LJMP <addr16>

Команда "довгий перехід" виконує безумовний перехід за вказаною

адресою, завантажуючи старший и молодший байти лічильника команд (РС)

відповідно другим і третім байтами, які вказані в команді. Адреса переходу,

таким чином, може знаходиться за будь-якою адресою простору пам‘яті

програм в 64 Кбайт. Ця команда на прапори не впливає.

Асемблер: LJMP <мітка>

Код: 00000010 addr [15-8] addr [7-0]

Час: 2 цикли

Алгоритм: (PC):=<addr[15-0]>

Команда JMP @A+DPTR

Команда "косвений перехід" складує 8-бітовий вміст акумулятора без

знака з 16-бітовим покажчиком даних (DPTR) і завантажує отриманий

результат в лічильник команд, вміст якого є адресою для вибірки наступної

команди. 16-бітове додання виконується по модулю 216, перенос з молодших

восьми біт розповсюджується на старші біти програмного лічильника. Вміст

акумулятора і покажчика даних не змінюється. Ця команда на прапори не

впливає.

Асемблер: JMP @A+DPTR

Код: 01110011

Час: 2 цикли

Алгоритм: (PC):=(A)[7-0]+(DPTR)[15-0]

Пример: ;(PC)=034Eh, (A)=86h, (DPTR)=0329h

JMP @A+DPTR ;(PC)=03AEh, (A)=86h, (DPTR)=0329h

2. Домашня підготовка

2.1. Вивчити матеріали лекцій і методичних вказівок відповідно до

теми лабораторної роботи.

2.2. Подготовить мнемонический код программы, выполняющей

указанные действия.

2.2.1. Загрузить на старшие разряды статического индикатора число

«FF», а на младшие разряды – «00».

2.2.2. На младших разрядах сформировать с определенной

программной задержкой циклическое инкрементирование значения до «AA».

2.2.3. Сформировать программную задержку.

2.2.4. На старших разрядах сформировать с определенной программной

задержкой циклическое декрементирование значения до «АА».

2.2.5. Реализовать бесконечный циклический повтор действий,

описанных в пунктах 2.2.1 – 2.2.4.

3. Порядок виконання роботи

3.1. В соответствии с домашней подготовкой набрать в текстовом

редакторе мнемонический код первой программы.

3.2. Используя компилятор asm51.exe провести компиляцию

программы и отредактировать возможные ошибки времени проектирования.

3.3. С использованием программы eval32.exe загрузить программу в

память стенда.

3.4. Провести поиск возможных ошибок времени выполнения с

редактирование мнемонического кода программы и повторной компиляцией

и загрузкой в память стенда.

4. Зміст звіту

На перевірку викладачу надається звіт оформлений відповідно до

існуючих вимог, в якому відображено тему і мету роботи, домашні

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