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

2.2.1. Перейти к метке dest, если содержимое ячейки внутренней памяти с адресом oper1 меньше содержимого ячейки внутренней памяти с адресом oper2.

Распределение ресурсов: Для использования операций перехода необходимо использовать команду, которая бы формировала соответствующие флажки в результате операции. Наиболее подходящая для этого команда SUBB - вычитания второго операнда из первого, расположенного в А. Если результат отрицательный, то устанавливается флажок переноса С=1, в противном случае он очищается. Кроме того, перед оператором вычитания надо загрузить первый операнд в А. В системе команд существуют 2 операции, проверяющие состояние флажка С: JC ADR и JNC ADR. Первая осуществляет переход, когда С=1, вторая - когда С=0. Так как нам надо проверять условие С=1, то надо использовать первую команду.

NAME SUBTR

Beg: mov a,OPER1 ;пересылка содержимого ячейки памяти в А

subba,OPER2 ;вычитание из А содержимого второй ячейки памяти.

jcDEST ;переход на метку, если С=1

END

2.2.2. Перейти к метке DEST, если содержимое ячейки внутренней памяти с адресом OPER1 больше содержимого ячейки внутренней памяти с адресом OPER2.

Распределение ресурсов: Задача аналогична задаче 2.2.1, за исключением того, что теперь переход осуществляется при С=0, поэтому должна использоваться команда JNC.

NAME SUBTR1

Beg: mov a,OPER1 ;пересылка содержимого ячейки памяти в А

subba,OPER2 ;вычитание из А содержимого второй ячейки памяти.

jnc DEST ;переход на метку, если С=0

END

2.2.3. Перейти к метке DEST, если содержимое регистра R3 меньше содержимого ячейки внутренней памяти с адресом OPER2.

Распределение ресурсов: Задача почти полностью аналогична задаче 2.2.1, за исключением того, что теперь надо загружать первый операнд из регистра.

NAME SUBTR1

Beg: mov a,R3 ;пересылка содержимого ячейки памяти в А

subba,OPER2 ;вычитание из А содержимого второй ячейки памяти.

jnc DEST ;переход на метку, если С=0

END

2.2.4.Перейти к метке DEST, если А содержит положительное число.

Распределение ресурсов: Задача аналогична задаче 2.2.1, за исключением того, что теперь сравнение происходит с фиксированным числом 0.

NAME SUBTR3

Beg:

subb a,#0 ;вычитание из А нуля для проверки положительности.

jnc DEST ;переход на метку, если С=0

END

2.3. Пересылки отдельных байтов

2.3.1. Пересылка внутри отдельных пространств памяти

Данную группу команд можно подразделить на следующие подгруппы:

· команды передачи данных, использующие внутреннюю память данных;

· команды передачи данных, использующие внешнюю память данных;

· команды работы с таблицами.

В табл.2.3 показаны команды, использующие внутреннее ОЗУ и применяемые при этом режимы адресации.

Таблица 2.3.

Команды передачи данных, использующие внутреннее ОЗУ.

Мнемоника Операция Режимы адресации

Прямая Косвенная Регистровая Непосредственная

MOV A, <src> A<=<src> x x x x

MOV <dest>, A <dest><=A x x x

MOV <dest>, <src> <dest><=<src> x x x x

MOV DPTR, #data16 DPTR<=16-bit константа x

PUSH <src> INC SP:MOV"@SP",<src> x

POP <dst> MOV <dest>, "@SP": DEC SP x

XCH A, <byte> Обмен ACC и <byte> x x x

XCHD A, @Ri Обмен младш. полубайтами ACC и @Ri x

В приведенной таблице используются стандартные обозначения: <src>, (source) - иcточник, <dest>, (destination) - приемник. Команда MOV <dest>, <src> позволяет пересылать данные между ячейками внутреннего ОЗУ или SFR без использования аккумулятора. При этом работа с верхними 128 байтами внутреннего ОЗУ может осуществляться только в режиме косвенной адресации, а обращение к регистрам SFR - только в режиме прямой адресации.

Во всех микросхемах MCS-51 стек размещается непосредственно в резидентной памяти данных чипа и растет в сторону увеличения адресов. Поскольку по отношению к SP используется косвенная адресация, то стек может попасть и в область "Upper 128", но не в SFR. В тех кристаллах, где "Upper 128" отсутствует, увеличение стека за границу 128 байт приведет к потере данных.

Операция XCH A, <byte> применяется для обмена данными (exchange) между аккумулятором и адресуемым байтом. Команда XCHD A, @Ri аналогична предыдущей, но выполняется только для младших тетрад (ниблов), участвующих в обмене.

В табл.2.4 приведены команды для работы с внешней памятью данных.

Таблица 2.4.

Команды передачи данных, использующие внешнюю память данных

Мнемоника Операция Разрядность данных

MOVX A, @Ri Чтение внешней RAM @Ri 8 бит

MOVX @Ri, A Запись во внешнюю RAM @Ri 8 бит

MOVX A, @DPTR Чтение внешней RAM @DPTR 16 бит

MOVX @DPTR, A Запись во внешнюю RAM @DPTR 16 бит

Отметим, что при любом доступе к внешней памяти данных используется только косвенная адресация и обмен информацией осуществляется исключительно через аккумулятор. В случае 8-разрядных адресаций используется R0 или R1 текущего регистрового банка, а для 16-разрядных - регистр DPTR. Сигналы чтения и записи ( и ) активизируются только во время выполнения команд MOVX.