русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Команда CPL A


Дата добавления: 2015-08-31; просмотров: 1634; Нарушение авторских прав


Команда "инверсия аккумулятора" каждый бит аккумулятора инвертирует (изменяет на противоположный). Биты, содержащие "единицы", после этой команды будут содержать "нули", и наоборот. На флаги эта операция не влияет.

 

Ассемблер: CPL A
Код:
1 1 1 1 0 1 0 0
 
Время: 1 цикл
Алгоритм: (A) : = /(A)
Пример: ;(A)=65H (01100101B) CPL A ;(A)=9AH (10011010B)
           

 

 

Команда CPL <bit>

Команда "инверсия бита" (изменяет на противоположное значение) указанный бит. Бит, который был "единицей", изменяется в "нуль" и наоборот. Команда CPL может работать с флагом переноса или с любым прямо адресуемым битом. На другие флаги команда не влияет.

Ассемблер: CPL <bit>
Код:
1 0 1 1 0 0 1 0
bit address
 
Время: 1 цикл
Алгоритм: (bit) : = /(bit)
Пример: ;(P1)=39H (00111001B) CPL P1.1 CPL P1.3 ;(P1)=33H (00110011B)  
Ассемблер: CPL C
Код:
1 0 1 1 0 0 1 1
 
Время: 1 цикл
Алгоритм:   C) : = /(C)
Пример: ;(C)=0, (AC)=1, (OV)=0 CPL C ;(C)=1, (AC)=1, (OV)=0  

Примечание. Если эта команда используется для изменения информации на выходе порта, значение, используемое как исходные данные, считывается из "защелки" порта, а не с выводов БИС.

 

 

Команда DA A

Команда десятичная коррекция аккумулятора для сложения" упорядочивает 8-битовую величину в аккумуляторе после выполненной ранее команды сложения двух переменных (каждая в упакованном двоично-десятичном формате). Для выполнения сложения может использоватться любая из типов команд ADD или ADDC. Если значение битов 3-0 аккумулятора (А) превышает 9 (ХХХХ 1010-ХХХХ 1111) или, если флаг АС равен "1", то к содержимому (А) прибавляется 06, получая соответствующую двоично-десятичную цифру в младшем полубайте. Это внутреннее побитовое сложение устанавливает флаг переноса, если перенос из поля младших четырех бит распространяется через все старшие биты, а в противном случае - не изменяет флага переноса. Если после этого флаг переноса равен "1", или значение четырех старших бит (7-4) превышает 9 (1010 ХХХХ - 1111 ХХХХ), значения этих старших бит увеличивается на 6, создавая соответствующую двоично-десятичную цифру в старшем полубайте. И снова при этом флаг переноса устанавливается, если перенос получается из старших битов, но не изменяется в противном случае. Таким образом, флаг переноса указывает на то, что сумма двух исходных двоично-десятичных переменных больше чем 100. Эта команда выполняет десятичное преобразование с помощью сложения 06, 60, 66 с содержимым аккумулятора в зависимости от начального состояния аккумулятора и слова состояния программы (PSW).



Ассемблер: DA A
Код:
1 1 0 1 0 1 0 0
 
Время: 1 цикл
Алгоритм: если ((A[3-0])>9 или (AC)=1), то A[3-0]:=A[3-0]+6 если ((A[7-4])>9 или (С)=1), то А[7-4]:=A[7-4]+6
Пример: a) ;(A)=56H, (R3)=67H, (C)=1 ADDC A,R3 DA A ;(A)=24H, (R3)=67H, (C)=1   b) ;(A)=30H, (C)=0 ADD A, #99H DA A ;(A)=29, (C)=1  

Примечание. Команда DA A не может просто преобразовать шестнадцатеричное значение в аккумуляторе в двоично-десятичное представление и не применяется, например, для десятичного вычитания.

 

 

Команда DEC <байт>

Команда "декремент" производит вычитание "1" из указанного опеанда. Начальное значение 00Н перейдет в 0FFH. Команда DEC не влияет на флаги. Этой командой допускается четыре режима адресации операнда:

  1. к аккумулятору
  2. регистровый
  3. прямой
  4. косвенно-регистровый

Рассмотрим их.

Ассемблер: DEC A
Код:
0 0 0 1 0 1 0 0
 
Время: 1 цикл
Алгоритм: (A) : =(A)-1
Пример: ;(A)=11H, (C)=1, (AC)=1 DEC A ;(A)=10H, (C)=1, (AC)=1  
Ассемблер: DEC Rn ; где n=0-7
Код:
0 0 0 1 1 rrr
где rrr=000-111  
Время: 1 цикл
Алгоритм: (Rn) :=(Rn)-1
Пример: ;(R1)=7FH, ;(ОЗУ[7F])=40H, (ОЗУ[7F])=00H DEC @R1 DEC R1 DEC @R1 ;(R1)=7EH, ;(ОЗУ[7F])=3FH, (ОЗУ[7F])=FFH  
Ассемблер: DEC <direct>
Код:
0 0 0 1 0 1 0 1
direct address
 
Время: 1 цикл
Алгоритм: (direct) : = (direct)-1
Пример: ;(SCON)=A0H, (C)=1, (AC)=1 DEC SCON ;(SCON)=9FH, (C)=1, (AC)=1
Ассемблер: DEC @Ri ; где i=0,1
Код:
0 0 0 1 0 1 1 i
 
Время: 1 цикл
Алгоритм: ((Ri) :=((Ri)-1)
Пример: ;(R1)=7FH, ;(ОЗУ[7F])=40H, (ОЗУ[7F])=00H DEC @R1 DEC R1 DEC @R1 ;(R1)=7EH, ;(ОЗУ[7F])=3FH, (ОЗУ[7F])=FFH  
       

Примечание. Если эта команда используется для изменения информации на выходе порта, значение, используемое как исходные данные, считывается из "защелки" порта, а не с выводов БИС.

Команда DIV AB

Команда "деление" делит 8-битовое целое без знака из аккумулятора А на 8-битовое целое без знака в регистре В. Аккумулятору присваивается целая часть частного (старшие разряды), а регистру В - остаток. Флаги переноса (С) и переполнения (OV) сбрасываются. Если (А)<(В), то флаг дополнительного переноса (АС) не сбрасывается. Флаг переноса сбрасывается в любом случае.

1.

Ассемблер: DIV AB
Код:
1 0 0 0 0 1 0 0
 
Время: 4 циклa
Алгоритм: (A):=((A)/(B))[15-8], (B):=((A)/(B))[7-0]
Пример: Пусть аккумулятор содержит число 251 (0FBH или 11111011B), а регистр В - число 18 (12H или 00010010В). После выполнения команды DIV AB в аккумуляторе будет число 13 (0DH или 00001101В), а в регистре В - число 17 (11Н или 00010001В), т.к. 251=(13*18)+17. Флаги С и OV будут сброшены.  

Примечание. Если В содержит 00, то после команды DIV содержимое аккумулятора А и регистра В будут не определены. Флаг переноса сбрасывается, а флаг переполнения устанавливается в "1

Команда DJNZ <байт>, <смещение>

Команда "декремент и переход, если не равно нулю" выполняет вычитание "1" из указанной ячейки и осуществляет ветвление по вычисляемому адресу, если результат не равен нулю. Начальное значение 00Н перейдет в 0FFH. Адрес перехода (ветвления) вычисляется сложением значения смещения (со знаком), указанного в последнем байте команды, с содержимым счетчика команд, увеличенным на длину команды DJNZ. На флаги эта команда не влияет и допускает следующие режимы адресации:

  1. регистровый
  2. прямой
Ассемблер: DJNZ Rn, <метка> ; где n=0-7
Код:
1 1 0 1 1 rrr
re18
 
Время: 2 циклa
Алгоритм: (PC) : = (PC)+2, (Rn) : = (Rn)-1, если ((Rn)>0 или (Rn)<0), то (PC):=(PC)+<re18>
Пример: ;(R2)=08H, (P1)=FFH (11111111B) LAB4: CPL P1.7 DJNZ R2,LAB4 ;(R2)={07-00} ;Эта последовательность команд переключает Р1.7 ;восемь раз и приводит к появлению четырех импульсов ;на выводе БИС, соответствующем биту Р1.7  
Ассемблер: DJNZ <direct>, <метка>
Код:
1 1 0 1 0 1 0 1
direct address
re18
 
Время: 2 циклa
Алгоритм: (PC) : = (PC)+3, (direct) : = (direct)-1, если ((вшкусе)>0 или (direct)<0), то (PC) : = (PC)+<re18>
Пример: ;(ОЗУ[40])=01H, (ОЗУ[50])=80H, ;(ОЗУ[60])=25H DJNZ 40H, LAB1 ;(ОЗУ[40]):=00H DJNZ 50H, LAB2 ;(ОЗУ[50]):=7FH DJNZ 60H, LAB3 ;(ОЗУ[60]):=25H ... LAB1: CLR A ... LAB2: DEC R1 ;осуществился переход на ;метку LAB2  

Примечание. Если команда DJNZ используется для изменения выхода порта, значение, используемое как операнд, считывается из "защелки" порта, а не с выводов БИС.

Команда INC <байт>

Команда "инкремент" выполняет прибавление "1" к указанной переменной и влияет на флаги. Начальное значение 0FFH перейдет в 00Н. Эта команда допускает четыре режима адресации:

 

  1. к аккумулятору
  2. регистровый
  3. прямой
  4. косвенно-регистровый

Рассмотрим их.

Ассемблер: INC A
Код:
0 0 0 0 0 1 0 0
 
Время: 1 цикл
Алгоритм: (A) : =(A)+1
Пример: ;(A)=1FH, (AC)=0 INC A ;(A)=20H, (AC)=0  
Ассемблер: INC Rn ; где n=0-7
Код:
0 0 0 0 1 rrr
где rrr=000-111  
Время: 1 цикл
Алгоритм: (Rn) :=(Rn)+1
Пример: ;(R4)=FFH, (C)=0, (AC)=0 INC R4 ;(R4)=00H, (C)=0, (AC)=0  
Ассемблер: INC <direct>
Код:
0 0 0 0 0 1 0 1
direct address
 
Время: 1 цикл
Алгоритм: (direct) : = (direct)+1
Пример: ;(ОЗУ[43])=22H INC 43H ;(ОЗУ[43])=23H
Ассемблер: INC @Ri ; где i=0,1
Код:
0 0 0 0 0 1 1 i
, где i=0,1  
Время: 1 цикл
Алгоритм: ((Ri) :=((Ri))+1
Пример: ;(R1)=41H, (ОЗУ[41])=4fH, (AC)=0 INC @R1 ;(R1)=41H, (ОЗУ[41])=50H, (AC)=0  

Примечание. При использовании команды INC для изменения содержимого порта, величина, используемая как операнд, считывается из "защелки" порта, а не с выводов БИС.

Команда INC DPTR

Команда "инкремент указателя данных" выполняет инкремент (прибавление "1") содержимого 16-битового указателя данных (DPTR). Прибавление "1" осуществляется к 16 битам, причем переполнение младшего байта указателя данных (DPL) из FFH в 00Н приводит к инкременту старшего байта указателя данных (DPH). На флаги эта команда не влияет.

Ассемблер: INC DPTR
Код:
1 0 1 0 0 0 1 1
 
Время: 2 циклa
Алгоритм: (DPTR):=(DPTR)+1
Пример: ;(DPH)=12H, (DPL)=FEH INC DPTR INC DPTR INC DPTR ;(DPH)=13H, (DPL)=01H

 

 

Команда JB <bit>, <re18>

Команда "переход если бит установлен" выполняет переход по адресу ветвления, если указанный бит равен "1", в противном случае выполняется следующая команда. Адрес ветвления вычисляется с помощью прибавления относительного смещения со знаком в третьем байте команды (re18) к содержимому счетчика команд после прибавления к нему 3. Проверяемый бит не изменяется. Эта команда на флаги не влияет.

Ассемблер: JB (bit), <метка>
Код:
0 0 1 0 0 0 0 0
bit address
re18
 
Время: 2 циклa
Алгоритм: (PC):=(PC)+3 если (bit)=1, то (PC):=(PC)+<re18>
Пример: ;(A)=96H, (10010110B) JB ACC.2,LAB5 ;эта команда обеспечивает переход ;на метку LAB5 ... LAB5: INC A
Команда JBC <bit>, <re18> Команда "переход, если бит установлен и сброс этого бита", выполняет ветвление по вычисляемому адресу, если бит равен "1". В противном случае выполняется следующая за JBC команда. В любом случае указанный бит сбрасывается. Адрес перехода вычисляется сложением относительного смещения со знаком в третьем байте команды (re18) и содержимого счетчика команд после прибавления к нему 3. Эта команда не влияет на флаги.
Ассемблер: JBC (bit), <метка>
Код:
0 0 0 1 0 0 0 0
bit address
re18
 
Время: 2 циклa
Алгоритм: (PC):=(PC)+3 если (bit)=1, то (bit):=0, (PC):=(PC)+<re18>
Пример: (A)=76H (0111 0110B) JBC ACC.3,LAB6 ; Перехода на LAB6 нет, т.к. ; (A[3])=0 JBC ACC.2,LAB7 ; (A)=72H (0111 0010B) и переход ; на адрес, соответствующий ; метке LAB7

Примечание. Если эта команда используется для проверки бит порта, то значение, используемое как операнд, считывается из "защелки" порта, а не с вывода БИС.

Команда JC <re18>

Команда "переход, если перенос установлен" выполняет ветвление по адресу, если флаг переноса равен "1", в противном случае выполняется следующая команда. Адрес ветвления вычисляется с помощью сложения относительного смещения со знаком во втором байте команды re18) и содержимого счетчика команд, после прибавления к нему 2. Эта команда на флаги не влияет.

Ассемблер: JC <метка>
Код:
0 1 0 0 0 0 0 0
re18
 
Время: 2 циклa
Алгоритм: (PC):=(PC)+2 если (С)=1, то (PC):=(PC)+<re18>
Пример: ;(C)=0 JC LAB8 ;нет перехода на LAB8 CPL C ;(C):=1 LAB8: JC LAB9 ;переход на метку LAB9, т.к. (C)=1 ... LAB9: NOP

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

Команда "косвенный переход" складывает 8-битовое содержимое аккумулятора без знака с 16-битовым указателем данных (DPTR) и загружает полученный результат в счетчик команд, содержимое которого является адресом для выборки следующей команды. 16-битовое сложение выполняется по модулю 216, перенос из младших восьми бит распространяется на старшие биты программного счетчика. Содержимое аккумулятора и указателя данных не изменяется. Эта команда на флаги не влияет.

Ассемблер: JMP @A+DPTR
Код:
0 1 1 1 0 0 1 1
 
Время: 2 циклa
Алгоритм: (PC):=(A)[7-0]+(DPTR)[15-0]
Пример: ;(PC)=034EH, (A)=86H, (DPTR)=0329H JMP @A+DPTR ;(PC)=03AEH, (A)=86H, (DPTR)=0329H

Команда JNB <bit>, <re18>

Команда "переход, если бит не установлен" выполняет вествление по адресу, если указанный бит равен "нулю", в противном случае выполняется следующая команда. Адрес ветвления вычисляется с помощью сложения относительного смещения со знаком в третьем байте команды (re18) и содержимого счетчика команд после прибавления к нему 3. Проверяемый бит не изменяется. Эта команда на флаги не влияет.

Ассемблер: JNB (bit), <метка>
Код:
0 0 1 1 0 0 0 0
bit address
re18
 
Время: 2 циклa
Алгоритм: (PC):=(PC)+3 если (bit)=0, (PC):=(PC)+<re18>
Пример: ;(P2)=CAH (11001010B) ;(A)=56H (0101 0110B) JNB P1.3,LAB10 ;нет перехода на LAB10 JNB ACC.3,LAB11 ;переход на метку LAB11 ... LAB11: INC A

Команда JNC <re18>

Команда "переход, если перенос не установлен" выполняет ветвление по адресу, если флаг переноса равен нулю, в противном случае выполняется следующая команда. Адрес ветвления вычисляется с помощью сложения относительного смещения со знаком во втором байте команды (re18) и содержимого счетчика команд после прибавления к нему 2. Флаг переноса не изменяется. Эта команда на другие флаги не влияет.

Ассемблер: JNC <метка>
Код:
0 1 0 1 0 0 0 0
re18
 
Время: 2 циклa
Алгоритм: (PC):=(PC)+2 если (С)=0, то (PC):=(PC)+<re18>
Пример: ;(C)=1 JNC LAB12 ;нет перехода на LAB12 CPL C LAB12: JNC LAB13 ;переход на метку LAB13  

 

Команда JNZ <re18>

Команда "переход, если содержимое аккумулятора не равно нулю" выполняет ветвление пл адресу, если хотя бы один бит аккумулятора равен "1", в противном случае выполняется следующая команда. Адрес ветвления вычисляется сложением относительного смещения со знаком во втором байте команды (re18) и содержимого счетчика (РС) после прибавления к нему 2. Содержимое аккумулятора не изменяется. Эта команда на флаги не влияет.

Ассемблер: JNZ <метка>
Код:
0 1 1 1 0 0 0 0
re18
 
Время: 2 циклa
Алгоритм: (PC):=(PC)+2 если (A)¹0, то (PC):=(PC)+<re18>
Пример: ;(A)=00H JNC LAB14 ;нет перехода на LAB14 INC A LAB14: JNZ LAB15 ;переход на метку LAB15 ... LAB15: NOP

Команда JZ <re18>

Команда "переход, если содержимое аккумулятора равно 0" выполняет ветвление по адресу, если все биты аккумулятора равны "0", в противном случае выполняется следующая команда. Адрес ветвления вычисляется сложением относительного смещения со знаком во втором байте команды (re18) и содержимым счетчика команд после прибавления к нему 2. Содержимое аккумулятора не изменяется. Эта команда на флаги не влияет.

Ассемблер: JZ <метка>
Код:
0 1 1 0 0 0 0 0
re18
 
Время: 2 циклa
Алгоритм: (PC):=(PC)+2 если (A)¹0, то (PC):=(PC)+<re18>
Пример: ;(A)=01H JZ LAB16 ;нет перехода на LAB16 DEC A LAB16: JZ LAB17 ;переход на метку LAB17 ... LAB17: CLR A

Команда LCALL <addr16>

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

Ассемблер: LCALL <метка>
Код:
0 0 0 1 0 0 1 0
addr [15-8]
addr [7-0]
 
Время: 2 циклa
Алгоритм: (PC):=(PC)+3 (SP):=(SP)+1 ((SP)):=(PC[7-0]) (SP):=(SP)+1 ((SP)):=(PC[15-8]) (PC):=<adddr[15-0]>
Пример: ;(SP)=07H, ;метке PRN соответствует адрес 1234H, ;по адресу 0126H находится команда ;LCALL LCALL PRN ;(SP)=09H, (PC)=1234H, ;(ОЗУ[08])=26H, (ОЗУ[09])=01H

Команда LJMP <addr16>

Команда "длинный переход" выполняет безусловный переход по указанному адресу, загружая старший и младший байты счетчика команд (РС) соответственно вторым и третьим байтами, находящимися в коде команды. Адрес перехода, таким образом, может находиться по любому адресу пространства памяти программ в 64 Кбайт. Эта команда на флаги не влияет.

Ассемблер: LJMP <метка>
Код:
0 0 0 0 0 0 1 0
addr [15-8]
addr [7-0]
 
Время: 2 циклa
Алгоритм: (PC):=<addr[15-0]>

Команда MOV <байт-назначения>,
<байт-источника>

Команда "переслать переменную-байт" пересылает переменную-байт, указанную во втором операнде, в ячейку, указанную в первом операнде. Содержимое байта источника не изменяется. Эта команда на флаги и другие регистры не влияет. Команда "MOV" допускает 15 комбинаций адресации байта-источника и байта-назначения.

Ассемблер: MOV A,Rn; где n=0-7
Код:
1 1 1 0 1 rrr
где rrr=000-111
 
Время: 1 цикл
Алгоритм: (A) : =(Rn)
Пример: ;(A)=FAH, (R4)=93H MOV A,R4 ;(A)=93H, (R4)=93H  
Ассемблер: MOV A, <direct>
Код:
1 1 1 0 0 1 0 1
direct address
 
Время: 1 цикл
Алгоритм: (A) :=(direct)
Пример: ;(A)=93H, (ОЗУ[40])=10H, (R0)=40H MOV A,40H ;(A)=10H, (ОЗУ[40])=10H, (R0)=40H  
Ассемблер: MOV A,@Ri; где i=0,1
Код:
1 1 1 0 0 1 1 i
 
Время: 1 цикл
Алгоритм: (A) : = ((Ri))
Пример: ;(A)=10H, (R0)=41H, (ОЗУ[41])=0CAH MOV A,@R0 ;(A)=CAH, (R0)=41H, (ОЗУ[41])=0CAH
Ассемблер: MOV A,#data
Код:
0 1 1 1 0 1 0 0
#data8
 
Время: 1 цикл
Алгоритм: (A) :=<#data8>
Пример: ;(A)=C9H (11001001B) MOV A,#37H ;(A)=37H (00110111B)  
Ассемблер: MOV Rn ,A; где n=0-7
Код:
1 1 1 1 1 rrr
где rrr=000-111
 
Время: 1 цикл
Алгоритм: (Rn) : =(A)
Пример: ;(A)=38H, (R0)=42H MOV R0,A ;(A)=38H, (R0)=38H  
Ассемблер: MOV Rn, <direct>; где n=0-7
Код:
1 0 1 0 1 rrr
direct address
 
Время: 2 циклa
Алгоритм: (Rn) :=(direct)
Пример: ;(R0)=39H, (P2)=0F2H MOV R0,P2 ;(R0)=F2H
Ассемблер: MOV Rn,#data; где n=0-7
Код:
0 1 1 1 1 rrr
#data8
 
Время: 1 цикл
Алгоритм: (Rn) :=<#data8>
Пример: ;(R0)=0F5H MOV R0,#49H ;(R0)=49H  
Ассемблер: MOV <direct>,A
Код:
1 1 1 1 0 1 0 1
direct address
 
Время: 1 цикл
Алгоритм: (direct) :=(A)
Пример: ;(P0)=FFH, (A)=4BH MOV P0,A ;(P0)=4BH, (A)=4BH  
Ассемблер: MOV <direct>, Rn ; где n=0-7
Код:
1 0 0 0 1 rrr
direct address
 
Время: 2 циклa
Алгоритм: (direct) :=(Rn)
Пример: ;(PSW)=C2H, (R7)=57H MOV PSW,R7 ;(PSW)=57H, (R7)=57H  
Ассемблер: MOV <direct>, <direct>
Код:
1 0 0 0 0 1 0 1
direct address
direct address
 
Время: 2 циклa
Алгоритм: (direct) :=(direct)
Пример: ;(ОЗУ[45])=33H, (ОЗУ[48])=0DEH MOV 48H,45H ;(ОЗУ[45])=33H, (ОЗУ[45])=33H  
Ассемблер: MOV <direct>,@Ri ; где i=0,1
Код:
1 0 0 0 0 1 1 i
direct address
 
Время: 2 циклa
Алгоритм: (direct) :=((Ri))
Пример: ;(R1)=49H, (ОЗУ[49])=0E3H MOV 51H,@R1 ;(ОЗУ[51])=0E3H, (ОЗУ[49])=0E3H  
Ассемблер: MOV <direct>, #data
Код:
0 1 1 1 0 1 0 1
direct address
#data8
 
Время: 2 циклa
Алгоритм: (direct) :=<#data8>
Пример: ;(ОЗУ[5F])=9BH MOV 5FH,#07H ;(ОЗУ[5F])=07H  
Ассемблер: MOV @Ri,A; где i=0-7
Код:
1 1 1 1 0 1 1 i
где i=0,1
 
Время: 1 цикл
Алгоритм: ((Ri)) : =(A)
Пример: ;(R1)=51H, (ОЗУ[48])=75H, (A)=0BDH MOV @R1,A ;(ОЗУ[48])=0BDH  
Ассемблер: MOV @Ri, <direct>, где i=0,1
Код:
1 0 1 0 0 1 1 i
direct address
 
Время: 2 циклa
Алгоритм: ((Ri)) :=(direct)
Пример: ;(R0)=51H, (ОЗУ[51])=0E3H, (P0)=0ACH MOV @R0,P0 ;(A)=10H, (ОЗУ[51])=0ACH  
Ассемблер: MOV Ri,#data ; где i=0,1
Код:
0 1 1 1 0 1 1 i
 
Время: 1 цикл
Алгоритм: ((Ri)) : =<#data8>
Пример: ;(ОЗУ[7E])=67H, (R1)=7EH MOV @R1,#0A9H ;(ОЗУ[7E])=0A9H, (R1)=7EH  

Команда MOV <бит-назначения>,
<бит-источника>

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

Ассемблер: MOV C, <bit>
Код:
1 0 1 0 0 0 1 0
bit address
 
Время: 1 цикл
Алгоритм: (C) : = (bit)
Пример: ;(C)=0, (P3)=D5H (11010101B) MOV C,P3.0 ;C:=1 MOV C,P3.3 ;C:=0 MOV C,P3.7 ;C:=1  
Ассемблер: MOV <bit>,C
Код:
1 0 0 1 0 0 1 0
bit address
 
Время: 2 циклa
Алгоритм: (bit) : =(C)
Пример: ;(C)=1, (P0)=2OH (00100000B) MOV PO.1,C MOV P0.2,C MOV P0.3,C ;(C)=1, (P0)=2EH (00101110B)    


<== предыдущая лекция | следующая лекция ==>
Система команд микроконтроллеров MCS-51 | Команда MOV DPTR,#data16


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.006 сек.