КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Описание машинных команд (продолжение)INC <байт> - производит прибавление 1 к указанному операнду. Описание: ячейка памяти адрес, которой указан во втором байте команды увеличивается на 1. Если первоначально в ячейке было записано значение 0FFh, то в нее заносится значение 00h. Команда не воздействует на флаги. Примечание: при выполнении команды INC над содержимым внешнего порта используется значение из внутреннего регистра, а не данные, присутствующие на выводах микросхемы! Для команды INC разрешены следующие режимы адресации байта - источника:
Пример: INC A Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 (A) = (A) + 1 Машинный код: 0 0 0 0 0 1 0 0
Пример: INC R3 Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 (Rn) = (Rn) + 1, n=0,1,2,3,4,5,6,7 Машинный код: 0 0 0 0 1 r r r
Пример: INC @R0 Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 ((Ri)) = ((Ri)) + 1, i=0,1 Машинный код: 0 0 0 0 0 1 1 i
Пример: INC 30h Количество байт: 2 Количество циклов: 1 Действие команды: (PC) = (PC) + 2 (direct) = (direct) + 1 Машинный код: 0 0 0 0 0 1 0 1 d d d d d d d d INC DPTR - увеличивает на 1 содержимое указателя данных. Описание: увеличивает на 1 содержимое 16-разрядного указателя данных. Если первоначально в младшем байте DPTR (ячейка DPL) было записано значение 0FFh, то в него заносится значение 00h и увеличивается на 1 содержимое старшего байта DPTR (ячейка DPH). Команда не воздействует на флаги. Количество байт: 1 Количество циклов: 2 Действие команды: (PC) = (PC) + 1 (DPTR) = (DPTR) + 1 Машинный код: 0 1 0 1 0 0 1 1 JB <bit>,<rel8> - переход если бит установлен. Описание: Если указанный во втором байте команды бит равен единице, то производится переход к вычисляемому по третьему байту команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется суммирование содержимого программного счетчика со вторым операндом (третьим байтом команды). Перед выполнением суммирования в программный счетчик заносится адрес первого байта следующей команды. Суммирование производится с учетом знака третьего байта команды, представленного в дополнительном коде. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита.
Пример: JB 30h, LABEL1 Количество байт: 3 Количество циклов: 2 Действие команды: (PC) = (PC) + 3 IF (bit) = 1 THEN (PC) = (PC) + rel Машинный код: 0 0 1 0 0 0 0 0 b b b b b b b b R e l A d r e s JBC <bit>,<rel8> - переход, если бит установлен и сброс этого бита. Описание: Если указанный во втором байте команды бит равен единице, то производится переход к вычисляемому по третьему байту команды адресу. Бит не очищается, если он уже содержит ноль. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется суммированием содержимого программного счетчика со вторым операндом (третьим байтом команды). Перед выполнением суммирования в программный счетчик заносится адрес первого байта следующей команды. Суммирование производится с учетом знака третьего байта команды, представленного в дополнительном коде. Команда не воздействует на флаги.
Пример: JBС 78h, LABEL1 Количество байт: 3 Количество циклов: 2 Действие команды: (PC) = (PC) + 3 IF (bit) = 1 THEN (bit) = 0 (PC) = (PC) + rel Машинный код: 0 0 0 1 0 0 0 0 b b b b b b b b R e l A d r e s JC <rel8> - переход, если бит переноса установлен. Описание: Если бит переноса равен единице, то производится переход к вычисляемому по второму байту команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется суммированием содержимого программного счетчика со вторым байтом команды. Перед выполнением суммирования в программный счетчик заносится адрес первого байта следующей команды. Суммирование производится с учетом знака второго байта команды, представленного в дополнительном коде. Команда не воздействует на флаги. Пример: JС LABEL1 Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 IF (С) = 1 THEN (PC) = (PC) + rel Машинный код: 0 1 0 0 0 0 0 0 R e l A d r e s JMP @A+DPTR - косвенный переход. Описание: складывает 8- битовое содержимое аккумулятора без учета знака с 16- битовым указателем данных (DPTR) и загружает полученный результат в счетчик команд. Это будет адрес следующей исполняемой команды. Команда не воздействует на флаги. Пример: MOV DPTR, #JMP_TBL JMP @A+DPTR JMP_TBL: AJMP LABEL0 AJMP LABEL1 AJMP LABEL2 AJMP LABEL3 Количество байт: 1 Количество циклов: 2 Действие команды: (PC) = (A) + (DPTR) Машинный код: 0 1 1 1 0 0 1 1 JNB <bit>, <rel8> - переход если бит сброшен. Описание: Если указанный во втором байте команды бит равен нолю, то производится переход к вычисляемому по третьему байту команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется суммирование содержимого программного счетчика со вторым операндом (третьим байтом команды). Перед выполнением суммирования в программный счетчик заносится адрес первого байта следующей команды. Суммирование производится с учетом знака третьего байта команды, представленного в дополнительном коде. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита.
Пример: JNB P1.3, LABEL1 Количество байт: 3 Количество циклов: 2 Действие команды: (PC) = (PC) + 3 IF (bit) = 0 THEN (PC) = (PC) + rel Машинный код: 0 0 1 1 0 0 0 0 b b b b b b b b R e l A d r e s JNC <rel8> - переход, если бит переноса сброшен. Описание: Если бит переноса равен нолю, то производится переход к вычисляемому по второму байту команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется суммированием содержимого программного счетчика со вторым байтом команды. Перед выполнением суммирования в программный счетчик заносится адрес первого байта следующей команды. Суммирование производится с учетом знака второго байта команды, представленного в дополнительном коде. Команда не воздействует на флаги. Пример: JNС LABEL1 Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 IF (С) = 0 THEN (PC) = (PC) + rel Машинный код: 0 1 0 1 0 0 0 0 R e l A d r e s JNZ <rel8> - переход, если содержимое аккумулятора не равно нулю. Описание: Если любой бит аккумулятора равен единице, то производится переход к вычисляемому по второму байту команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется суммированием содержимого программного счетчика со вторым байтом команды. Перед выполнением суммирования в программный счетчик заносится адрес первого байта следующей команды. Суммирование производится с учетом знака второго байта команды, представленного в дополнительном коде. Содержимое аккумулятора не изменяется. Команда не воздействует на флаги. Пример: JNZ LABEL1 Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 IF (A) <> 0 THEN (PC) = (PC) + rel Машинный код: 0 1 1 1 0 0 0 0 R e l A d r e s JZ <rel8> - переход, если содержимое аккумулятора равно. Описание: Если все биты аккумулятора равны нулю, то производится переход к вычисляемому по второму байту команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется суммированием содержимого программного счетчика со вторым байтом команды. Перед выполнением суммирования в программный счетчик заносится адрес первого байта следующей команды. Суммирование производится с учетом знака второго байта команды, представленного в дополнительном коде. Содержимое аккумулятора не изменяется. Команда не воздействует на флаги. Пример: JZ LABEL1 Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 IF (A) = 0 THEN (PC) = (PC) + rel Машинный код: 0 1 1 0 0 0 0 0 R e l A d r e s LCALL <addr 16> - дальний вызов подпрограммы. Описание: вызывает подпрограмму, размещенную по указанному адресу <addr 16>. Команда увеличивает содержимое счетчика команд на 3 и помещает полученный результат в стек (младший байт первым). После этого содержимое указателя стека SP увеличивается на 2. Затем старший и младший байты счетчика команд PC загружаются вторым и третьим байтами команды LCALL соответственно. Выполнение программы продолжается с команды, расположенной с этого адреса. Команда не воздействует на флаги. Пример: LCALL Podprogramma Количество байт: 3 Количество циклов: 2 Действие команды: (PC) = (PC) + 3 (SP) = (SP) + 1 ((SP)) = (PC7-0) (SP) = (SP) + 1 ((SP)) = (PC15-8) (PC15-0) = адрес подпрограммы (метки) Машинный код: 0 0 0 1 0 0 1 0 а15 a14 a13 a12 a11 a10 a9 a8 a7 a6 a5 a4 a3 a2 a1 a0 LJMP <addr 16> - дальний переход. Описание: передает управление команде, размещенной по указанному адресу <addr 16> загрузкой старшего и младшего байтов счетчика команд PC вторым и третьим байтами команды LJMP соответственно. Команда позволяет передавать управление в любую точку адресного пространства. Команда не воздействует на флаги. Пример: LJMP Label Количество байт: 3 Количество циклов: 2 Действие команды: (PC) = (PC) + 3 (PC15-0) = адрес метки Машинный код: 0 0 0 0 0 0 1 0 а15 a14 a13 a12 a11 a10 a9 a8 a7 a6 a5 a4 a3 a2 a1 a0 MOV <байт приемник>,<байт-источник> - переслать байтовую переменную. Описание: переменная, указанная во втором операнде, копируется в ячейку, указываемую первым операндом. Байт источник не изменяется. Другие регистры и флаги не изменяются. Команда допускает 15 комбинаций адресации байта- источника и байта приемника:
Пример: MOVA, R3 Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 (A) = (Rn), n=0,1,2,3,4,5,6,7 Машинный код: 1 1 1 0 1 r r r
Пример: MOV A, @R0 Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 (A) = ((Ri)), i=0,1 Машинный код: 1 1 1 0 0 1 1 i
Пример: MOV A, 100 Количество байт: 2 Количество циклов: 1 Действие команды: (PC) = (PC) + 2 (A) = (direct) Машинный код: 1 1 1 0 0 1 0 1 d d d d d d d d
Пример: MOV A, #38h Количество байт: 2 Количество циклов: 1 Действие команды: (PC) = (PC) + 2 (A) = (data 8) Машинный код: 0 1 1 1 0 1 0 0 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 1 1 1 1 r r r
Пример: MOV R3, 120 Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 (Rn) = (direct), n=0,1,2,3,4,5,6,7 Машинный код: 1 0 1 0 1 r r r d d d d d d d d
Пример: MOV R3, 120 Количество байт: 2 Количество циклов: 1 Действие команды: (PC) = (PC) + 2 (Rn) = (data 8), n=0,1,2,3,4,5,6,7 Машинный код: 0 1 1 1 1 r r r i i i i i i i i
Пример: MOV 20, A Количество байт: 2 Количество циклов: 1 Действие команды: (PC) = (PC) + 2 (direct) = (A) Машинный код: 1 1 1 1 0 1 0 1 d d d d d d d d
Пример: MOV 59, R5 Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 (direct) = (Rn), n=0,1,2,3,4,5,6,7 Машинный код: 1 0 0 0 1 r r r d d d d d d d d
Пример: MOV 20, 80 Количество байт: 3 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 (direct) = (direct) Машинный код: 1 0 0 0 0 1 0 1 d d d d d d d d (источник) d d d d d d d d (приемник)
Пример: MOV 35, @R0 Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 (direct) = ((Ri)), i=0,1 Машинный код: 1 0 0 0 0 1 1 i d d d d d d d d
Пример: MOV 31, #120 Количество байт: 3 Количество циклов: 2 Действие команды: (PC) = (PC) + 3 (direct) = (data 8) Машинный код: 0 1 1 1 0 1 0 1 d d d d d d d d i i i i i i i i
Пример: MOV @R0, A Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 ((Ri)) = (A), i=0,1 Машинный код: 1 1 1 1 0 1 1 i
Пример: MOV @R0, 80 Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 ((Ri)) = (direct), i=0,1 Машинный код: 1 0 1 0 0 1 1 i d d d d d d d d
Пример: MOV @R0, #80 Количество байт: 2 Количество циклов: 1 Действие команды: (PC) = (PC) + 2 ((Ri)) = (direct), i=0,1 Машинный код: 0 1 1 1 0 1 1 i i i i i i i i i MOV <бит приемник>,<бит- источник> - переслать битовую переменную. Описание: переменная, указанная во втором операнде, копируется по адресу, указываемом первым операндом. Бит источник не изменяется. Одним битом обязательно должен быть флаг переноса C, другим битом может быть любой прямо адресуемый бит. Другие регистры и флаги не изменяются.
Пример: MOV C, 87 Количество байт: 2 Количество циклов: 1 Действие команды: (PC) = (PC) + 2 (C) = (bit) Машинный код: 0 1 0 1 0 0 1 0 b b b b b b b b Пример: MOV 87, C Количество байт: 2 Количество циклов: 1 Действие команды: (PC) = (PC) + 2 (bit) = (C) Машинный код: 1 0 0 1 0 0 1 0 b b b b b b b b MOV DPTR, #data16 - загрузить указатель данных DPTR 16-битной константой. Описание: загружает указатель данных DPTR 16- битной константой. Команда не воздействует на флаги.
Пример: MOV DPTR, #Label Количество байт: 3 Количество циклов: 2 Действие команды: (PC) = (PC) + 3 (DPTR) = (data16) Машинный код: 1 0 0 1 0 0 0 0 i15 i14 i13 i12 i11 i10 i9 i8 i7 i6 i5 i4 i3 i2 i1 i0 MOVC A, @A+(<R16>) - переслать байт из памяти программ. Описание: загружает аккумулятор константой из памяти программ. Адрес считываемого байта вычисляется как сумма 8-битного исходного содержимого аккумулятора без знака и содержимого 16-битного регистра. В качестве 16- битового регистра может быть использован либо указатель данных DPTR, либо счетчик команд РС При использовании программного счетчика его содержимое перед суммированием увеличивается на 1. Команда не воздействует на флаги.
Пример: MOVC A, @A+DPTR Количество байт: 1 Количество циклов: 2 Действие команды: (PC) = (PC) + 1 (A) = ((A)+(DPTR)) Машинный код: 1 0 0 1 0 0 1 1
Пример: MOVC A, @A+PC Количество байт: 1 Количество циклов: 2 Действие команды: (PC) = (PC) + 1 (A) = ((A)+(PC)) Машинный код: 1 0 0 0 0 0 1 1 MOVX <байт приемник>,<байт источник> - переслать байтовую переменную во внешнюю память (из внешней памяти) Описание: пересылает данные между аккумулятором и байтом внешней памяти. Имеется два типа команд, которые отличаются тем, что обеспечивают 8-битный или 16-битный доступ к внешней памяти данных. В первом случае регистр R0 или R1 текущего банка регистров обеспечивает 8- битный адрес, который мультиплексируется с данными на выводах порта P0. Во втором случае, при выполнении команды 16- битный адрес, берется из указателя данных DPTR. При этом через порт P2 выводятся старшие 8 бит адреса, а через порт P0 младшие 8 бит адреса, мультиплексируемые с байтом данных. Команда не воздействует на флаги.
Пример: MOVX A, @Ri Количество байт: 1 Количество циклов: 2 Действие команды: (PC) = (PC) + 1 (A) = ((Ri)), i=0,1 Машинный код: 1 1 1 0 0 0 1 i
Пример: MOVX A, @DPTR Количество байт: 1 Количество циклов: 2 Действие команды: (PC) = (PC) + 1 (A) = ((DPTR)) Машинный код: 1 1 1 0 0 0 0 0
Пример: MOVX @Ri, A Количество байт: 1 Количество циклов: 2 Действие команды: (PC) = (PC) + 1 ((Ri)) = (A), i=0,1 Машинный код: 1 1 1 1 0 0 1 i
Пример: MOVX @DPTR, A Количество байт: 1 Количество циклов: 2 Действие команды: (PC) = (PC) + 1 ((DPTR)) = (A) Машинный код: 1 1 1 1 0 0 0 0
Дата добавления: 2014-01-07; Просмотров: 305; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |