Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Команда INC DPTR






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

приводит к инкременту старшего байта указателя данных (DPH). На флаги эта команда не влияет.

 

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

 

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

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

 

Ассемблер: JB (bit), < метка>
Код: 00100000 bit address rel8
Время: 2 цикла
Пример: ; (A)=96H (10010110B) JB ACC.2, LAB5 ... LAB5: INC A

 

Команда JBC < bit>, < rel8>

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

 

Ассемблер: JBC < bit>, < метка>
Код: 00010000 bit address rel8
Время: 2 цикла
Пример: (a)=76h (0111 0110b) JBC ACC.3, LAB6; Переход на LAB6 ; нет, т.к. (A[3])=0 JBC ACC.2, LAB7; (A)=72h ; (01110010b) и ; переход на адрес, ; соответ. Метке ; LAB7.


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

 

Команда JC < rel8>

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

 

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

Команда JMP @+DPTR

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

 

Ассемблер: JMP @A+DPTR
Код:  
Время: 2 цикла
Пример: ; (PC)=034Eh, ; (A)=86h, ; (DPTR)=0329h JMP @A+DPTR; (PC)=03AFh, ; (A)=86h, ; (DPTR)=0329h

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

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

 

Ассемблер: JNB < bit>, < метка>
Код: 00110000 bit address rel8
Время: 2 цикла
Пример: ; (P2)=CAH ; (11001010b), ; (A)=56h ; (0101 0110b) JNB P1.3, LAB10; нет перехода на ; LAB10 JNB ACC.3, LAB11; переход на метку ; LAB11 ....... LAB11: INC A

Команда JNC < rel8>

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

 

Ассемблер: JNC < метка>
Код: 01010000 rel8
Время: 2 цикла
Пример: ; C=1 JNC LAB12; Нет переход на ; LAB12 CPL C LAB12: JNC LAB13; переход на метку ; LAB13.

 

Команда JNZ < rel 8>

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

Ассемблер: JNZ < метка>
Код: 01110000 rel8
Время: 2 цикла
Пример: JNC LAB14; нет перехода на LAB14 INC A LAB14: JNZ LAB15; переход на метку LAB15 ...... LAB15: NOP

 

Команда JZ < rel8>

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

 

Ассемблер: JZ < метка>
Код: 01100000 rel8
Время: 2 цикла
Пример: JZ LAB16; нет перехода на LAB16 DEC A LAB16: JZ LAB17; переход на метку LAB17 ...... LAB17: CLR A

 

Команда LCALL < addr16>

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

 

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

 

Команда LJMP < addr16>

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

 

Ассемблер: LJMP < метка>
Код: 00000010 addr[15-8] addr[7-0]
Время: 2 цикла

 

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

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

 

1) Ассемблер MOV A, Rn; n=0-7
код: 11101rrr; rrr=000-111
Время: 1 цикл
Алгоритм: (A): =(Rn)
Пример: ; (A)=FAh, (R4)=93h MOV A, R4; (A)=FAh, (R4)=93h

 

2) Ассемблер MOV A, < direct>;
код: 11100101, direct address
Время: 1 цикл
Алгоритм: (A): =(direct)
Пример: ; (A)=93h, (RAM[40])=10h; R0=40h MOV A, R4 ; (A)=93h, (RAM[40])=10h; R0=40h

 

3) Ассемблер MOV A, @Ri; i=0, 1
код: 1110010i
Время: 1 цикл
Алгоритм: (A): =((Ri))
Пример: ; (A)=10h, (RAM[41])=CAh; R0=41h MOV A, @R0 ; (A)=CAh, (RAM[41])=CAh; R0=41h

 

4) Ассемблер MOV A, #data; i=0, 1
код: 11100100, #data8
Время: 1 цикл
Алгоритм: (A): =< #data8>
Пример: ; (A)=c9h MOV A, #37h ; (A)=37h

 

5) Ассемблер MOV Rn, A; n=0-7
код: 11111rrr, rrr=0-7
Время: 1 цикл
Алгоритм: (Rn): =(A)
Пример: ; (A)=38h, (R0)=42h MOV R0, A ; (A)=38h, (R0)=42h

 

6) Ассемблер MOV Rn, < direct>, n=0-7
код: 10101rrr, rrr=0-7
Время: 2 цикл
Алгоритм: (Rn): =< direct>
Пример: ; (R0)=38h, (P2)=0F2h MOV R0, P2; (R0)=0F2h

 

7) Ассемблер MOV Rn, #data, n=0-7
код: 01111rrr, rrr=0-7
Время: 1 цикл
Алгоритм: (Rn): =#data
Пример: ; (R0)=38h MOV R0, #AAh; (R0)=0AAh

 

8) Ассемблер MOV < direct>, A
код: 11110101, direct address
Время: 1 цикл
Алгоритм: (direct): =(A)
Пример: ; (P0)=38h; (A) = 10h MOV P0, A; (P0)=10h

 

9) Ассемблер MOV < direct>, Rn
код: 10001rrr
Время: 2 цикл
Алгоритм: (direct): =(Rn)
Пример: ; (P0)=38h; (A) = 10h MOV P0, A; (P0)=10h

 

10) Ассемблер MOV < direct>, < direct>
код: 10000101, direct address, direct address
Время: 2 цикл
Алгоритм: (direct): =(direct)
Пример: ; (RAM[45])=33h; (RAM[48]) = 10h MOV 48h, 45h; (RAM[48])=33h

 

11) Ассемблер MOV < direct>, @Ri, i=0, 1
код: 1000011i, direct address
Время: 2 цикл
Алгоритм: (direct): =((Ri))
Пример: ; (R1)=49h; (RAM[49]) = 10h MOV 51h, @R1; (RAM[51])=49h

 

12) Ассемблер MOV < direct>, #data
код: 10000101, direct address, direct address
Время: 2 цикл
Алгоритм: (direct): =(direct)
Пример: ; (RAM[45])=33h; (RAM[48]) = 10h MOV 48, 45; (RAM[48])=33h

 

13) Ассемблер MOV < direct>, #data
код: 01110101, direct address, data
Время: 2 циклa
Алгоритм: (direct): =#data
Пример: ; (RAM[45h])=33h; MOV 45h, #10h; (RAM[45h])=10h

 

14) Ассемблер MOV @Ri, < direct>
код: 1010011i, direct address
Время: 1 циклa
Алгоритм: ((Ri)): =(direct)
Пример: ; (R0)=51h; (RAM[51h])=10; (P0)=5 MOV @R0, < direct>; (RAM[51h])=5h  
15) Ассемблер MOV @Ri, #data
код: 0111011i, data
Время: 1 циклa
Алгоритм: ((Ri)): =#data
Пример: ; (R0)=51h; (RAM[51h])=10; MOV @R0, #37; (RAM[51h])=37

 

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

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

 

1) Ассемблер: Код: Время: Алгоритм: Пример:   MOV C, < bit> 10100010 bit adress 1 цикл (С): =(bit) ; (C)=0, (P3)=D5h ; (11010101b) MOV C, Р3.0; C: =1 MOV C, P3.3; C: =0 MOV C, P3.7: C: =1  
2) Ассемблер: Код: Время: Алгоритм: Пример:   MOV < bit>, C 10010010 bit adress 2 цикла (bit): =(C) ; (C)=1, (P0)=20h ; (00100000b) MOV P0.1, C MOV P0.2, C MOV P0.3, C; (C)=1, (P0)=2Eh ; (00101110b)

 


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.01 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал