Главная » Просмотр файлов » 02_Написание_ассемблерных_программ_Информ_материал_СПО_ч2

02_Написание_ассемблерных_программ_Информ_материал_СПО_ч2 (1268618), страница 5

Файл №1268618 02_Написание_ассемблерных_программ_Информ_материал_СПО_ч2 (Лекция) 5 страница02_Написание_ассемблерных_программ_Информ_материал_СПО_ч2 (1268618) страница 52021-09-20СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 5)

Однако его значение можно изменить с помощью директивы ORG.Знак «$» возвращает текущее значение счетчика. Этот оператор позволяет использоватьСА в выражениях.Примеры:/* Пусть адрес метки Str равен 100, тогда длина строки составляет 10 символов, а адрес конца строки будет иметь значение 109.Символ конца строки (ограничитель) тогда будет иметь адрес 110.*/Str:StrLendbequ‘Это пример’, 0$ - Str – 1 ; длина строки = 111 - 100 - 1Можно также использовать символ «$» в инструкциях (везде, где допустимо выражение).sjmp & ; Программная «ловушка» (бесконечный цикл)cjnejca, #3, $+3LT→; ACC < 3↓; ACC >= 32.5.5.

Операторы (операции)Ассемблер A51 предоставляет несколько классов операторов, которые позволяют вамсравнивать и комбинировать (сочетать) операнды и выражения. Эти операторы представлены ниже в следующей таблице.Арифметические операторыАрифметические операторы выполняют такие функции как сложение, вычитание, умножение и деление. Эти операторы требуют один или два операнда в зависимости от операции (выполняемой функции). Результат всегда 16-битовое значение. Переполнение илизаем не обнаруживаются.

Деление на 0 обнаруживается и приводит к ассемблерной ошибке. В следующей таблице представлен список арифметических операторов и их краткоеописание.Пример:?DT?filesegment dataRSEG ?DT?fileX:DS 4 ; - размер 4-х байт…………………; программный сегментCLR AMOV X, A; по адресу АMOV X+1, A ; А – адрес следуей ячейкиMOV X+2, AMOV X+3, A20ОператорыОператор++*/MOD( )NOTSHRSHLANDORXORGTE>=LTE<=NE<>EQ=LT<GT>LOWHIGHСинтаксисОписаниеАрифметические операторы+ выражениеУнарный плюс- выражениеУнарный минусвыражение + выражениеСложениевыражение - выражениеВычитаниевыражение* выражениеУмножениевыражение / выражениеЦелочисленное делениевыражение MOD выражение Остаток(выражение)Устанавливают порядок выполнения операцийДвоичные операторыNOT выражениеПобитовая инверсиявыражение SHR число сдви- Логический сдвиг вправоговвыражение SHL число сдви- Логический сдвиг влевоговвыражение AND выражениеПобитовая операция «И»выражение OR выражениеПобитовая операция «ИЛИ»XOR выражениеПобитовая операция «ИСКЛЮЧАЮЩЕЕИЛИ»Операторы отношения (сравнения)выражение1 >= выражение2Истина, если выражение1 больше или равновыражение2; иначе – ложьвыражение1 <= выражение2Истина, если выражение1 меньше или равновыражение2; иначе – ложьвыражение1 <> выражение2Истина, если выражение1 не равно выражение2; иначе – ложьвыражение1 = выражение2Истина, если выражение1 равно выражение2; иначе – ложьвыражение1 < выражение2Истина, если выражение1 меньше выражение2; иначе – ложьвыражение1 > выражение2Истина, если выражение1 больше выражение2; иначе – ложьПрочие операторыLOW выражениеМладший байт выраженияHIGH выражениеСтарший байт выраженияДвоичные операции (операторы)Двоичные операторы используются для инверсии, сдвига и выполнения побитовых операций над двоичными значениями их операндов.

Следующая таблица содержит список двоичных операторов и их краткое описание.Операторы отношенияЭти операторы сравнивают два операнда. Результат сравнения – TRUE или FALSE. Результат FALSE имеет значение 0000h. TRUE-результат имеет ненулевое значение. Следующая таблица содержит список операторов сравнения и их краткое описание.21Прочие операторыЗдесь представлены операторы, не вошедшие в предшествующие категории.

Это операторы LOW и HIGH, возвращающие соответственно младший и старший байт выражения.Пример:X:DS 2X_0 EQU 1000; программный сегментMOV X, #HIGH X_0MOV X+1, #LOW X_0Приоритет операторовВсе операторы выполняются в точном, строго определенном порядке. Порядок вычислений (evaluation) имеет отношение к приоритету операторов. Последний требуется для того, чтобы определить какие операторы выполняются первыми в выражении. Ниже следующая таблица содержит список операторов в порядке их выполнения. Операторы первого уровня выполняются первыми.

Операторы с одинаковым приоритетом выполняютсяслева направо.Приоритет операторовУровень приоритета12345678Операторы()NOT, HIGH, LOW+ (унарный), - (унарный)*, /, MOD+, SHR, SHLAND, OR, XOR>=, GTE, <=, LTE, =, EQ, <>, NE, <, LT, >, GT2.5.6. ВыраженияВыражения — это комбинация операндов и операторов, которая может быть вычисленаассемблером. Операнд без операторов – простейшая форма выражения. Выражение можетбыть использовано во многих местах, где требуется операнд. Выражения имеют ряд атрибутов, описанных ниже.Классы выраженийКласс выражения назначается на основе используемых в них операндов.

Следующиеклассы применимы к выражениям:N NUMBER — класс выражения типа число number (безклассвое число);C ADDR — адрес имени в памяти типа CODE;D ADDR — адрес имени в памяти класса DATA;I ADDR — -//- IDATAX ADDR — -//- XDATAB ADDR — адрес имени в памяти типа BIT.Часто выражениям назначается класс NUMBER, т.к. они состоят только из числовых операндов, например MOV A, #3*2. При этом, значению символического адреса автоматически присваивается класс сегмента, где определен адрес.

Когда значение имеет класс используются следующие правила:1) результат унарный операции имеет тот же класс, что и операнд;222) результат всех бинарных операций за исключением сложения и вычитания будетиметь класс NUMBER;3) если только один из операндов операции сложения или вычитания имеет класс,то результат будет иметь тот же класс;4) если оба операнда имеют класс, то результат будет иметь класс NUMBER.Это означает, что значение с классом ± число дает значение с классом.Абсолютные выражения (константы) — всегда завершают свои вычисления до конца.Перемещаемые выраженияПеремещаемые выражения так называются потому, что они содержат ссылку на перемещаемое или внешнее символическое имя.

Выражения этих типов могут быть вычисленыассемблером только частично, т.к. ассемблер не знает конечного адреса перемещаемыхсегментов. Завершает вычисления линкер – редактор связей.Перемещаемое выражение обычно содержит только перемещаемое символическое имя,однако оно может также содержать и другие операнды и операторы. Перемещаемое символическое имя может быть модифицировано прибавлением или вычитанием константы.Имеется два базовых типа перемещаемых выражений: простые перемещаемые выражения и расширенные перемещаемые выражения.Простые перемещаемые выраженияПростые перемещаемые выражения содержат имена, которые определены в перемещаемом сегменте.

Это имена меток, подпрограмм, внешних ссылок. Но имена сегментов ивнешние имена не допустимы в простых перемещаемых выражениях.Простое перемещаемое выражение может быть использовано в 4-х контекстах (ситуациях):1) как операнд директивы ORG;2) как операнд в директивах назначения именам числовых значений (т.е. EQU, SET);3) как операнд в директиве инициализации кодовой памяти (DB, DW);4) как операнд машинной инструкции (команды).Примеры:REL1 + ABS1 * 10 ; здесь REL1 – переме аемое имя (метка), ABS1 –;REL2 ± ABS1константа, а «ABS1*10» – сложное выражение; здесь ABS1 – абсол тное выражениеREL1 + (REL2 – REL3) ; REL2 и REL3 – переме аемые имена в одном;сегменте; далее показаны неверные (недопустимые) приемы(REL1 + ABS1) * 10EXT1 - ABS1; здесь EXT1 – внешнее имяREL1 + REL2; REL1 и REL2 – два переме аемых выражения23Расширенные перемещаемые выраженияК этим выражениям в основном применимы те же правила, что и к простым перемещаемым выражениям.

Имена сегментов и внешние имена допустимы в расширенных перемещаемых выражениях. Расширенные перемещаемые выражения могут быть использованытолько в качестве операндов операторов, генерирующих код (как операнд машинной инструкции, и как операнд в директиве инициализации кодовой памяти DB и DW).Примеры:допустимыеREL1 + ABS*10EXT1 ± ABS1LOW(REL1+ABS1)WORD2 (SEG1)недопустимые(SEG1+ABS1)*10EXT1 - REL1LOW(REL1) + ABS1/* Вход в подпрограмму Subr и начало выполнения команды, име ейадреснатрипунктабольше,чемадресточкивходавподпрограмму, т.е.

по сути происходит «обход» или пропуск двухкоманд в начале подпрограммы */MOV SP, #STACK-1 ; здесь STACK – имя сегментаLCALL Subr + 3 ; здесь Subr – имя внешней подпрограммы2.6. Директивы ассемблера A51 фирмы KEIL2.6.1. Управление сегментированием памятиСегмент — блок программной памяти или памяти данных, которую создает ассемблер изкода или данных исходного (ассемблерного) файла. Семейство микроконтроллеров семейства 8051 имеет несколько специфических областей (пространств) памяти. Выиспользуете сегменты для размещения программного кода, констант и переменных в этихобластях.Счетчик адресаA51 для каждого сегмента обслуживает счетчик адреса (СА). Последний есть указатель вадресном пространстве активного сегмента.

Он представляет смещение дляперемещаемых сегментов или действительный адрес для абсолютных сегментов. Припервой активизации сегмента счетчик адреса устанавливается в 0. После каждойинструкции (команды) СА изменяется на число байтов, соответствующее инструкции.Директивы инициализации и резервирования памяти также изменяют значение СА.Директива ORG устанавливает новое значение СА. Если вы изменили активный сегменти позже вернулись к этому сегменту, СА восстановит свое предыдущее значение. Каждыйраз, когда ассемблер встречает метку, он назначает метке текущее значение СА и типтекущего сегмента. Знак $ указывает значение СА в активном сегменте.

Нижеописываются различные типы сегментов.Перемещаемые сегментыПеремещаемые сегменты имеют имя, класс и другие атрибуты. Перемещаемые сегменты содинаковым именем, но из разных объектных модулей, рассматриваются как части одногои того же сегмента и называются частичными (неполными) сегментами. Эти сегментыобъединяются во время компоновки редактором связей. Перемещаемые сегментысоздаются директивой SEGMENT. После определения имени перемещаемого сегмента,вы можете выбрать сегмент, используя директиву RSEG. Выбранный сегмент становится24активным и остается таковым, пока сегмент не будет изменен очередной директивойRSEG или директивой определения абсолютного сегмента.Обычно ассемблерные подпрограммы помещают в перемещаемые сегменты.

Характеристики

Тип файла
PDF-файл
Размер
1,64 Mb
Материал
Тип материала
Высшее учебное заведение

Список файлов лекций

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6372
Авторов
на СтудИзбе
309
Средний доход
с одного платного файла
Обучение Подробнее