Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Методы адресации, команды пересылки и арифметических операций




 

1) Регистровый метод адресации используется для указания на операнды, расположенные в регистре. Если в команде содержится имя регистра (R0, R1, R2, …, R7,А,В), то такая команда принадлежит регистровому методу адресации.

Рассмотрим команды с этим методом адресации:

Команды пересылки:

Формат команд пересылки- MOV <приемник>, <источник>

MOV A, Rn;(Rn) → A

где Rn – регистры R0, R1, R2, …, R7.

MOV Rn, A;A → Rn

MOV Rn, A;A → Rn

ХСН А, Rn;А ↔ Rn

Примеры:

MOV R3, A;A → R3

ХСН А, R5;А ↔ R5

 

Команды сложения:

ADD A, Rn;A + Rn→ A,

где Rn – регистры R0, R1, R2, …, R7.

ADDC A, Rn;A + Rn +C→A,

Где C – бит заёма /переноса.

Примеры:

ADD A, R2;A + R2→ A;

Команды вычитания:

SUBB A, Rn; A - Rn - C →A

Примеры:

SUBB A, R5; A - R5 - C → A,

Команды умножения и деления:

MUL AB; A * B→ BA,

В – старший байт, А – младший байт результата

DIV AB; A / B→A.B,

В – остаток, который не делится нацело (не десятичная дробь), А – целая часть результата.

Отметьте, что эти команды в качестве операндов используют только регистры А и В

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

INC Rn; Rn + 1 → Rn,

DEC Rn; Rn - 1→ Rn.

Примеры:

INC R1; R1 + 1→ R1,

DEC R0;R0 - 1 → R0.

 

2) Прямая байтовая адресация используется для обращения к ячейкам памяти или к регистрам специальных функций. Если в регистре используется прямой адрес ячейки памяти или регистра специальной функции, то такая адресация называется прямой байтовой адресацией.

Рассмотрим команды с этим методом адресации:

Команды пересылки:

MOV Rn, ad; (ad) → Rn

где (ad) – адрес ячейки (однобайтный).

MOV ad, Rn;Rn → (ad)

MOV A, ad;(ad)→ A

MOV ad, A;A → (ad)

MOV add, ads;(ads) → (add)

ХСН А, ad;А ↔ (ad)

Примеры:

MOV 2FH, R2;R2 → (2FH)

Команды сложения:

ADD A, ad; A + (ad) → A,

где (ad) – адрес ячейки (однобайтный).

ADDC A, ad;A + (ad)+C → A,

Пример:

ADD A, 20H;A + (20H) → A;

Команда вычитания:

SUBB A, ad;A - (ad) - C → A.

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

INC ad;(ad) + 1→ (ad),

DEC ad;(ad) - 1→ (ad).

3) Прямая побитовая адресация используется для обращения к отдельно адресуемым 128 битам, расположенным в ячейках памяти с адресами от 20Н до 2FH и к отдельно адресуемым битам регистров специальных функций.

Рассмотрим команды с этим методом адресации:

CLR bit;bit = 0,

где bit – однобайтный адрес бита.

SETB bit;bit = 1

MOV C, bit;(bit) → (С)

MOV bit, C;(С) → (bit)

Примеры:

CLR 05H; (05H) = 0

SETB 10H; (10H) = 1.

4) Непосредственная адресация использует константы, которые явно указаны в команде. Признак константы в команде- значёк #.

Рассмотрим команды с этим методом адресации:

Команда пересылки однобайтного числа:

MOV A, #d8;d8 → A

где #d8- однобайтная константа,

MOV Rn,#d8; d8→ Rn

MOV ad, #d8;d8 → (ad)

Пример:

MOV A, #34H;34H → A

Команда пересылки двухбайтного числа:

MOV DPTR, #d16; d16 → (DPTR),

где #d16- двухбайтная константа, DPTR- 16-разрядный регистр – указатель данных.

Пример:

MOV DPTR, #2100H; 2100H →(DPTR)

Команды сложения:

ADD A, #d8; A + d8 →A,

# - признак константы; d8 – однобайтное число.

Пример:

ADD A, #15Н; A + 15Н → A

ADDC A, #d8;A + #d8 + (C) → A

Команда вычитания:

SUBB A, #d8; A – d8 - C → A

Пример:

SUBB A, #3DH; A - 3DH - C → A

5) Косвенно – регистровая адресация используется для обращения к ячейкам памяти ОЗУ, адрес которых указан в регистре – указателе. Как правило, этими регистрами – указателями являются R0 и R1.

Рассмотрим команды с этим методом адресации:

Команда пересылки:

MOV A, @Ri;((Ri)) → A,

где @Ri- это содержимое ячейки памяти, адрес которой находится в регистре Ri(R0 или R1)

MOV ad, @Ri;((Ri)) → (ad)

MOV @Ri, A;А → ((Ri))

MOV @Ri, ad;(ad) → ((Ri))

MOV @Ri, #d8;d8 → ((Ri))

ХСН А, @Ri;А ↔ ((Ri))

ХСНD А, @Ri;(А 0-3) ↔ ((Ri)0-3)

Обмен младшей тетроды аккумулятора с младшей тетрадой байта косвенно адресуемой ячейки.

Пример:

MOV A, @R1;((R1)) → A,

Команда пересылки с участием внешних ячеек памяти:

Для обращения ко внешним ячейкам памяти используется 16-разрядный регистр – указатель данных DPTR.Этот регистр может быть использован для обращения к любой ячейке памяти в адресном пространстве до 64 килобайт.

MOVX A, @DPTR; ((DPTR)) →A

MOVX @DPTR, A; A → ((DPTR))

 

Команды сложения:

ADD A, @Ri; A +((Ri)) →A,

где @Ri- это содержимое ячейки памяти, адрес которой находится в регистре Ri(R0 или R1)

ADDC A, @Ri; A + ((Ri)) + C→ A

Пример:

ADD A, @R1; A + ((R1)) → A

Команда вычитания:

SUBB A, @Ri; A –((Ri)) - C→ A

Пример:

SUBB A, @R1; A – ((R1)) - C →A

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

INC @Ri;(Ri) + 1 → (Ri)

DEC @Ri;Ri – 1 → (Ri)

 

6) Косвенная адресация по сумме базового и индексного регистров очень похожа на косвенно – регистровую адресацию. При этом адрес получается по сумме базового и индексного регистров. Любой байт памяти может быть выбран по сумме содержимого DPTR или счётчика команд PC + содержимое аккумулятора.

MOVC A, @A + DPTR;((A)+ (DPTR)) → A

MOVC A, @A + PC;((A)+ (PC)) → A

 

Рассмотрим пример решения задания с применением команд с различыми методами адресации:

Задание1: Решить математическое выражение без использования косвенно-регистровой адресации(Листинг решения приведён ниже)

[(20H)*10H – (21H)/07H] → (22H)

 

ORG 0

MOV A, 20H; (20H) → A

MOV B,#10H; 10H→ B

MUL AB; AB→ BA

MOV R0, A; A→ R0

MOV A, 21H; (21H) →A

MOV B, #07H; 07H→ B

DIV AB; A / B→A.B

MOV R1, A; A→R1

MOV A, R0; R0 → A

CLR C; C = 0

SUBB A, R1; A – R1 - C→ A

MOV 22H, A; A→(22H)

L1: JMP L1;переход на метку L1(зацикливание на этом месте)

END

Порядок отладки программ рассмотрен в п.п. 6 этих методических указаний.

Задание2: Решть математическое выражение с использования косвенно-регистровой адресации.(Листинг решения приведён ниже)

[(20H)*10H – (21H)/07H] → (22H)

 

ORG 0

MOV R0, #20H; 20H→ R0

MOV A, @ R0; ((R0)) → A

MOV B,#10H; 10H→ B

MUL AB; A*B→ BA

MOV R1, A; A → R1

INC R0; R0 + 1→ R0

MOV A, @R0; ((R0)) →A

MOV B, #07H; 07H→ B

DIV AB; A / B→ A.B

MOV R2, A; A→ R2

MOV A, R1; R1→A

CLR C; C = 0

SUBB A, R2; A – R2 - C→ A

INC R0; R0 + 1 →R0

MOV @R0, A; A→ ((R0))

L1: JMP L1;переход на метку L1(зацикливание на этом месте)

END

 

ЛОГИЧЕСКИЕ ОПЕРАЦИИ

1) Логическое «И», логическое умножение, «/\»

 

Принцип операции: если будет хотя-бы один 0, то и результат будет 0. Этот принцип иллюстрирует следующий пример из электротехники:

 

X1 X2 Y

При приложенном напряжении ток приходит в точку Y, если включены (включены –1, выключены -0) все выключатели.

Далее приводится таблица истинности для этой операции:

 

X1 X2 Y
     
     
     
     

 

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

1. Регистровый метод:

ANL A, Rn; A /\ Rn →A

 

2. Непосредственная адресация:

ANL A, #d8; A /\ d8→ A

 

3. Прямая адресация

ANL A, ad; A /\ (ad) →A

ANL ad, A; (ad) /\ A→(ad)

ANL ad, #d8; (ad) /\ d8→ (ad)

 

4. Косвенно – регистровая адресация:

ANL A, @Ri; A /\ ((Ri)) → A

5. Прямая битовая адресация:

ANL C, bit;(С) /\ (bit) → (С)

ANL C, /bit;(С) /\ (bit) → (С)

 

Операции логического умножения используют для маскирования информации, а также сброса определённых битов в регистрах, ячейках памяти, портах.

 

Анализ состояния младшего бита

X X X X X X X X

 

A(аккумулятор)

 

 

               

 

Маска с «1» в младшем бите

 

_________________________________________

 

              X

 





Поделиться с друзьями:


Дата добавления: 2017-02-24; Мы поможем в написании ваших работ!; просмотров: 391 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Человек, которым вам суждено стать – это только тот человек, которым вы сами решите стать. © Ральф Уолдо Эмерсон
==> читать все изречения...

2307 - | 2155 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.