Курс лекций - Микропроцессоры

если сигнал на ножке запроса


JNI <адрес> - переход, если сигнал на ножке запроса прерывания равен нулю.
Описание: Если на ножке запроса прерывания сигнал равен нулю, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита.
Пример: JNI     LABEL1
Количество байт: 2
Количество циклов: 2
Действие команды:
(PC) = (PC) + 2
IF (INT) = 0 THEN (PC0..7) = Address
Машинный код:
1 0 0 0 0 1 1 0 A d d r e s s JNT0 <адрес> - переход, если сигнал ножке микроконтроллера T0 равен нулю.
Описание: Если на ножке микроконтроллера T0 сигнал равен нулю, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита.
Пример: JNT0     LABEL1


Количество байт: 2
Количество циклов: 2
Действие команды:
(PC) = (PC) + 2
IF (T0) = 0 THEN (PC0..7) = Address
Машинный код:
0 0 1 0 0 1 1 0 A d d r e s s JNT1 <адрес> - переход, если бит переноса сброшен.
Описание: Если на ножке микроконтроллера T1 сигнал равен нулю, то производится переход к указанному во втором байте команды адресу.
В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги.
Пример: JNT1     LABEL1
Количество байт: 2
Количество циклов: 2
Действие команды:
(PC) = (PC) + 2
IF (T1) = 0 THEN (PC0..7) = Address
Машинный код:
0 1 0 0 0 1 1 0 A d d r e s s JNZ <адрес> - переход, если содержимое аккумулятора не равно нулю.
Описание: Если любой бит аккумулятора равен единице, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое аккумулятора.
Пример: JNZ     LABEL1
Количество байт: 2
Количество циклов: 2
Действие команды:
(PC) = (PC) + 2
IF (A) <> 0 THEN (PC0..7) = Address
Машинный код:
1 0 0 1 0 1 1 0 A d d r e s s JTF <адрес> - переход, если содержимое аккумулятора не равно нулю.
Описание: Если флаг переполнения таймера установлен, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт.


Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги.
Пример: JTF LABEL1
Количество байт: 2
Количество циклов: 2
Действие команды:
(PC) = (PC) + 2
IF (A) <> 0 THEN (PC0..7) = Address
Машинный код:
0 0 0 1 0 1 1 0 A d d r e s s JT0 <адрес> - переход, если бит переноса сброшен.
Описание: Если на ножке микроконтроллера T0 сигнал равен единице, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита.
Пример: JT0 LABEL1
Количество байт: 2
Количество циклов: 2
Действие команды:
(PC) = (PC) + 2
IF (T0) = 1 THEN (PC0..7) = Address
Машинный код:
0 0 1 1 0 1 1 0 A d d r e s s JT1 <адрес> - переход, если бит переноса сброшен.
Описание: Если на ножке микроконтроллера T1 сигнал равен единице, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита.
Пример: JT1 LABEL1
Количество байт: 2
Количество циклов: 2
Действие команды:


(PC) = (PC) + 2
IF (T1) = 1 THEN (PC0..7) = Address
Машинный код:
0 1 0 1 0 1 1 0 A d d r e s s JZ <адрес> - переход, если содержимое аккумулятора не равно нулю.
Описание: Если  все биты аккумулятора равны нулю, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое аккумулятора.
Пример: JZ     LABEL1
Количество байт: 2
Количество циклов: 2
Действие команды:
(PC) = (PC) + 2
IF (A) = 0 THEN (PC0..7) = Address
Машинный код:
1 1 0 0 0 1 1 0 A d d r e s s MOV <приемник>,<источник> - скопировать байтовую переменную.
Описание: переменная, указанная во втором операнде, копируется в ячейку, указываемую первым операндом. Байт источник не изменяется. Другие регистры и флаги не изменяются. Для каждого операнда используется свой вид адресации.
Команда допускает следующие виды адресации:
первый операнд - , второй операнд - адресация;
Пример: MOV A, PSW
Количество байт: 1
Количество циклов: 1
Действие команды:
(PC) = (PC) + 1
(A) = (PSW)
Машинный код:
1 1 0 0 0 1 1 1 Пример: MOV A, T
Количество байт: 1
Количество циклов: 1
Действие команды:
(PC) = (PC) + 1
(A) = (T)
Машинный код:
0 1 0 0 0 0 1 0 Пример: MOV PSW, A
Количество байт: 1
Количество циклов: 1
Действие команды:
(PC) = (PC) + 1
(PSW) = (A)
Машинный код:
1 1 0 1 0 1 1 1 Пример: MOV T, A
Количество байт: 1
Количество циклов: 1
Действие команды:
(PC) = (PC) + 1
(T) = (A)
Машинный код:
0 1 1 0 0 0 1 0 первый операнд - , второй операнд - адресация;


Пример: MOV A, R3
Количество байт: 1
Количество циклов: 1
Действие команды:
(PC) = (PC) + 1
(A) = (Rn) , n=0,1,2,3,4,5,6,7
Машинный код:
1 1 1 1 1 r r r первый операнд - , второй операнд - адресация;
Пример: MOV A, @R0
Количество байт: 1
Количество циклов: 1
Действие команды:
(PC) = (PC) + 1
(A) = ((Ri)) , i=0,1
Машинный код:
1 1 1 1 0 0 0 i первый операнд - , второй операнд - адресация;
Пример: MOV A, #38h
Количество байт: 2
Количество циклов: 1
Действие команды:
(PC) = (PC) + 2
(A) = (data 8)
Машинный код:
0 0 1 0 0 0 1 1 i i i i i i i i первый операнд - , второй операнд - адресация;
Пример: MOV R3, A
Количество байт: 1
Количество циклов: 1
Действие команды:
(PC) = (PC) + 1
(Rn) = (A) , n=0,1,2,3,4,5,6,7
Машинный код:
1 0 1 0 1 r r r первый операнд - , второй операнд - адресация;
Пример: MOV R3, #38h
Количество байт: 2
Количество циклов: 1
Действие команды:
(PC) = (PC) + 2
(Rn) = (data 8) , n=0,1,2,3,4,5,6,7
Машинный код:
1 0 1 1 1 r r r i i i i i i i i первый операнд - , второй операнд - адресация;
Пример: MOV @R0, A
Количество байт: 1
Количество циклов: 1
Действие команды:
(PC) = (PC) + 1
((Ri)) = (A), i=0,1
Машинный код:
1 0 1 0 0 0 0 i первый операнд - , второй операнд - адресация;
Пример: MOV @R0, #80
Количество байт: 2
Количество циклов: 1
Действие команды:
(PC) = (PC) + 2
((Rn)) = (data 8) , n=0,1,2,3,4,5,6,7
Машинный код:
1 0 1 1 0 0 0 i i i i i i i i i MOVD A,<источник> - считать порт микросхемы расширителя портов.
Описание: содержимое порта расширителя портов копируется в младшую тетраду аккумулятора. Старшая тетрада обнуляется. Команда не воздействует на флаги. В обоих операндах используется адресация.
Пример: MOVD A, P4
Количество байт: 2
Количество циклов: 1
Действие команды:
(PC) = (PC) + 2
(A) = (Pp), p=4,5,6,7
Машинный код:
0 0 0 0 1 1 p p MOVP A, @A - переслать байт из текущей страницы памяти программ в аккумулятор.
Описание: загружает аккумулятор константой из памяти программ.


Адрес считываемого байта задаётся исходным содержимым аккумулятора. Команда не воздействует на флаги.
Пример: MOVP A, @A
Количество байт: 1
Количество циклов: 2
Действие команды:
(PC0..PC7) = (A)
(A) = ((PC))
Машинный код:
1 0 1 0 0 0 1 1 MOVP3 A, @A - переслать байт из третьей страницы памяти программ в аккумулятор.
Описание: загружает аккумулятор константой из памяти программ. Адрес считываемого байта задаётся исходным содержимым аккумулятора. Команда не воздействует на флаги.
Пример: MOVP3 A, @A
Количество байт: 1
Количество циклов: 2
Действие команды:
(PC0..PC7) = (A)
(PC8..PC11) = 0011
(A) = ((PC))
Машинный код:
1 1 1 0 0 0 1 1 MOVX <приемник>,<источник> - переслать байтовую переменную во внешнюю память (из внешней памяти)
Описание: пересылает данные между аккумулятором и байтом внешней памяти.
В первом случае регистр R0 или R1 текущего банка регистров обеспечивает 8- битный адрес, который мультиплексируется с данными на выводах порта P0.
первый операнд - , второй операнд - адресация;
Пример: MOVX A, @R1 ;Скопировать данные из внешней памяти данных в аккумулятор
Количество байт: 1
Количество циклов: 2
Действие команды:
(PC) = (PC) + 1
(A) = ((Ri)), i=0,1
Машинный код:
1 0 0 0 0 0 0 i первый операнд - , второй операнд - адресация;
Пример: MOVX @R0, A ;Скопировать данные из аккумулятора во внешнюю память
Количество байт: 1
Количество циклов: 2
Действие команды:
(PC) = (PC) + 1
((Ri)) = (A), i=0,1
Машинный код:
1 0 0 1 0 0 0 i NOP - нет операции
Описание: Кроме программного счетчика не изменяет ни одного регистра, на флаги не воздействует.
Пример: NOP
Количество байт: 1
Количество циклов: 1
Действие команды:
(PC) = (PC) + 1
Машинный код:
0 0 0 0 0 0 0 0 ORL <приемник>,<источник> - "логическое ИЛИ" для байтовых переменных
Описание: выполняет операцию побитового "логического ИЛИ" между указанными переменными. Результат сохраняется в приемнике. Команда не воздействует на флаги.


Для команды ORL с аккумулятором в качестве байта назначения разрешены следующие режимы адресации байта - источника:
первый операнд - , второй операнд - адресация;
Пример: ORL A, R3
Количество байт: 1
Количество циклов: 1
Действие команды:
(PC) = (PC) + 1
(A) = (A) V (Rn) , n=0,1,2,3,4,5,6,7
Машинный код:
0 1 0 0 1 r r r первый операнд - , второй операнд - адресация;
Пример: ORL A, @R0
Количество байт: 1
Количество циклов: 1
Действие команды:
(PC) = (PC) + 1
(A) = (A) V ((Ri)), i=0,1
Машинный код:
0 1 0 0 0 0 0 i первый операнд - , второй операнд - адресация;
Пример: ORL A, #100
Количество байт: 2
Количество циклов: 2
Действие команды:
(PC) = (PC) + 2
(A) = (A) V (date 8)
Машинный код:
0 1 0 0 0 0 1 1 i i i i i i i i Пример: ORL BUS, #100
Количество байт: 2
Количество циклов: 2
Действие команды:
(PC) = (PC) + 2
(BUS) = (BUS) V (date 8)
Машинный код:
1 0 0 1 1 0 0 0 i i i i i i i i Пример: ORL P1, #10010000b
Количество байт: 2
Количество циклов: 2
Действие команды:
(PC) = (PC) + 2
(Pp) = (Pp) V (date 8), p=1,2
Машинный код:
1 0 0 1 1 0 p p i i i i i i i i Примечание: при выполнении команды ORL над содержимым внешнего порта используется значение из внутреннего регистра, а не данные, присутствующие на выводах микросхемы!
ORLD Pp, A - логическое ИЛИ между портом расширителя и аккумулятором.
Описание: выполняет операцию побитового "логического ИЛИ" между портом микросхемы расширителя портов и аккумулятором. Результат сохраняется в порту. Команда не воздействует на флаги.
Пример: ORLD P5, A
Количество байт: 1
Количество циклов: 2
Действие команды:
(PC) = (PC) + 1
(Pp) = (Pp) V (A0...A3)
Машинный код:
1 0 0 0 1 1 p p OUTL BUS, A - стробируемый вывод данных из аккумулятора в порт BUS.
Описание: осуществляет стробируемый вывод данных из аккумулятора в порт BUS. Команда не воздействует на флаги.
Пример: OUTL BUS, A
Количество байт: 1
Количество циклов: 2
Действие команды:
(PC) = (PC) + 1
(BUS) = (A)


Машинный код:
0 0 0 0 0 0 1 0 OUTL Pp, A - стробируемый вывод данных из аккумулятора в порт.
Описание: осуществляет вывод данных через порт. Команда не воздействует на флаги.
Пример: OUTL Pp, A
Количество байт: 1
Количество циклов: 2
Действие команды:
(PC) = (PC) + 1
(Pp) = (A), p=1,2
Машинный код:
0 0 1 1 1 0 p p RET - возврат из подпрограммы.
Описание: последовательно выгружает старший и младший байты счетчика команд из стека, уменьшая содержимое указателя стека на 1. Выполнение программы продолжается с нового, только что загруженного в счетчик команд адреса. Команда не воздействует на флаги.
Пример: RET
Количество байт: 1
Количество циклов: 2
Действие команды:
(SP) = (SP) - 1
(PC) = ((SP))
Машинный код:
1 0 0 0 0 0 1 1 RETR - возврат из подпрограммы обслуживания прерывания и восстановление слова состояния программы.
Описание: последовательно выгружает старший и младший байты счетчика команд из стека, уменьшая содержимое указателя стека на 1. Кроме того, команда восстанавливает состояние логики прерываний, разрешая обработку следующего прерывания. Выполнение программы продолжается с того же адреса, что был в программном счетчике (PC) до начала обработки прерывания (следующий за командой, во время выполнения которой был обнаружен запрос на прерывание). Команда не воздействует на флаги. Если к этому моменту обнаруживается новый запрос на прерывание, то до нового вызова подпрограммы обслуживания прерывания выполняется одна команда из основной программы.
Пример: RETR
Количество байт: 1
Количество циклов: 2
Действие команды:
(SP) = (SP) - 1
(PC) = ((SP))
(PSW4...PSW7) = ((SP))
Машинный код:
1 0 0 1 0 0 1 1 RL A - сдвиг содержимого аккумулятора влево.
Описание: сдвигает восемь бит аккумулятора на один бит влево, бит 7 засылается на место бита 0. Команда не воздействует на флаги.
Пример: RL A
Количество байт: 1
Количество циклов: 1
Действие команды:
(An+1) = (An) n=0..6
(A0) = (A7)
Машинный код:
1 1 1 0 0 1 1 1 RLC A - сдвиг содержимого аккумулятора влево через флаг переноса.


Описание: сдвигает восемь бит аккумулятора и флаг переноса на один бит влево. Содержимое флага переноса помещается на место бита 0 аккумулятора, а содержимое бита 7 аккумулятора переписывается во флаг переноса. На остальные флаги команда не воздействует.
Пример: RLC A
Количество байт: 1
Количество циклов: 1
Действие команды:
(An+1) = (An) n=0..6
(A0) = (C)
(C) = (A7)
Машинный код:
1 1 1 1 0 1 1 1 RR A - сдвиг содержимого аккумулятора вправо.
Описание: сдвигает восемь бит аккумулятора на один бит вправо, бит 0 засылается на место бита 7. Команда не воздействует на флаги.
Пример: RR A
Количество байт: 1
Количество циклов: 1
Действие команды:
(An) = (An+1) n=0..6
(A7) = (A0)
Машинный код:
0 1 1 1 0 1 1 1 RRC A - сдвиг содержимого аккумулятора через флаг переноса.
Описание: сдвигает восемь бит аккумулятора и флаг переноса на один бит вправо. Содержимое флага переноса помещается на место бита 7 аккумулятора, а содержимое бита 0 аккумулятора переписывается во флаг переноса. На остальные флаги команда не воздействует.
Пример: RRC A
Количество байт: 1
Количество циклов: 1
Действие команды:
(An) = (An+1) n=0..6
(A7) = (C)
(C) = (A0)
Машинный код:
0 1 1 0 0 1 1 1 SEL MB0 - выбор нулевого банка памяти программ.
Описание: сбрасывает старший бит счетчика команд в нулевое состояние. Команда используется для выбора нулевого банка памяти программ.
Пример: SEL MB0
Количество байт: 1
Количество циклов: 1
Действие команды:
(PC) = (PC) + 1
(PC11) = 0
Машинный код:
1 1 1 0 0 1 0 1 SEL MB1 - выбор первого банка памяти программ.
Описание: устанавливает старший бит счетчика команд в 1. Команда используется для выбора первого банка памяти программ.
Пример: SEL MB0
Количество байт: 1
Количество циклов: 1
Действие команды:
(PC) = (PC) + 1
(PC11) = 1
Машинный код:
1 1 1 1 0 1 0 1 SEL RB0 - выбор нулевого банка памяти программ.
Описание: сбрасывает флаг выбора банков в нулевое состояние. Команда используется для выбора нулевого банка регистров.


Пример: SEL RB0
Количество байт: 1
Количество циклов: 1
Действие команды:
(PC) = (PC) + 1
(BS) = 0
Машинный код:
1 1 0 0 0 1 0 1 SEL RB1 - выбор нулевого банка памяти программ.
Описание: устанавливает флаг выбора банков в 1. Команда используется для выбора первого банка регистров.
Пример: SEL RB0
Количество байт: 1
Количество циклов: 1
Действие команды:
(PC) = (PC) + 1
(BS) = 1
Машинный код:
1 1 0 1 0 1 0 1 STOP TCNT - остановить таймер-счетчик.
Описание: прекращает подачу импульсов на вход таймера-счетчика.
Пример: STOP TCNT
Количество байт: 1
Количество циклов: 1
Действие команды:
(PC) = (PC) + 1
остановить таймер-счетчик
Машинный код:
0 1 1 0 0 1 0 1 STRT CNT - запустить счетчик.
Описание: разрешает подачу импульсов со входа микроконтроллера T1 на вход таймера-счетчика.
Пример: STRT CNT
Количество байт: 1
Количество циклов: 1
Действие команды:
(PC) = (PC) + 1
запустить счетчик
Машинный код:
0 1 0 0 0 1 0 1 STRT T - запустить таймер.
Описание: разрешает подачу импульсов с выхода предделителя на вход таймера-счетчика.
Пример: STRT CNT
Количество байт: 1
Количество циклов: 1
Действие команды:
(PC) = (PC) + 1
запустить таймер
Машинный код:
0 1 0 1 0 1 0 1 SWAP A - обмен тетрадами внутри аккумулятора.
Описание: команда осуществляет обмен между младшей (биты 0..3) и старшей (биты 4..7) тетрадами аккумулятора. (Тетрада - это четырехбитная переменная). Команду можно интерпретировать как циклический сдвиг на четыре бита. Команда не воздействует на флаги.
Пример: SWAP A
Количество байт: 1
Количество циклов: 1
Действие команды:
(PC) = (PC) + 1
(A3..A0) <=> (A7..A4)
Машинный код:
0 1 0 0 0 1 1 1 XCH A,<байт> - обмен содержимого аккумулятора с переменной байтом.
Описание: команда загружает аккумулятор содержимым указанной переменной, в то же самое время первоначальное содержимое аккумулятора заносится по указанному адресу. Команда не воздействует на флаги.
В команде допускается следующие виды адресации: первый операнд - , второй операнд - адресация;


Пример: XCH A, R7
Количество байт: 1
Количество циклов: 1
Действие команды:
(PC) = (PC) + 1
(A) <=> (Rn) , n=0,1,2,3,4,5,6,7
Машинный код:
0 0 1 0 1 r r r первый операнд - , второй операнд - адресация;
Пример: XCH A, @R0
Количество байт: 1
Количество циклов: 1
Действие команды:
(PC)= (PC) + 1
(A) <=> ((Ri)) , i=0,1
Машинный код:
0 0 1 0 0 0 0 i XCHD A, @Ri - обмен цифры.
Описание: команда осуществляет обмен между младшей (биты 0..3) тетрадой (тетрада это четырехбитная переменная) аккумулятора, где обычно хранится двоично-десятичная цифра с тетрадой ячейки внутреннего ОЗУ. Используется косвенно регистровая адресация. Старшие тетрады (биты 4..7) обоих операндов не изменяются. Команда не воздействует на флаги.
Пример: XCHD A, @R0
Количество байт: 1
Количество циклов: 1
Действие команды:
(PC) = (PC) + 1
(A3..A0) <=> ((Ri3..Ri0)) , i=0,1
Машинный код:
0 0 1 1 0 0 0 i XRL <байт приемник>,<байт источник> - исключающее ИЛИ для переменных байтов.
Описание: выполняет операцию побитового "исключающее логического ИЛИ" между указанными переменными. Результат сохраняется в приемнике. Команда не воздействует на флаги.
Для команды XRL с аккумулятором в качестве байта назначения разрешены следующие режимы адресации:
первый операнд - , второй операнд - адресация;
Пример: XRL A, R3
Количество байт: 1
Количество циклов: 1
Действие команды:
(PC) = (PC) + 1
(A) = (A) xor (Rn) , n=0,1,2,3,4,5,6,7
Машинный код:
1 1 0 1 1 r r r
первый операнд - , второй операнд - адресация;
Пример: XRL A, @R0
Количество байт: 1
Количество циклов: 1
Действие команды:
(PC) = (PC) + 1
(A) = (A) xor ((Ri)) , i=0,1
Машинный код:
1 1 0 1 0 0 0 i
первый операнд - , второй операнд - адресация;
Пример: XRL A, #100
Количество байт: 2
Количество циклов: 1
Действие команды:
(PC)= (PC) + 2
(A) = (A) xor (date 8)
Машинный код:
1 1 0 1 0 0 1 1
i i i i i i i i
[ ] [ ] [ ]

Содержание раздела