Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Микропроцессоры и микропроцессорные системы.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
151.55 Кб
Скачать

Сложение

Команда складывает первый операнд со вторым и результат помещает в первый операнд. В качестве первого операнда всегда аккумулятор.

  • ADD A

    • R0-R7

    • Ad

    • @R0-R1

    • #d

В результате выполнения могут выставляться флаги C AC, OV

Пример:

Сложить 2 числа, одно из которых находится по адресу 30, а другое по адресу 40

MOV A,30

ADD A,40

Сложение с переносом

Команда складывает аккумулятор со вторым операндом и с флагом С. Флаг С находится в PSW и отвечает за перенос битов из байта

  • ADDC A

    • R0-R7

    • #d

    • Ad

    • @R0-R1

В результате выполнения выставляются флаги C AC, OV

Пример:

Сложить 2 числа, находящиеся в регистрах R2 и R3, результат разместить в ячейках 30 и 31.

F5+32=127

MOV A,R2

ADD A,R3

MOV 30,A

MOV A,#0

ADDC A,#0

MOV 31,A

Вычитание

Команда вычитает из аккумулятора второй операнд и всегда флаг С

  • SUBB A,

    • R0-R7

    • #d

    • Ad

    • @R0-R1

В результате выполнения выставляются флаги C AC, OV

Если флаг С не требуется учитывать (он мешает) использовать команду CLR C

Умножение

Команда умножает аккумулятор A на вспомогательный аккумулятор B, Результат распределяется следующим образом: Младший байт в А, старший байт в В

  • MUL AB

OV=1 когда младший байт результата больше FF

C=0 всегда

Деление

Команда делит А на В и результат размещает следующим образом: Частное в А, остаток в В

  • DIV AB

OV=1, если деление на 0

С=0

Команда увеличения на единицу

  • INC

    • R0-R7

    • Ad

    • A

    • @R0-R1

    • DPTR

Флаги не работают

Команда уменьшения на единицу

  • DEC

    • R0-R7

    • Ad

    • A

    • @R0-R1

    • DPTR

Флаги не работают

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

Установить в 1

  • SetB

    • Bit

    • C

Setb 01

Setb 20.1

Установление в 0

  • CLR

    • Bit

    • C

    • A

Команда инвертирования

  • CPL

    • Bit

    • C

    • A

Команды условного перехода

  • JB bit,rel где rel – адрес перехода в программе

Команда осуществляет переход по адресу rel, если бит равен единице, иначе переход на следующую команду

  • JNB bit,rel

Команда осуществляет переход по адресу rel, если бит равен нулю, иначе переход на следующую команду

  • JC rel

  • JNC rel

  • JZ rel – переход по адресу если аккумулятор равен 0

  • JNZ – переход по адресу если аккумулятор не равен нулю

Команды безусловного перехода

  • LJMP rel

Команда проверки условия

  • CJNE сравнение и переход если не равно

    • A,Ad,rel

    • R0-R7,#d,rel

    • @R0-R1,#d,rel

    • А,#d,rel

Команда сравнивает первый операнд со вторым и переходит по адресу rel, если они не равны, иначе переход на следующую команду

Флаг C равен нулю если первый операнд больше второго, и единице если первый операнд меньше второго

Пример:

Разделить число в ячейке 30 на 10 и результат округлить. Результат поместить в ячейку 31

MOV A, 30

MOV B,#0A

DIV AB

MOV R2,B

CJNE R2,5,ADR1

LJMP ADR2

ADR1: JC ADR3

ADR2: INC A

ADR3: MOV 31,A

Команда организации цикла

  • DJNZ - уменьшение и переход, если не 0

    • R0-R7,rel

    • Ad,rel

Уменьшает на 1 первый операнд и переходит по адресу rel, если не равен нулю, иначе переходит на следующую команду

Пример: почистить 10 ячеек внутреннего ОЗУ, начиная с адреса 30

0000 MOV R5,#0A

0002 MOV R0,#30

0004 MOV @R0,#00

INC R0

DJNZ R5,0004

Команды обмена

  • SWAP A – обмен полубайтами внутри аккумулятора

  • XCH A, - обмен аккумулятора со вторым байтом

    • R0-R7

    • Ad

    • @R0-R1

  • XCHD A,@R0-R1 - обмен младшими полубайтами между аккумулятором и вторым операндом

Команды сдвига

  • RL A – циклический сдвиг влево, при этом 7 бит встает на место 0

  • RR A – циклический сдвиг вправо, при этом 0 бит встанет на место 7

  • RLC A – циклический сдвиг влево через перенос 7 бит в С, С в 0 бит

  • RRC A – циклический сдвиг вправо через С

Стеки

Стек – область памяти, работающая по принципу «первым пришел – последним ушел»

В МК51 стек находится во внутреннем ОЗУ, начиная с адреса 08

SP – регистр специальных функций в котором содержится адрес начала стека

Существует 2 команды работы со стеком, эти команды имеют одинаковые аббревиатуры во всех Ассемблерах.

  • PUSH ad – запись в стек

  • POP ad – чтение из стека

Запись происходит в любом порядке, однако извлечение происходит исключительно в обратном порядке