- •Лабораторная работа n 2
- •Общие сведения
- •2.1 Структура подсистемы памяти омк p89lpc932.
- •2.2 Система команд омк p89lpc932.
- •Арифметические команды.
- •Логические команды.
- •Команды программных переходов.
- •Режимы адресации.
- •Булевый процессор.
- •Предварительная подготовка к работе
- •Порядок выполнения работы
- •Содержание отчета
- •Контрольные вопросы
Булевый процессор.
При реализации булевых (битовых) операций в качестве источников/приемников операндов используются булевый аккумулятор (разряд С регистра PSW) и непосредственно адресуемые биты, находящиеся в резидентной памяти данных DATA. Для адресации к конкретному биту используется его номер (адрес в битовом пространстве памяти).
Команды манипуляции с битами позволяют:
устанавливать, сбpасывать, инвертировать отдельные биты; совершать условные переходы по установленному/сброшенному биту;
обменивать содержимое битов с содержимым аккумулятора С;
производить операции "И" и "ИЛИ" с содержимым разряда С и отдельных битов с записью результата этих операций в разряд С.
Предварительная подготовка к работе
1.Повторить последовательность и назначение этапов подготовки программного обеспечения с использованием кросс-средств. Повторить синтаксис директив ассемблера ASM51, команды и режимы адресации OMK P89LPC932.
2.В соответствии с вариантом задания (таблица 2.4) подготовить программу на языке ассемблера, выполняющую пересылку массива констант (8 чисел) из памяти программ Code Memory (ПП) в резидентную память данных IDATA (РПД), затем осуществить вывод в цикле массива констант из РПД на индикацию с интервалом 0,5 сек. Для этого использовать подпрограмму DELAY из первой лабораторной работы.. В программе необходимо предусмотреть инициализацию указанной области ПП константами с помощью директивы DB.
Считывание данных из памяти программ выполняется командой
MOVC A,@A+DPTR.
Двухбайтовый регистр-указатель DPTR в начале программы должен быть инициализирован командой
MOV DPTR,#addr1,
аddr1 – базовый адрес массива констант в ПП (адрес первой константы), а в аккумулятор необходимо заносить значение смещения пересылаемой константы относительно базового адреса массива.
Пересылку констант в ячейки РПД целесообразно выполнять в цикле командой
MOV @Ri,A, i=0,1.
Предварительно регистр Ri должен инициализироваться командой
MOV Ri,#addr2,
где addr2 - адрес первой константы в РПД, а затем инкрементироваться при каждом проходе цикла
INC Ri.
Кроме того, для подсчета числа пересылок необходим счетчик цикла (например, регистр Rj). Для организации цикла удобно использовать команду
DJNZ Rj, L,
которая декрементирует содержимое Rj и в случае его неравенства нулю передает управление на метку L (начало цикла).
Таблица 2.4
№ вар. |
Нач. адрес массива в Code Memory |
Нач. адрес массива в IDATA |
№ банка рег. | |
№ сектора |
№ стр. в секторе | |||
1 |
0 |
3 |
20h |
3 |
2 |
1 |
2 |
30h |
2 |
3 |
2 |
0 |
40h |
1 |
4 |
3 |
4 |
50h |
0 |
5 |
4 |
8 |
60h |
3 |
6 |
5 |
6 |
70h |
2 |
7 |
6 |
5 |
80h |
1 |
8 |
7 |
0 |
90h |
0 |
9 |
0 |
5 |
A0h |
3 |
10 |
1 |
6 |
B0h |
2 |
11 |
2 |
7 |
C0h |
1 |
12 |
3 |
0 |
D0h |
0 |
13 |
4 |
2 |
E0h |
3 |
14 |
5 |
1 |
F0h |
2 |
15 |
6 |
3 |
38h |
1 |
3.В соответствии с вариантом задания (таблица 2.5) подготовить на языке ассемблера программу, копирующую в ячейки РПД содержимое регистров специальных функций, а затем осуществить вывод этих значений в цикле из РПД на индикацию с интервалом 0,5 сек. Для этого использовать подпрограмму DELAY из первой лабораторной работы.. В программе предварительно необходимо выполнить инициализацию регистров SFR константами.
Для выполнения пересылок использовать команду
MOV @Ri,ad, i=0,1.
где ad - адрес источника, который необходимо определить по таблице 2.2.
№ вар. |
SFR |
Нач. адрес массива в IDATA |
№ банка рег. для косв. ад-ресации. |
1 |
DPL, DPH, ICRAL, IP0 |
F0h |
0 |
2 |
DEEDAT, TL0, TH0, B |
E0h |
1 |
3 |
DEEADR, ICRAH, TL1, TH1 |
D0h |
2 |
4 |
ICRBH, DPL, DPH, IP0 |
C8h |
3 |
5 |
ICRBL, ICRAL, TL0, TH0 |
C0h |
0 |
6 |
SBUF, DPL, DPH, DEEDAT |
B0h |
1 |
7 |
SP, DEEADR, TL1, TH1 |
A0h |
2 |
8 |
SPDAT, DEEADR, IP0, B |
90h |
3 |
9 |
TMOD, ICRAL, TL1, TH1 |
80h |
0 |
10 |
I2DAT, DEEDAT, TL0, TH0 |
70h |
1 |
11 |
DEEDAT, TL1, TH1, B |
60h |
2 |
12 |
DEEADR, DPL, DPH, IP0 |
50h |
3 |
13 |
ICRAL, TL1, TH1, B |
40h |
0 |
14 |
DEEDAT, TL0, TH0, IP0 |
30h |
1 |
15 |
DEEADR, ICRAL, DPL, DPH |
20h |
2 |
4. В соответствии с вариантом задания (таблица 2.6) подготовить программу для обработки измерительной информации. Исходные данные хранятся в добавочной памяти данных AUX RAM в виде массива (8 чисел, необходимо программно сформировать этот массив). Найти среднее значение Xср, сравнить его с уставками - двумя константами Qmax и Qmin, хранящимися в памяти программ. При нахождении среднего значения деление выполнять путем сдвига суммы на 3 разряда вправо. По результатам сравнения сформировать признак p и вывести его на индикацию:
Xср >= Qmax, p=11;
Qmax > Xср > Qmin, p=10;
Xср <= Qmin, p=00;
№ вар. |
Числа |
№ вар. |
Числа |
1 |
01h, F2h, A5h, EDh, 06h, 9Ahh, 09, 07h |
9 |
98h, 64h, 82h, FEh, B0h, 57h, AAh, D8h |
2 |
B6h, 52h, C9h, 04h, D1h, 0Ah, C5h, A4h |
10 |
4Ah, 28h, 9Eh, 5Fh, 55h, 97h, BAh, 03h, |
3 |
78h, BDh, FFh, 58h, 03h, AFh, 87h, 91h |
11 |
77h, 5Fh, 7Ah, 82h, B9h, 05h, BBh, 67h |
4 |
E4h, 83h, 09h, B1h, AEh, 22h, 18h, 45h |
12 |
68h, 9Ah, 61h, 02h, B8h, 28h, C4h, 8Eh |
5 |
E5h, B8h, 23h, 64h, A4h, 5Fh, 55h, FAh |
13 |
58h, B0h, F4h, 3Ah, 67h, 51h, 1Fh, 72h |
6 |
0Ah, 5Ah, 66h, E8h, 82h, 0Bh, 69h, 5Fh |
14 |
25h, 87h, F3h, 6Ah, 72h, 94h, BFh, 4Eh |
7 |
34h, D8h, 0Ch, 5Fh, 76h, 09h, Ech, 61h |
15 |
84h, 34h, AEh, 5Dh, 73h, B4h, 1Eh, F9h |
8 |
04h, 55h, F1h, 67h, ACh, E8h, 2Fh, 58h |
|
|