Склад команд арифметичних і логічних операцій, страница 2

1.

Асемблер: 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

2.

Асемблер: 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

3.

Асемблер: DEC <data address>

Код: 0 0 0 1 0 1 0 1 data address

Час: 1 цикл

Алгоритм: (data) : = (data)-1

Приклад: ;(SCON)=A0H, (C)=1, (AC)=1

DEC SCON ;(SCON)=9FH, (C)=1, (AC)=1

4.

Асемблер: 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

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

Команда виконує додання "1" до вказаної змінної і впливає на прапори.

Початкове значення 0FFH перейде в 00Н. Ця команда припускає чотири

режими адресації:

1. до акумулятору

2. регістровий

3. прямий

4. косвено-регістровий

1.

Асемблер: INC A

Код: 0 0 0 0 0 1 0 0

Час: 1 цикл

Алгоритм: (A) : =(A)+1

Приклад: ;(A)=1FH, (AC)=0

INC A ;(A)=20H, (AC)=0

2.

Асемблер: 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

3.

Асемблер: INC <data address>

Код: 0 0 0 0 0 1 0 1 data address

Час: 1 цикл

Алгоритм: (data) : = (data)+1

Приклад: ;(ОЗУ[43])=22H

INC 43H ;(ОЗУ[43])=23H

4.

Асемблер: 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 DPTR

Команда виконує інкремент (додання "1") до вмісту 16-бітового покажчика

даних (DPTR). Додання "1" здійснюється до 16 бітів, причому переповнення

молодшого байта покажчика даних (DPL) з FFH в 00Н приводить до

інкременту старшого байта покажчика даних (DPH). На прапори ця команда

не впли.

Асемблер: INC DPTR

Код: 1 0 1 0 0 0 1 1

Час: 2 циклу

Алгоритм: (DPTR):=(DPTR)+1

Приклад: ;(DPH)=12H, (DPL)=FEH

INC DPTR

INC DPTR

INC DPTR ;(DPH)=13H, (DPL)=01H

Команда MUL AB

Команда умножає 8-бітові цілі числа без знака із акумулятора і регістру В.

Старший байт 16-бітового результату поміщується до регістру В, а

молодший - в акумулятор А. Якщо результат більше, ніж 0FFH (255), то

встановлюється прапор переповнення (OV), в протилежному випадку він

скидається. Прапор переносу завжди зкидається.

Асемблер: MUL AB

Код: 1 0 1 0 0 1 0 0

Час: 4 циклу

Алгоритм: (A)[7-0]=(A)*(B),

(B)[15-8]=(A)*(B)

Приклад: ;(A)=50H (50H=80 DEC), (C)=1,

;(B)=0A0H (A0H=160 DEC), (OV)=0

MUL AB ;(A)=00H, (B)=32H, (C)=0, (OV)=1

;(A)=2HH, (OV)=1, (B)=06H, (C)=1

MUL AB ;(A)=0D8H, (B)=00H, (OV)=0, (C)=0

Команда DIV AB

Команда ділить 8-бітове ціле число без знака з акумулятора А, на 8-бітове

ціле без знака в регістрі В. Акумулятор отримує цілу частину результату

(старші розряди), а регістр В - остаток. Прапори переносу (С) і переповнення

(OV) скидаються. Якщо (А)<(В), то прапор додаткового переносу (АС) не

скидається. Прапор переносу скидається убудь-якому випадку.

1.

Асемблер: DIV AB

Код: 1 0 0 0 0 1 0 0

Час: 4 циклу

Алгоритм: (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 будуть скинуті.

Команда SUBB A, <байт источника>

Команда __________"вычитание с заемом" вычитает указанную переменную вместе с

флагом переноса из содержимого аккумулятора, засылая результат в

аккумулятор. Эта команда устанавливает флаг переноса (заема), если при

вычитании для бита 7 необходим заем, в противном случае флаг переноса

сбрасывается. Если флаг переноса установлен перед выполнением этой

команды, то это указывает на то, что заем необходим при вычитании с

увеличенной точностью на предыдущем шаге, поэтому флаг переноса

вычитается из содержимого аккумулятора вместе с операндом источника.

(АС) устанавливается, если заем необходим для бита 3 и сбрасывается в

противном случае. Флаг переполнения (OV) устанавливается, если заем

необходим для бита 6, но его нет для бита 7, или есть для бита 7, но нет для

бита 6.

При вычитании целых чисел со знаком (OV) указывает на отрицательное

числоЮ которое получается при вычитании отрицательной величины из

положительной, или положительное число, которое получается при

вычитании положительного числа из отрицательного.

Операнд источника допускает четыре режима адресации:

1. регистровый;

2. прямой;

3. косвенно-регистровый;

4. непосредственный (к константе).

1.

Ассемблер: SUBB A, Rn; где n=0-7

Код: 1 0 0 1 1 rrr где r=000-111

Время: 1 цикл

Алгоритм: (A) : = (A)-(C)-(Rn);

(C):=X, (AC):=X, (OV):=X, где X=(0 или 1)

Пример: ;(A)=C9H, (R2)=54H, (C)=1

SUBB A,R2 ;(A)=74H, (R2)=54H, (C)=0

;(AC)=0, (OV)=1

2.

Ассемблер: SUBB A, <direct>

Код: 1 0 0 1 0 1 0 1 direct address

Время: 1 цикл