Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры Схемотехника.doc
Скачиваний:
7
Добавлен:
25.09.2019
Размер:
14.02 Mб
Скачать

2.6.5. Команды обработки цепочек данных

Пять основных базовых команд: MOVS, CMPS, LODS, SCAS, STOS, позволяют обрабатывать по одному байту или 16-разрядному слову из цепочки (массива) данных. Этими командами могут обрабатываться цепочки данных до 64 кбайт. Команды могут выполнять передачу элемента цепочки данных, сравнение и поиск значений в цепочке данных.

Для адресации при использовании команд обработки цепочек данных используется сегментный регистр ES и индексные регистры SI и DI.

Регистр SI содержит смещение адреса источника. Состояние признака D определяет декремент (D=1) или инкремент (D=0) регистров SI и DI.

Команда MOVS осуществляет пересылку байта (MOVS B) или 16-разрядного слова (MOVS W) из цепочки данных источника, адресованного с помощью регистра SI, в цепочку данных приемника, адресованного с помощью регистра DI. После выполнения команды MOVS содержимое регистров указывает адрес следующего элемента цепочки данных.

Команда сравнения CMPS вычитает элемент цепочки данных приемника из элемента цепочки данных источника. Команда устанавливает признаки А, C, O, P, S, Z, но не изменяет операндов.

Содержимое регистров SI и DI изменяется в ходе выполнения команды. При выполнении команды сканирования элементов цепочки данных SCAS элемент цепочки данных, адресованный с помощью регистра DI, вычитается из содержимого аккумулятора AL (команда SCAS B) или из содержимого аккумулятора АХ (команда SCAS B). В процессе выполнения команды содержимое регистра DI изменяется и вырабатываются признаки A, C, O, P, S, Z. Содержимое аккумулятора и элемент цепочки данных не изменяются.

Команда LODS служит для загрузки аккумулятора AL (LODS B) или АХ (LODS W) элементом цепочки данных. После выполнения команды изменяется содержимое регистра SI. Обычно эту команду используют без повторений.

Команда STOS записывает содержимое аккумулятора AL (STOS B) или АХ (STOS W) в область памяти цепочки данных. После выполнения команды изменяется содержимое регистра DI.

Команда повторения REP предшествует вышеперечисленным командам и заставляет их повторяться. Число повторений задается содержимым регистра СХ, а конец цикла определяется состоянием (СХ)=0. Если команда REP предшествует командам CMPS и SCAS, то конец цикла определяется признаком Z, а для записи команды REP используется мнемоника REPZ (Z=1) либо REPNZ (Z=0).

Вопрос 4

Ассемблер в системе команд 8-разрядного МП. Типы ассемблеров. Требования к полям записи программ на ассемблере. Примеры программирования на ассемблере.

Ассемблер-язык среднего уровня программирования.

Типы ассемблеров:

1. Резедентный - загружается в память рабочей машины.

“+” – малообъёмный

“-” – нужно заведомо знать, что машина способна работать.

2. Кросеассемблер - ассемблер, который позволяет работать на “инструментальной машине” (не отлаживаемой).

“-” - надо знать обе среды.

3. Макроассемблер- позволяет работать с макроопределениями.

4. Метоассемблер – много ассемблерная конструкция, позволяет выбирать необходимый тип ассемблера, который подходит для нашей машины.

По типу функционирования:

Однопроходные а-ры многопроходные а-ры

за один проход а-ра исходный 2-ух проходные- за один

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

метки(переходов),за 2-ой

транслируется программа.

DB-определить байт

DW-определить слово

DS 10H; -зарезервировать область памяти

ORG 1000H-установить счётчик на другой адрес

SET-установить значение, имя может переобозн.

EQV-эквивалентность(типа const)

IF < >

………. –Условное ассемирование

END IF.

MACRO

………. – Макро определена

END MACRO.

LIST-выводит листинг программы

END-конец программы

Пример: стандартный план программы

Поле адреса

Поле кода команд

Поле метки

Поле мнемоники

Поле операнда

Поле комментарий

Пишутся в 16 сс

Пишется байты команды

Помеченная команда: метки могут быть символьные и цифровые, но всегда начинается с символа, метка не должна совпадать с мнемоникой команды

MOV

B;

Q

D

H

ASCII

Поле метки и поле символов - исходный модуль.

Адрес и поле команды – объектный модуль

Пример: перезапись старого массива в новую область памяти.

0800

…… - старый массив(16 байтов)

080F

0900

…… - новый массив.

090F

Будем использовать BC- для адресов старого массива и DE- для нового массива.

L- счетчик байтов. Рабочую программу начнем с адреса 1200H.

Адрес

Код команды

Метки

Мнемоника

Операнд

Комментарии

1200

010008

BEGIN:

LXIB;

0800H;

Загружаем нач.адрес старого массива

1203

110009

LXID;

0900H;

1206

2E10

MVIL;

L, 16;

Загружаем счетчик

1208

0A

CYCLE;

LDAX B;

[M]([RP])->A

1209

12

STAX D;

Загружаем Эл-ты старого массива

120A

03

INX B

120B

13

INX D

120C

2D

DSR L

120D

C20812

JNZ

CYCLE

1210

76

HLT