Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[9]

POP adr-прочитать значение прямоадресуемого операнда из стека. Пример: 1)PUSH 1, загрузить в стек значение из РПД с адресом 1Н. 2)загрузить в аккумулятор значение 10Н:

MOV A, #10H

MOV ACC, #10H

XCH A, src-команда обмена A<->src (src=img-book-4/Rn, 7 A 0 @Ri,

adr);

SWAP A-обмен тетрад аккумулятора."С12Ж~

Б) Команды пересылки данных в ВПД.

Если используется 16-разрядная адресация ячеек ВПД, то команды пересылки:

MOVX A, @DPTR ; A-из ячейки по адресу DPTR (ПЗУ) MOVX A, @DPTR ; @DPTR-A Для загрузки регистра DPTR используют команду MOV DPTR, #data16 В случае 8-раздной адресации ячеек ВПД используют команду:

MOVX A, @Ri ; A- @Ri

MOVX @Ri, A ; при этом в Ri 8-разрядный адрес ячейки ВПД.

В) Команды чтения информации из ВПП (или внутренняя ПП, если ЕА=1).

MOVC A, @A+PC ; A-@A+PC

MOVC A, @A+DPTR ; A-@A+DPTR в аккумулятор загружается значение из ячейки ПЗУ, адрес которой определяется как сумма А+РС или

A+DPTR.

Пример: 1) прочитать содержимое ячейки ПП, расположенной следом за выполненной командой. MOV A, #0H

MOVC A, @A+PC

2) прочитать из ВПД содержимое ячейки памяти с адресом 2000Н.

MOV DPTR, #2000H MOVX A, @DPTR

3.4.2. Команды арифметических операций

A)команды сложения:

ADD A, src ; A-A+src (src=img-book-4/Rni, @Ri, adr, #data8) ADC A, src ; A-A+src+C (C-признак переноса)

Б) команды вычитания:

SUBB A, src ; A-A-src-C

B)команды инкремента и декремента:

INC src ; src-src+1 (src=img-book-4/A, Rn, @Ri, adr) DEC src ; src-src-1

INC DPTR ; увеличение на единицу 16-разрядного DPTR.


Пример: INC 20H ; увеличение на единицу содержимого ячейки по адресу 20Н.

Г) команды умножения и деления: mul ab ; (b)(a)a*b ,если значения в регистре В Ф 0 после умножения, старший А А младший то устанавливается признак переполнения V=1.

байтбайтJгг

I результата

div ab ; (aKb)*-a/b

целая

разультата

часть результата!

остаток от

деления

Команды работают с целыми числами: DA A- десятичная коррекция аккумулятора после сложения двоично-десятичных чисел.

Команды логических операций. А) команды логического умножения, сложения и сложения по модулю два. ~ ANL A, src ; A - A л src (src = Rn, @Ri, adr, data8)] ANL adr, src ; adr - adr л src (src = A,# data8) ~ORL A, src " ORL adr,src

XRL A, src " XRL adr, src

" И

" ИЛИ " искл. ИЛИ

Логические операции выполняются побитно. Б) команды инверсии, отчистки и сдвига аккумулятора. CPL A ; A-А CLR A ; A=0

RLA-циклический сдвиг аккумулятора на один бит ~ j j влево.

RR A- циклический сдвиг аккумулятора на один бит вправо. RLC A-команда сдвига аккумулятора влевоа

через бит переноса С.

RRC A- команда сдвига аккумулятора вправо через бит переноса С.

3.4.3. Команды работы с битами

В данных командах в качестве операндов используется: -отдельные биты РСФ (помеченные *); -биты из области прямоадресуемых бит РПД (20H-2FH); -отдельные биты портов ввода/вывода.

В качестве битового аккумулятора данных команд используется признак переноса с контроллера. Таким образом один из битовых операндов и результат выполнения операции как правило сохраняется в признаке переноса С.

А)команды очистки, инверсии и установки бита: CLR bit ; bit = 0 SETB bit ; bit = 1


CPL bit ; bit = bit Пример: установка третьего бита аккумулятора:

SETB ACC.3

CPL P0.6 ; инверсия шестого бита порта Р0 CLR 20.6H ; отчистка шестого бита ячейки с адресом ?????. Б) команды пересылки бит: MOV c, bit ; c-bit

MOV bit, c

Пример: MOV c, P37 ; значение седьмого бита Р3 загружается в с. В) команды битовых логических операций: ANL c, bit ; c-c "и" bit (v)

ANL c, /bit ; подобная команда, но с-с "и" bit с инверсией бита

ORL c, bit ; c-c "или" bit (л)

ORL c, /bit ; c-c "или" bit Пример: найти логическое произведение третьего бита порта Р2 с шестым битом порта Р3 и результат выдать в нулевой бит порта Р0: MOV c, P2.3 ; c-P2.3 ANL c, P3.6 ; c-c v P3.6 MOV P0.0, c ; P0.0-c.

3.4.4. Команды передачи управления или переходов.

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

Все команды передачи управления делят на три группы:

-команды дальних переходов (long);

-команды абсолютных переходов (absolute);

-команды коротких (относительных) переходов (short).

Команды дальних переходов осуществляется только внутри страниц объемом 2к байта каждая.

Относительные переходы осуществляются на расстоянии ±128 байт от текущей команды.

А)команды безусловных переходов и вызова подпрограмм. LJMP adr16 ; безусловный дальний переход LCALL adr16 ; дальний вызов подпрограммы AJMP adr11 ; абсолютный безусловный переход

ACALL adr11 ; абсолютный вызов подпрограммы (adr11-11-разрядный адрес перехода)

SJMP rel ; относительный безусловный переход (rel-смещение относительно текущей команды)

Переход осуществляется по схеме PC-PC+ rel смещение rel может принимать как положительное значения (в этом случае оно записывается в прямом коде), так и отрицательное (в дополнительном коде).



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13] [стр.14] [стр.15] [стр.16] [стр.17] [стр.18] [стр.19] [стр.20] [стр.21] [стр.22] [стр.23] [стр.24] [стр.25] [стр.26] [стр.27] [стр.28]