Алгоритм

Пример

если (bit)=0, то (PC):=(PC)+3+rel

если (bit)=1, то (PC):=(PC)+3

;MT2 соответствует адресу 2FFH,

;(PC)=2F0H, rel=0CH, (A)=96H

JNB A.0,MT2 ;(PC)=2FFH, (A)=96H

JNC addr

0 1 0 1 0 0 0 0

rel

Команда "переход, если флаг переноса не установлен" выполняет переход по адресу addr, если содержимое флага переноса C сброшено в "0", в противном случае выполняется следующая команда. Процедура вычисления адреса перехода addr, влияние на флаги и время выполнения такие же, как у рассмотренной выше команды JC addr.

Алгоритм

Пример

если (С)=0, то (PC):=(PC)+2+rel

если (C)=1, то (PC):=(PC)+2

;MT1 соответствует адресу 200H,

;(PC)=1F0H, rel=0EH, (C)=0

JNС MT1 ;(PC)=200H, (C)=0

JNZ addr

0 1 1 1 0 0 0 0

rel

Команда "переход, если содержимое аккумулятора не равно нулю" выполняет переход по адресу addr, если содержимое A не ноль, в противном случае выполняется следующая команда. Адрес перехода addr определяется при помощи сложения 8-битового числа rel (со знаком), размещенного в младшем байте команды, с содержимым счетчика команд PC после увеличения его на 2. Таким образом, указанный переход возможен в пределах от -128 до +127 относительно начального адреса следующей команды, при этом отрицательное значение rel представляется двоичным числом в дополнительном коде. Команда на флаги и (A) не влияет и имеет время выполнения 2 цикла.

Алгоритм

Пример

если (A)¹0, то (PC):=(PC)+2+rel

если (A)=0, то (PC):=(PC)+2

;MT4 соответствует адресу 183H,

;(PC)=200H, rel=81H, (A)=01H

JNZ MT4 ;(PC)=183H, (A)=01H

JZ addr

0 1 1 0 0 0 0 0

rel

Команда "переход, если содержимое аккумулятора равно нулю" выполняет переход по адресу addr, если все биты аккумулятора равны нулю, в противном случае выполняется следующая команда. Содержимое A не изменяется. Процедура вычисления адреса перехода addr, влияние на флаги и время выполнения такие же, как у рассмотренной выше команды JNZ addr.

НЕ нашли? Не то? Что вы ищете?

Алгоритм

Пример

если (A)=0, то (PC):=(PC)+2+rel

если (A)¹0, то (PC):=(PC)+2

;MT4 соответствует адресу 231H,

;(PC)=200H, rel=2FH, (A)=00H

JZ MT4 ;(PC)=231H, (A)=00H

LCALL addr16

0 0 0 1 0 0 1 0

addr16[15-8]

addr16[7-0]

Команда "длинный вызов подпрограммы" вызывает безусловно подпрограмму с начальным адресом addr16. При этом 16-разрядное содержимое счетчика команд PC увеличивается на 3 для получения адреса следующей команды и помещается в стек (сначала следует младший байт), а содержимое указателя стека SP увеличивается на 2. Адрес addr16 получается с помощью второго и третьего байтов команды, которые загружаются соответственно в старший и младший байты PC. Выполнение программы продолжается командой, находящейся по полученному адресу. Подпрограмма, следовательно, может начинаться в любом месте адресного пространства памяти программ объемом до 64 Кбайт. Команда на флаги не влияет и имеет время выполнения 2 цикла.

Алгоритм

Пример

(PC):=(PC)+3

(SP):=(SP)+1, ((SP)):=(PC[7-0])

(SP):=(SP)+1, ((SP)):=(PC[15-8])

(PC):=addr16[15-0]

;(SP)=10H, (PC)=135H,

;MT соответствует адресу 300H

LCALL MT ;(SP)=12H, (PC)=300H,

;в РПД (11H)=38H, (12H)=01H

LJMP addr16

0 0 0 0 0 0 1 0

addr16[15-8]

addr16[7-0]

Команда "длинный переход" выполняет безусловный переход по адресу addr16. Этот адрес получается с помощью второго и третьего байтов команды, которые загружаются соответственно в старший и младший байты программного счетчика PC. Переход, таким образом, может осуществляться по любому адресу пространства памяти программ объемом до 64 Кбайт. Команда на флаги не влияет и имеет время выполнения 2 цикла.

Алгоритм

Пример

(PC):=addr16[15-0]

;(PC)=234H

LJMP 12CH ;(PC)=12CH

MOV A, Rn ;где n=0-7

1 1 1 0 1 r r r

где rrrB=000B-111B

Команда "переслать байт" выполняет загрузку аккумулятора A содержимым заданного регистра Rn выбранного банка, при этом содержимое Rn не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

(A):=(Rn), где n=0-7

;(A)=0FAH, (R6)=93H

MOV A, R6 ;(A)=93H, (R6)=93H

MOV A,@Ri ;где iÎ{0,1}

1 1 1 0 0 1 1 i

Команда "переслать байт" выполняет загрузку аккумулятора A содержимым ячейки резидентной памяти данных (РПД), адресуемой содержимым заданного регистра Ri выбранного банка, при этом содержимое используемой ячейки не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

(A):=((Ri)), где iÎ{0,1}

;(A)=0FDH, (R1)=30H,

;в РПД (30H)=17H

MOV A,@R1 ;(A)=17H, (R1)=30H,

;в РПД (30H)=17H

MOV A, direct

1 1 1 0 0 1 0 1

direct

Команда "переслать байт" выполняет загрузку аккумулятора A содержимым ячейки, 8-разрядный адрес которой определяется символическим именем direct в области резидентной памяти данных или в среде регистров специальных функций. При этом содержимое используемой ячейки не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

(A):=(direct)

;(A)=24H, (DPL)=3DH

MOV A, DPL ;(A)=3DH,(DPL)=3DH

MOV A,#data8

0 1 1 1 0 1 0 0

data8

Команда "переслать байт" выполняет загрузку аккумулятора A байтом данных data8, непосредственно указанным в команде, на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

(A):=data8

;(A)=81H

MOV A,#0FFH ;(A)=0FFH

MOV Rn, A ;где n=0-7

1 1 1 1 1 r r r

где rrrB=000B-111B

Команда "переслать байт" выполняет загрузку заданного регистра Rn выбранного банка содержимым аккумулятора A, при этом содержимое A не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

(Rn):=(A), где n=0-7

;(A)=55H, (R6)=93H

MOV R6,A ;(A)=55H, (R6)=55H

MOV Rn, direct ;где n=0-7

1 0 1 0 1 r r r

direct

где rrrB=000-111B

Команда "переслать байт" выполняет загрузку заданного регистра Rn выбранного банка содержимым ячейки, адрес которой определяется символическим именем direct в области резидентной памяти данных (РПД) или в среде регистров специальных функций. При этом содержимое используемой ячейки не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.

Алгоритм

Пример

(Rn):=(direct), где n=0-7

;(R5)=81H, в РПД (16H)=22H

MOV R5,16H ;(R5)=22H,

;в РПД (16H)=22H

MOV Rn,#data8 ;где n=0-7

0 1 1 1 1 r r r

data8

где rrrB=000-111B

Команда "переслать байт" выполняет загрузку заданного регистра Rn выбранного банка байтом данных, непосредственно указанным в команде и имеющим символическое имя data8. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22