Алгоритм | Пример |
если (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 |


