Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Директивы ассемблера.Директивы ассемблера можно классифицировать следующим образом (рис. 1). Рис. 1. Классификация директив ассемблера Директивы режимов трансляции. Директивы определения общего режима трансляции определяют глобальные особенности трансляции, которые должны учитываться при обработке текста программы (рис. 2). Рис. 2. Директивы определения общего режима трансляции Директивы управления листингом определяют, что следует включать в содержимое файла листинга. Директивы указания типа процессора определяют, какие регистры процессора, режимы адресации, команды разрешено использовать в программе. Основание системы счисления определяет, как будут интерпретироваться числа по умолчанию. Директивы assume фактически определяют точки программы, от которых транслятор отсчитывает смещения до меток, используемых в программе в качестве символических адресов. Директива model чаще всего используется совместно с директивами упрощенной сегментации, рассматриваемыми далее. Она определяет, как будут расположены сегменты по отношению друг к другу, каким образом будут адресоваться данные, как будут вызываться подпрограммы Директивы секционирования программы. Директивы секционирования программы предназначены для оформления логически законченных участков программы (рис. 3). Рис. 3. Директивы секционирования программы Сегменты программы могут описываться традиционными директивами segment и ends, как показано в приведенном примере, и директивами упрощенной сегментации. Для описания процедур в ассемблере предусмотрены директивы proc и endp. Схематичное оформление процедуры с именем P: P proc ……… ………; текст процедуры ………. P endp Директивы макросредств. Директивы макросредств позволяют при написании программы оперировать заранее заготовленными фрагментами текстов. Их классификация (рис. 4). Рис. 4. Классификация директив макросредств Директивы резервирования данных. Директивы резервирования данных размещают и в случае необходимости, инициализируют области памяти под данные программы. Операнды Могут быть использованы следующие операнды: · Метки, определённые пользователем (дают значение своего положения). · Переменные, определённые директивой SET. · Константы, определённые директивой EQU. · Числа, заданные в формате: o десятичном (принят по умолчанию): 10, 255; o шестнадцатеричном (два варианта записи): 0x0a, $0a, 0xff, $ff; 16 o двоичном: 0b00001010, 0b11111111; o восьмеричном (начинаются с нуля): 010, 077. · Константы с плавающей точкой. · PC – текущее значение программного счётчика (PC – ProgrammCounter). Операторы Ассемблер поддерживает ряд операторов, которые перечислены в табл. 1 (чем выше положение в таблице, тем выше приоритет оператора). Выражения могут заключаться в круглые скобки, такие выражения вычисляются перед выражениями за скобками. Таблица 1
Функции В Ассемблере определены следующие функции: LOW(выражение) – возвращает младший байт выражения; HIGH(выражение) – возвращает второй байт выражения; BYTE2(выражение) – то же, что и функция HIGH; BYTE3(выражение) – возвращает третий байт выражения; BYTE4(выражение) – возвращает четвёртый байт выражения; LWRD(выражение) – возвращает биты 0-15 выражения; HWRD(выражение) – возвращает биты 16-31 выражения; PAGE(выражение) – возвращает биты 16-21 выражения; EXP2(выражение) – возвращает 2 в степени (выражение); LOG2(выражение) – возвращает целую часть log2(выражение). Следующие функции определены только в AVRASM2: INT (выражение) – преобразовывает выражение с плавающей точкой в целое (т.е. отбрасывает дробную часть); FRAC(выражение) – выделяет дробную часть выражения с плавающей точкой (т.е. отбрасывает целую часть); Q7(выражение) – преобразовывает выражение с плавающей точкой в форму пригодную для инструкций FMUL/FMULS/FMULSU (знак + 7-битовая дробная часть); Q15(выражение) – преобразовывает выражение с плавающей точкой в форму пригодную для инструкций FMUL/ FMULS/FMULSU (знак + 15-битовая дробная часть); ABS() – возвращает абсолютную величину постоян-ного выражения; DEFINED(символ) – возвращает «истина», если символ прежде определен директивами.equ,.set или.def. Обычно используется вместе с директивами if (.ifdefined(foo)), но может быть использовано в любом контексте. В отличие от других функций DEFINED(символ) требует наличия круглых скобок вокруг своего аргумента. Ассемблер AVRASM2 различает регистр символов (AVRASM не различает).
6. Классификация ошибок в ППО МС Логическая ошибка Это, пожалуй, наиболее серьезная из всех ошибок. Когда написанная программа на любом языке компилирует и работает правильно, но выдает неправильный вывод, недостаток заключается в логике основного программирования. Это ошибка, которая была унаследована от недостатка в базовом алгоритме. Сама логика, на которой базируется вся программа, является ущербной. Чтобы найти решение такой ошибки нужно фундаментальное изменение алгоритма. Вам нужно начать копать в алгоритмическом уровне, чтобы сузить область поиска такой ошибки.
|