- •2.4 Выполнение арифметических операций в микропроцессорных
- •1 Основные сведения об информационно-измерительных системах
- •1.1 Место информационно-измерительных систем в современной измерительной технике и информационных технологиях
- •1.2 Классификация иис
- •1.3 Принципы организации и основные структурные схемы иис
- •1.3.1 Измерительные системы
- •1.3.2 Телеизмерительные системы
- •1.3.3 Системы автоматического контроля
- •1.3.4 Системы технической диагностики
- •1.4 Функции микропроцессоров в иис
- •1.5 Преимущества микропроцессорных измерительных систем
- •2 Базовые понятия и определения микропроцессорной арифметики
- •2.1 Системы счисления
- •2.1.1 Классификация систем счисления
- •1. Табличные методы.
- •2. Расчетные методы.
- •2.2 Представление числовых данных в микропроцессорных системах
- •Обратный код.
- •2.2.1 Арифметические флажки
- •2.2.2 Контроль переполнения в микропроцессорных системах
- •2.3 Выполнение арифметических операций в микропроцессорных системах над двоичными числами с фиксированной точкой
- •2.3.3 Операции сдвига в микропроцессорных системах
- •2.4 Выполнение арифметических операций в микропроцессорных системах над числами с плавающей точкой
- •2.4.2 Форматы двоичных числовых данных с плавающей точкой
- •2.4.3 Стандарт ieee-754
- •2.4.5 Сложение и вычитание чисел в форме с плавающей точкой
- •2.4.6 Умножение и деление чисел в форме с плавающей точкой
- •2.5 Представление числовых данных в коде bcd
- •2.5.1 Форматы числовых данных bcd-кодов
- •2.5.2 Арифметические операции над числовыми данными bcd-кодов
- •3 Основы микропроцессорных метрологических систем
- •3.1 Архитектурные особенности вычислительных систем на базе микропроцессора і80х86 в реальном режиме
- •3.1.1 Исследование сегментной структуры программы
- •3.2 Изучение арифметических и логических команд мп і80х86
- •3.2.1 Изучение принципов логического анализа данных
- •3.2.2 Изучение арифметических команд мп і80х86
- •3.3 Обработка массивов на языке Assembler для мп і80х86
- •3.3.2 Команды сравнения, условного и безусловного перехода
- •3.3.3 Оператор цикла
- •3.4 Исследование принципов организации подпрограмм в языке Аssembler для мп і80х86
- •3.4.1 Принципы функционирования стека в мп і80х86
- •3.5 Изучение принципов функционирования микропроцессоров со стековой архитектурой на примере математического сопроцессора і80х87
- •3.5.2 Архитектура математического сопроцессора і80х87
- •Задание:
- •Приложение е. Программа для изучения принципов обработки массивов на языке assembler для мп і80х86
- •Приложение и. Программа для исследования системы команд математического сопроцессора
3.3 Обработка массивов на языке Assembler для мп і80х86
3.3.1. Принципы хранения массивов в памяти ПЭВМ, механизм
базово-индексной адресации данных в МП i80x86
При описании массива стандартно указывается количество и тип элементов. При этом нумерация элементов, располагающихся в памяти последовательно, по умолчанию, начинается с нуля. Объем S памяти, занимаемой массивом, определяется как:
,
где N – количество элементов массива, T – тип (размер) элемента массива.
В общем случае при прямой адресации в команде вместе с адресом может быть указан некоторый регистр (mov AX, w[BX]). Данная команда будет работать не с указанным адресом w, а с исполнительным (эффективным) адресом wисп, вычисляемым по формуле:
,
где BX – обозначает значение в регистре ВХ.
Таким образом, прежде чем выполнить такую команду, центральный процессор прибавит к указанному адресу w текущее значение регистра ВХ, получит некоторый новый адрес и именно из ячейки с этим адресом возьмет второй операнд (если в результате сложения получилась слишком большая сумма, то от нее берутся только младшие 16 битов). Регистр ВХ носит название регистра-модификатора адреса.
В МП i80x86 разрешается в командах указывать два регістра модификатора, причем один из них должен быть регистром ВХ или ВР, а другой – регистром SI или DI. Такой вид адресации называется базовым-индексным (в регистры ВХ или ВР, как правило, заносится базовый адрес некоторой области памяти, а в регистры SI или DI – индексы элементов данной области). Полный физический адрес операнда определяется как сумма содержимого следующих регистров:
DS:[BX][SI] Aфиз=DS*10h+BX+SI;
DS:[BX][DI] Aфиз=DS*10h+BX+DI;
ЕS:[BX][SI] Aфиз=ES*10h+BX+SI;
ЕS:[BX][DI] Aфиз=ES*10h+BX+DI;
SS:[BP][SI] Aфиз=SS*10h+BP+SI;
SS:[BP][DI] Aфиз=SS*10h+BP+DI.
В общем случае для массива с индекcацией элементов, начинающейся от нуля [0..N-1], адрес i- элемента Аi определяется как:
,
где В – начальный (базовый) адрес массива, T – тип (размер) элемента массива.
Причем, значение базового адреса массива заносится, как правило, в регистр ВХ, а индекс элемента – в один из индексных регистров в SI или DI. Например:
var w: array[0..9] of word; объявление массива из 10 элементов;
……………………………
mov ES, seg w загрузить в ЕS сегментный адрес массива w;
mov BX, offset w загрузить в ВХ относительный адрес массива w;
mov SI,10 загрузить в SI индекс 5-го элемента массива w;
mov AX, ES:[BX][SI] загрузить в АХ 5-й элемент массива w.
3.3.2 Команды сравнения, условного и безусловного перехода
При сравнении данных следует применять команду микропроцессора cmp op1,op2 формат которой совпадает с форматом рассмотренных в п.п. 2.1.2 логических команд. Анализ полученного результата можно проводить с использованием команд условного перехода, анализирующих флаги ZF, SF, CF, OF. Мнемокоды команд условного перехода, применяемых для сравнения беззнаковых чисел, применяемых после команды cmp, приводятся в табл. 3.4.
Таблица 3.4 – Команды условного перехода, используемые после команды сравнения СМР
Мнемокод команды |
Условие для перехода по смр ор1, ор2 |
Состояние флагов для перехода |
JZ; JE / JNZ; JNE |
op1=op2 / op1<>op2 |
ZF=1 / ZF=0 |
JB |
op1<op2 |
CF=1 |
JBE |
op1<=op2 |
CF=1 or ZF=1 |
JА |
оp1>op2 |
CF=0 and ZF=0 |
JАE |
оp1>=op2 |
CF=0 |
В качестве аналогов команд JE/JNE при логических операциях целесообразно применять команды JZ/JNZ (ZF=1/ZF=0). Пример: сравнить два слова А и В, если А>B, то переход на метку greater:
mov AХ, A |
загрузка содержимого ячейки А в регистр АХ; |
cmp AX, B |
команда сравнения содержимого AХ и B; |
ja @greater |
условный переход на метку greater, если A>B; |
……….. |
пропускаемый, в случае невыполнения условия, код; |
@greater: |
метка указывает на выполняемые после нее команды. |
Для выполнения безусловного перехода следует применять команду jmp ор, где операнд указывает на адрес перехода, в качестве которого, как правило, указывается метка.
-
@lbl:
метка @lbl;
………..
произвольный программный код;
jmp @lbl
безусловный переход на метку @lbl.
