Дата последнего обновления файла 7.11.2009

Описание машинных команд микроконтроллеров семейства MCS-48 (1816ВЕ48)

ADD A, <байт-источник> - сложение.

Описание: складывает содержимое аккумулятора А с содержимым байта-источника. Результат операции помещается в аккумулятор. Флаг переноса C устанавливается при переносе из 7го разряда. Флаг вспомогательного переноса AC устанавливается при переносе из 3го разряда. При сложении знаковых чисел флаг переполнения OV устанавливается при превышении максимального положительного числа или при получении числа меньшего минимально возможного. Для команды сложения разрешены следующие режимы адресации байта - источника:

Пример: ADD A, R7

Количество байт: 1
Количество циклов: 1
Действие команды
:
(PC) = (PC) + 1
(A) = (A) + (Rn) , n=0,1,2,3,4,5,6,7
Машинный код:

0 1 1 0 1 r r r

Пример: ADD A, @R0

Количество байт: 1
Количество циклов: 1
Действие команды
:
(PC) = (PC) + 1
(A) = (A) + ((Ri)) , i=0,1
Машинный код:

0 1 1 0 0 0 0 i

Пример: ADD A, #38h

Количество байт: 2
Количество циклов: 1
Действие команды
:
(PC) = (PC) + 2
(A) = (A) + (date 8)
Машинный код:

0 0 0 0 0 0 1 1
i i i i i i i i

ADDC A, <байт-источник> - сложение с учетом переноса.

Описание: складывает содержимое аккумулятора А с содержимым байта-источника, к получившемуся результату прибавляется значение флага переноса. Результат операции помещается в аккумулятор. Флаг переноса C устанавливается при переносе из 7го разряда. Флаг вспомогательного переноса AC устанавливается при переносе из 3го разряда. При сложении знаковых чисел флаг переполнения OV устанавливается при превышении максимального положительного числа или при получении числа меньшего минимально возможного. Для команды сложения разрешены следующие режимы адресации байта - источника:

Пример: ADDC A, R3

Количество байт: 1
Количество циклов: 1
Действие команды
:
(PC) = (PC) + 1
(A) = (A) + (C) + (Rn) , n=0, : ,7
Машинный код:

0 1 1 1 1 r r r

Пример: ADDC A, @R0

Количество байт: 1
Количество циклов: 1
Действие команды
:
(PC) = (PC) + 1
(A) = (A) + (C) + ((Ri)) , i=0,1
Машинный код:

0 1 1 1 0 0 0 i

Пример: ADDC A, #100

Количество байт: 2
Количество циклов: 1
Действие команды
:
(PC) = (PC) + 2
(A) = (A) + (C) + (date 8)
Машинный код:

0 0 0 1 0 0 1 1
i i i i i i i i

ANL <байт приемник>,<байт источник> - команда "логическое И" для байтовых переменных.

Описание: выполняет операцию побитового "логического И" над указанными переменными и помещает результат в байт приемник. Команда не воздействует на флаги.

Для команды ANL с аккумулятором в качестве байта назначения разрешены следующие режимы адресации байта - источника:

Пример: ANL A, R3

Количество байт: 1
Количество циклов: 1
Действие команды
:
(PC) = (PC) + 1
(A) = (A) & (Rn) , n=0,1,2,3,4,5,6,7
Машинный код:

0 1 0 1 1 r r r

Пример: ANL A, @R0

Количество байт: 1
Количество циклов: 1
Действие команды
:
(PC) = (PC) + 1
(A) = (A) & ((Ri)) , i=0,1
Машинный код:

0 1 0 1 0 0 0 i

Пример: ANL A, #100

Количество байт: 2
Количество циклов: 1
Действие команды
:
(PC) = (PC) + 2
(A) = (A) & (date 8)
Машинный код:

0 1 0 1 0 0 1 1
i i i i i i i i

Для команды ANL возможна работа с портами и шиной данный в качестве приёмника информации. При этом источник информации использует непосредственную адресацию:

Пример: ANL BUS, #00010010B

Количество байт: 2
Количество циклов: 1
Действие команды
:
(PC) = (PC) + 2
(BUS) = (BUS) & (direct)
Машинный код:

1 0 0 1 1 0 0 0
d d d d d d d d

Пример: P1, #10000000b

Количество байт: 2
Количество циклов: 2
Действие команды
:
(PC) = (PC) + 2
(Pp) = (Pp) & (date 8), pp=1,2
Машинный код:

1 0 0 1 1 0 p p
d d d d d d d d

Примечание: при выполнении команды ANL над содержимым внешнего порта используется значение из внутреннего регистра, а не данные, присутствующие на выводах микросхемы!


ANLD P, A - "логическое И" порта внешней микросхемы расширителя портов и аккумулятора A.

Описание: выполняет операцию побитового "логического И" над содержимым порта внешней микросхемы расширителя портов и аккумулятора. Результат  помещается в порт. Команда не воздействует на флаги. При этом как источник, так и приемник информации использует неявную адресацию:

Пример: ANLD P6, A

Количество байт: 1
Количество циклов: 2
Действие команды
:
(PC) = (PC) + 2
(Pp) = (Pp) & (A), pp=4,5,6,7
Машинный код:

1 0 0 1 1 1 p p


CALL <addr 11> - вызов подпрограммы.

Описание: вызывает подпрограмму, размещенную по указанному адресу <addr 11>. Команда увеличивает содержимое счетчика команд на 2 и затем помещает полученный результат в стек. Кроме программного счетчика в стеке сохраняется содержимое регистра флагов PSW. После это содержимое указателя стека SP увеличивается на 1.  Команда не воздействует на флаги.

Пример: CALL 311h

Количество байт: 2
Количество циклов: 2
Действие команды
:
(PC) = (PC) + 2
((SP)) = (PC), (PSW4-7)
(SP) = (SP) + 1
(PC10-0) = адрес подпрограммы (метки)
Машинный код:

a10 a9 a8 1 0 1 0 0
a7 a6 a5 a4 a3 a2 a1 a0

CLR A - сброс аккумулятора

Описание: сбрасывает (записывает '0' во все биты аккумулятора). Команда не изменяет содержимое флагов. Команда использует неявную адресацию:

Пример: CLR A      ;Записывает в аккумулятор число 00h

Количество байт: 1
Количество циклов: 1
Действие команды
:
(PC) = (PC) + 1
(A) = 0
Машинный код:

0 0 1 0 0 1 1 1

CLR C - сбрасывает флаг переноса в нулевое значение.

Описание: сбрасывает (записывает '0') в флаг переноса. Команда использует неявную адресацию:

Пример: CLR C ;Записывает во флаг переноса '0'

Количество байт: 1
Количество циклов: 1
Действие команды
:
(PC) = (PC) + 1
(C) = 0
Машинный код:

1 0 0 1 0 1 1 1

CLR F0 - сбрасывает флаг пользователя F0 в нулевое значение.

Описание: сбрасывает (записывает '0') в флаг пользователя F0. Команда использует неявную адресацию:

Пример: CLR F0 ;Записывает во флаг пользователя F0 '0'

Количество байт: 1
Количество циклов: 1
Действие команды
:
(PC) = (PC) + 1
(F0) = 0
Машинный код:

1 0 0 0 0 1 0 1

CLR F1 - сбрасывает флаг пользователя F1 в нулевое значение.

Описание: сбрасывает (записывает '0') в флаг пользователя F1. Команда использует неявную адресацию:

Пример: CLR F1 ;Записывает во флаг пользователя F0 '0'

Количество байт: 1
Количество циклов: 1
Действие команды
:
(PC) = (PC) + 1
(F1) = 0
Машинный код:

1 0 1 0 0 1 0 1

CPL A - каждый бит аккумулятора инвертируется.

Описание: каждый бит аккумулятора инвертируется, т.е. если в каком-либо из восьми бит аккумулятора записана '1', то в этот бит записывается '0' и наоборот.

Пример: CPL A

Количество байт: 1
Количество циклов: 1
Действие команды
:
(PC) = (PC) + 1
(A) = not(A)
Машинный код:

0 0 1 1 0 1 1 1

CPL C - инвертируется флаг переноса 'C'.

Описание: флаг переноса 'C' инвертируется, т.е. если флаг переноса 'C' содержит '1', то в него записывается '0' и наоборот. Команда использует неявную адресацию:

Пример: CPL C

Количество байт: 1
Количество циклов: 1
Действие команды
:
(PC) = (PC) + 1
(C) = not(C)
Машинный код:

1 0 1 0 0 1 1 1

CPL F0 - инвертируется флаг пользователя F0 в нулевое значение.

Описание: флаг пользователя 'F0' инвертируется, т.е. если флаг пользователя 'F0' содержит '1', то в него записывается '0' и наоборот. Команда использует неявную адресацию:

Пример: CLR F0 ;Инвертирует флаг пользователя F0

Количество байт: 1
Количество циклов: 1
Действие команды:

(PC) = (PC) + 1
(F0) = 0
Машинный код:

1 0 0 0 0 1 0 1

CPL F1 - инвертируется флаг пользователя F1 в нулевое значение.

Описание: флаг пользователя 'F1' инвертируется, т.е. если флаг пользователя 'F1' содержит '1', то в него записывается '0' и наоборот. Команда использует неявную адресацию:

Пример: CLR F1 ;Инвертирует флаг пользователя F0

Количество байт: 1
Количество циклов: 1
Действие команды:

(PC) = (PC) + 1
(F1) = 0
Машинный код:

1 0 1 0 0 1 0 1

DA A - десятичная коррекция аккумулятора при сложении двоично-десятичных чисел.

Описание: команда десятичной коррекции позволяет вести сложение чисел, представленных в упакованном двоично-десятичном коде. Команда применяется после инструкций ADD или ADDC. Инструкции (команды) ADD или ADDC позволяют суммировать сразу две тетрады, расположенные в одном байте.

Если биты аккумулятора с 0 по 3 содержат число большее 9 (xxxx1010:xxxx1111) или флаг вспомогательного переноса AC содержит '1', то к аккумулятору прибавляется число 6 для того, чтобы получить правильную двоично-десятичную цифру в младшей тетраде.

Если старшие биты аккумулятора (с 4 по 7) содержат число большее 9 (1010xxxx :1111xxxx) или флаг переноса C содержит '1', то к аккумулятору прибавляется число 60h для того, чтобы получить правильную двоично-десятичную цифру в старшей тетраде.

Если в результате операции DA A возникнет перенос, то флаг переноса C будет установлен в 1. Единичный флаг переноса после операции DA A означает, что результат суммирования больше 100 и этим можно воспользоваться для суммирования многоразрядных двоично-десятичных чисел. Команда десятичной коррекции не воздействует на флаг переполнения OV.

Примечание: команда DA A не может преобразовать двоичное число из аккумулятора в двоично-десятичный вид или правильно скорректировать двоично-десятичное вычитание.

Пример: DA A

Количество байт: 1
Количество циклов: 1
Действие команды
:
(PC) = (PC) + 1
IF [[(A3-0) > 9] or [(AC) = 1]] THEN (A3-0) = (A3-0) + 6
AND
IF [[(A7-4) > 9] or [(C) = 1]] THEN (A7-4) = (A7-4) + 6
Машинный код:

0 1 0 1 0 1 1 1

DEC <байт> - производит вычитание 1 из указанного операнда.

Описание: операнд уменьшается на 1. Если первоначально в ячейке было записано значение 00h, то в нее заносится значение 0FFh. Команда не воздействует на флаги.

Для команды DEC разрешены следующие режимы адресации:

Пример: DEC A

Количество байт: 1
Количество циклов: 1
Действие команды
:
(PC) = (PC) + 1
(A) = (A) - 1
Машинный код:

0 0 0 0 0 1 1 1

Пример: DEC R3

Количество байт: 1
Количество циклов: 1
Действие команды
:
(PC) = (PC) + 1
(Rn) = (Rn) - 1, n=0,1,2,3,4,5,6,7
Машинный код:

1 1 0 0 1 r r r

DIS I - запрет внешнего прерывания.

Описание: запрещает прерывание выполнения программы по сигналу низкого уровня на внешней ножке INT.

Количество байт: 1
Количество циклов: 1
Действие команды
:
(PC) = (PC) + 1
Запретить прерывания от внешней ножки INT
Машинный код:

0 0 0 1 0 1 0 1

DIS TCNTI - запрет прерывания от таймера/счётчика.

Описание: запрещает прерывание выполнения программы по переполнению таймера/счётчика.

Количество байт: 1
Количество циклов: 1
Действие команды
:
(PC) = (PC) + 1
Запретить прерывания по переполнению таймера/счётчика
Машинный код:

0 0 1 1 0 1 0 1

DJNZ Rn,<адрес> - вычитание 1 из указанной ячейки и переход, если результат не равен 0.

Описание: вычитание 1 из указанной во втором байте команды ячейки памяти и переход к вычисляемому по второму байту команды адресу, если результат вычитания не равен 0. Если первоначально в ячейке памяти содержится '0', то в результате выполнения операции туда будет записано число '0FFH'. Команда не воздействует на флаги. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Для команды DJNZ используется регистровая адресация:

Пример: LABEL1: DJNZ R3 ,LABEL1;

Количество байт: 2
Количество циклов: 2
Действие команды
:
(PC) = (PC) + 2
(Rn) = (Rn) - 1, n=0,1,2,3,4,5,6,7
IF (Rn) < > 0, THEN (PC0..7) = Address
Машинный код:

1 1 1 0 1 r r r
A d d r e s s

EN I - разрешение внешнего прерывания.

Описание: разрешает прерывание выполнения программы по сигналу низкого уровня на внешней ножке INT.

Количество байт: 1
Количество циклов: 1
Действие команды
:
(PC) = (PC) + 1
Разрешить прерывания от внешней ножки INT
Машинный код:

0 0 0 0 0 1 0 1

EN TCNTI - разрешение прерываний от таймера/счётчика.

Описание: разрешает прерывание выполнения программы по переполнению таймера/счётчика.

Количество байт: 1
Количество циклов: 1
Действие команды:
(PC) = (PC) + 1
Разрешить прерывания от таймера/счётчика
Машинный код:

0 0 1 0 0 1 0 1

ENT0 CLK - разрешение выдачи синхросигнала на вывод T0.

Описание: разрешает выдачу синхросигнала на вывод микросхемы T0.

Количество байт: 1
Количество циклов: 1
Действие команды:
(PC) = (PC) + 1
Разрешить  выдачу синхросигнала на вывод T0
Машинный код:

0 1 1 1 0 1 0 1

IN Pp - пересылка данных из порта в аккумулятор.

Описание: копирует данные на выводах микросхемы в аккумулятор. Команда не воздействует на флаги и использует неявную адресацию.

Количество байт: 1
Количество циклов: 1
Действие команды:
(PC) = (PC) + 1
(A) = (Pp), p=1,2
Машинный код:

0 0 0 0 1 0 p p

INC <байт> - производит прибавление 1 к указанному операнду.

Описание: ячейка памяти адрес, которой указан во втором байте команды увеличивается на 1. Если первоначально в ячейке было записано значение 0FFh, то в нее заносится значение 00h. Команда не воздействует на флаги.

Для команды INC разрешены следующие режимы адресации байта - источника:

Пример: INC A

Количество байт: 1
Количество циклов: 1
Действие команды
:
(PC) = (PC) + 1
(A) = (A) + 1
Машинный код:

0 0 0 1 0 1 1 1

Пример: INC R3

Количество байт: 1
Количество циклов: 1
Действие команды
:
(PC) = (PC) + 1
(Rn) = (Rn) + 1, n=0,1,2,3,4,5,6,7
Машинный код:

0 0 0 1 1 r r r

Пример: INC @R0

Количество байт: 1
Количество циклов: 1
Действие команды
:
(PC) = (PC) + 1
((Ri)) = ((Ri)) + 1, i=0,1
Машинный код:

0 0 0 1 0 0 0 i

JB0 <адрес> - переход если нулевой бит аккумулятора установлен.

Описание: Если нулевой бит аккумулятора равен единице, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита.

Пример: JB0 LABEL1

Количество байт: 2
Количество циклов: 2
Действие команды
:
(PC) = (PC) + 2
IF (ACC.0) = 1 THEN (PC0..7) = Address
Машинный код:

0 0 0 1 0 0 1 0
A d d r e s s

JB1 <адрес> - переход если первый бит аккумулятора установлен.

Описание: Если первый бит аккумулятора равен единице, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита.

Пример: JB1 LABEL1

Количество байт: 2
Количество циклов: 2
Действие команды:
(PC) = (PC) + 2
IF (ACC.1) = 1 THEN (PC0..7) = Address
Машинный код:

0 0 1 1 0 0 1 0
A d d r e s s

JB2 <адрес> - переход если второй бит аккумулятора установлен.

Описание: Если второй бит аккумулятора равен единице, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита.

Пример: JB2 LABEL1

Количество байт: 2
Количество циклов: 2
Действие команды:
(PC) = (PC) + 2
IF (ACC.2) = 1 THEN (PC0..7) = Address
Машинный код:

0 1 0 1 0 0 1 0
A d d r e s s

JB3 <адрес> - переход если третий бит аккумулятора установлен.

Описание: Если третий бит аккумулятора равен единице, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита.

Пример: JB3 LABEL1

Количество байт: 2
Количество циклов: 2
Действие команды:
(PC) = (PC) + 2
IF (ACC.3) = 1 THEN (PC0..7) = Address
Машинный код:

0 1 1 1 0 0 1 0
A d d r e s s

JB4 <адрес> - переход если четвёртый бит аккумулятора установлен.

Описание: Если четвёртый бит аккумулятора равен единице, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита.

Пример: JB4 LABEL1

Количество байт: 2
Количество циклов: 2
Действие команды:
(PC) = (PC) + 2
IF (ACC.4) = 1 THEN (PC0..7) = Address
Машинный код:

1 0 0 1 0 0 1 0
A d d r e s s

JB5 <адрес> - переход если пятый бит аккумулятора установлен.

Описание: Если пятый бит аккумулятора равен единице, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита.

Пример: JB5 LABEL1

Количество байт: 2
Количество циклов: 2
Действие команды:

(PC) = (PC) + 2
IF (ACC.5) = 1 THEN (PC0..7) = Address
Машинный код:

1 0 1 1 0 0 1 0
A d d r e s s

JB6 <адрес> - переход если шестой бит аккумулятора установлен.

Описание: Если шестой бит аккумулятора равен единице, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита.

Пример: JB6 LABEL1

Количество байт: 2
Количество циклов: 2
Действие команды:

(PC) = (PC) + 2
IF (ACC.6) = 1 THEN (PC0..7) = Address
Машинный код:

1 1 0 1 0 0 1 0
A d d r e s s

JB7 <адрес> - переход если седьмой бит аккумулятора установлен.

Описание: Если седьмой бит аккумулятора равен единице, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита.

Пример: JB7 LABEL1

Количество байт: 2
Количество циклов: 2
Действие команды:
(PC) = (PC) + 2
IF (ACC.7) = 1 THEN (PC0..7) = Address
Машинный код:

1 1 1 1 0 0 1 0
A d d r e s s

JC <адрес> - переход, если бит переноса установлен.

Описание: Если бит переноса равен единице, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита.

Пример: JС LABEL1

Количество байт: 2
Количество циклов: 2
Действие команды
:
(PC) = (PC) + 2
IF (С) = 1 THEN (PC0..7) = Address
Машинный код:

1 1 1 1 0 1 1 0
A d d r e s s

JF0 <адрес> - переход, если бит переноса установлен.

Описание: Если флаг пользователя F0 равен единице, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита.

Пример: JF0 LABEL1

Количество байт: 2
Количество циклов: 2
Действие команды:
(PC) = (PC) + 2
IF (F0) = 1 THEN (PC0..7) = Address
Машинный код:

1 0 1 1 0 1 1 0
A d d r e s s

JF1 <адрес> - переход, если бит переноса установлен.

Описание: Если флаг пользователя F1 равен единице, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита.

Пример: JF0 LABEL1

Количество байт: 2
Количество циклов: 2
Действие команды:
(PC) = (PC) + 2
IF (F1) = 1 THEN (PC0..7) = Address
Машинный код:

0 1 1 1 0 1 1 0
A d d r e s s

JMP <addr 11> - переход на метку.

Описание: осуществляет переход на метку, размещенную по указанному адресу <addr 11>. Команда не воздействует на флаги.

Пример: JMP 311h

Количество байт: 2
Количество циклов: 2
Действие команды:
(PC10-0) = адрес метки
Машинный код:

a10 a9 a8 0 0 1 0 0
a7 a6 a5 a4 a3 a2 a1 a0

JMPP @A - косвенный переход в текущей странице.

Описание: осуществляет переход на адрес, содержащийся в ячейке памяти программ на которую указывает содержимое аккумулятора. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с содержимым аккумулятора. Таким образом осуществляется переход в пределах страницы размером в 256 байт. Команда не воздействует на флаги и не изменяет содержимое аккумулятора.

Пример: JMPP @A

Количество байт: 1
Количество циклов: 2
Действие команды:
(PC7-0) = ((A))
Машинный код:

a10 a9 a8 0 0 1 0 0
a7 a6 a5 a4 a3 a2 a1 a0

JNC <адрес> - переход, если бит переноса сброшен.

Описание: Если бит переноса равен нулю, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита.

Пример: JNС     LABEL1

Количество байт: 2
Количество циклов: 2
Действие команды
:
(PC) = (PC) + 2
IF (С) = 0 THEN (PC0..7) = Address
Машинный код:

1 1 1 0 0 1 1 0
A d d r e s s

Понравился материал? Поделись с друзьями!


Литература:

  1. В.В. Сташин А.В. Урусов О.Ф. Мологонцева Е. П. Проектирование цифровых устройств на однокристальных микроконтроллерах 1990.

Вместе со статьей "Описание машинных команд микроконтроллеров семейства MCS-48 (1816ВЕ48)" читают:

Состав семейства MCS-48
http://digteh.ru/MCS48/tablms.php


Автор Микушин А. В. All rights reserved. 2001 ... 2023

Предыдущие версии сайта:
http://neic.nsk.su/~mavr
http://digital.sibsutis.ru/

Поиск по сайту сервисом Яндекс
Поиск по сайту сервисом ГУГЛ
Об авторе:
к.т.н., доц., Александр Владимирович Микушин

Кандидат технических наук, доцент кафедры САПР СибГУТИ. Выпускник факультета радиосвязи и радиовещания (1982) Новосибирского электротехнического института связи (НЭИС).

А.В.Микушин длительное время проработал ведущим инженером в научно исследовательском секторе НЭИС, конструкторско технологическом центре "Сигнал", Научно производственной фирме "Булат". В процессе этой деятельности он внёс вклад в разработку систем радионавигации, радиосвязи и транкинговой связи.

Научные исследования внедрены в аппаратуре радинавигационной системы Loran-C, комплексов мобильной и транкинговой связи "Сигнал-201", авиационной системы передачи данных "Орлан-СТД", отечественном развитии системы SmarTrunkII и радиостанций специального назначения.

А.В.Микушин является автором 130 научных и научно-методических работ, в том числе 21 монография и 26 учебников и учебных пособий.

Top.Mail.Ru

Яндекс.Метрика