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

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

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

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

В этом случае параметры должны быть сформированыв памяти вызывающей подпрограммой, базовый адрес должен быть определен вызывающей подпрограммой. Если используется общая область памяти, то теряется возможностьповторного входа в подпрограмму. Недостатком данного способа является большой расход памяти и низкое быстродействие.BaseAddr:заданная здесь предварительноформиру тсяобластьпамяти вызыва ие параметрыMOV DPTR, #BaseAddr ; передать базовый адресLCALL Subr ; вызов3) через программную память непосредственно. Для данного случая все параметры должны быть неизменяемыми, т.к. все программы располагаются в ПЗУ. Базовый адрес параметров находится на вершине стека после вызова подпрограммы стандартным способом.LCALL SubrDB Param1, Param2, ………………………….; далее выход из подпрограммыSubr:загрузка в14CLR AMOVC A, @A+DPTR ; считан Param1……………………………………….CLR AINC A ; не забывать увеличивать DPTR на 1MOVC A, @A+DPTR……………………………………………выход изподпрограммы4) через стек.загрузкав стек……………………….LCALL SubrSubr:MOV R0, SP ;DEC R0DEC R0MOV A, @R0 ; A := Param2……………………………..MOV R1, SPDEC R1MOV A, @R1MOV @R0, A ; в стек поместился по требуемому адресу младшийбайт возвратаINC R0INC R1MOV A, @R1MOV @R0, AMOV SP, R0 ; очистка стека — правильно провести указательстека в исходное состояниеRET ; выход из подпрограммыГлавными недостатками данного способа являются его неэффективность и длительностьвыполнения процедур входа в подпрограмму и выхода из нее.

Наиболее приемлемыми длямикроконтроллеров 51-ого семейства являются два первых способа передачи параметровподпрограмм.15Безусловные переходы: LJMP/AJMP/SJMPВ команде LJMP Addr16 содержится полный 16-разрядный адрес перехода. При выполнении этой команды PC := Addr16, что приводит к переходу по указанному адресу, приэтом возможен переход на внешние адреса. В команде AJMP адрес 11-разрядный, как вкоманде ACALL. Поэтому сама команда AJMP и адрес (метка), на который она ссылается, должны находиться в одной странице памяти размером 2048 байтов (одном модуле).В коротком переходе SJMP rel (2 байта) адрес перехода указывается смещением относительно адреса команды, следующей за команSJMP M1 -128дой SJMP, при этом подпрограмма может на- PCходиться в разных модулях.

Смещение пред- PC+2 Следующая команда  +127ставляется вторым байтом команды в дополнительном коде (знаковое целое). Этот переход позволяет передать управление в пределах 128  +127 байт относительно адреса следующей команды. На языке ассемблера Вы пишете обычную символическую метку, а программа-ассемблер вычислит необходимоесмещение при переводе этой команды в двоичный код. Можно поручить ассемблеру выбирать оптимальную (наиболее короткую) команду безусловного перехода, если воспользоваться обобщенной мнемоникой JMP.↓SJMP M1Косвенный переход: JMP @A+DPTRПосле выполнения этой команды ни аккумулятор, ни DPTR, ни флаги не изменяют своегозначения.

Эта команда позволяет организовать переход по адресу, вычисляемому в процессе выполнения программы (т.е. который указывает сумма). Обычно она применяетсядля реализации ветвления программы из одной точки по нескольким направлениям.Пример. Реализация оператора выбора:TBL_JMP:MOVADDJMPDPTR,#TBL_JMPA,ACC@A+DPTRAJMPAJMPAJMP..AJMPLB0LB1LB2; ACC содержит целочисленну; в диапазоне от 0 до -127переменнуLBnУсловные переходы: JZ/JNZ/CJNE/DJNZВо всех этих командах используется только короткий относительный переход.

КомандыJZ и JNZ тестируют текущее содержимое аккумулятора соответственно на равенство инеравенство нулю. Если тестируемое условие истинно, управление передается на метку,указанную в команде; иначе – на следующую команду.Команды сравнения имеют следующую обобщенную запись: CJNE Op1, Op2, rel. Привыполнении этой команды сравниваются два операнда Op1 и Op2. Если они не равны,управление передается по адресу, которому соответствует смещение rel; иначе – на следующую команду.

Эта команда воздействует на бит переноса CY: если Op1 < Op2,CY = 1; иначе (Op1 >= Op2) CY = 0. Это позволяет использовать данные команды длясравнения чисел (как однобайтовых, так и многобайтовых), т.е. можно реализовать операции: «=», «», «>», «<», «>=», «<=».16Пример. Сравнение A < B:CJNEJCA, B, $+3; $ - теку ее значение PC, $+3 – адресA_LT_B; следу ей команды; A < B, то переход по ссылке; A >= BКоманда вида DJNZ Cnt_Byte, rel уменьшает на 1 операнд Cnt_Byte, а затем проверяетего на 0: если значение Cnt_Byte не равно нулю, управление передается на метку; иначе –на следующую команду (как выход из цикла, см. далее).

Команды этого вида удобны дляреализации циклов по следующей схеме:Cnt_Byte := C0; Инициализация счетчика циклаLoop: Тело циклаDJNZ Cnt_Byte,Loop; Модификация счетчика цикла и проверка его на ноль; Если требуется организовать 256 циклов, то загружать в счетчик надо 0Пустая операция: NOPЭта команда ни на что не влияет. Применяется обычно для организации небольших задержек.2.4.5. Команды битового процессораВ рассматриваемой группе команд операнды однобитовые, допускающие только прямуюадресацию. В качестве таких операндов могут выступать битовые переменные (определенные в сегменте типа BIT) и биты битадресуемых РСФ.

Бит переноса CY играет рольаккумулятора для бинарных битовых операций. Поскольку CY занимает центральное место, то для него предусмотрены отдельные эффективные команды, выполняющие частовстречающиеся операции с его значением.Сброс, установка и инверсия битов: CLR/SETB/CPLПредусмотрены отдельные команды для сброса (CLR C), установки (SETB C) и инверсии(CPL C) бита переноса.

Отличительная их особенность – размер один байт и время выполнения один машинный цикл. Такие же действия можно выполнить с любым адресуемым битом: CLR bit (сброс бита), SETB bit (установка бита), CPL bit (инверсия бита).Эти команды выполняются за один машинный цикл, но занимают в памяти 2 байта; второй байт требуется для указания адреса бита. Бит EA — разрешает/запрещает прерывания.Способы записи битов на ассемблере:CLR bitимя переменной (битовой) в сегменте класса BITимя бита битадресуемого РСФACC.имя_битаимя_РСФ.имя_битаБитовые операции «И», «ИЛИ»: ANL/ORLимя_бита_РСФЗдесь одним из операндов и операндом назначения по умолчанию является бит переносаCY. Имеется две формы записи этих команд, отличающиеся наличием правой косой чер17ты перед вторым битовым операндом. Эта черта означает, что в операции будет участвовать инверсное значение бита.

Команды этого типа занимают в памяти 2 байта и выполняются за 2 машинных цикла.Пример:SETB C; установка переноса в «1»SETB bitCPL C; C :=CPL bit; bit :=ANL C, bit; C := C ^ bitANL C, /bit; C := C ^ORL; - «ИЛИ»-//-- «И»- «И»Пересылка битов : MOVПересылки выполняются только через бит переноса CY. Команда MOV C, bit копируетзначение bit в бит переноса, команда MOV bit, C выполняет обратное копирование. Дляреализации пересылки между двумя произвольными битами (bit1 := bit2) требуется последовательное выполнение этих двух команд:MOVMOVC, bit1bit2, CУсловные переходы (тестирование битов): JC/JNC/JB/JNB/JBCЭти команды позволяют осуществлять ветвление по следующим условиям: перенос равен«1» (JC), тогда переход на метку; перенос равен нулю (JNC), то переход на метку; адресуемый бит равен «1» (JB/JBC), то переход на метку; адресуемый бит равен нулю (JNB),то переход на метку.

Здесь тоже используется только короткий относительный способ адресации перехода при выполнении условия, тестируемого в команде. Если условие не выполняется, управление, как всегда, передается следующей команде.Особый интерес представляет команда JBC, которая проверяет указанный бит на «1». Если бит равен «1»,он сбрасывается, а управление передается на метку, указанную в команде.

Эта команда может быть полезна,когда требуется не разрывать тестирование бита и его сброс в случае равенства бита «1». Такая ситуациявстречается в коммуникационных процедурах.2.5. Выражения и операторы (вычисления во время трансляции)Операнд может быть:числовой константой,символическим именем,строкой,выражением.Операторы (операции) используются для комбинирования (сочетания, объединения, соединения) и сравнения операндов.

Операторы не являются инструкциями (командами)языка ассемблера и не генерируют код. Операторы представляют действия (числовыеоперации), которые выполняются во время ассемблирования.Выражение — это комбинация чисел, строк, имен и операторов, которое, в конце концов, выражается (приводится) для A51 как 16-битовое число (может быть знаковое). Т.к.18выражения вычисляются во время ассемблирования, то они могут использоваться длявычисления значений, которые иначе заранее трудно определить.Пример: MOV A, #3+5 ; простейшее выражение – число2.5.1. Целые числаЧисла могут быть представлены в шестнадцатиричной, десятичной, восьмеричной и двоичной системах счисления. Основание системы счисления указывает последний символ(суффикс) числа. По умолчанию предполагается десятичная система счисления.

Следующая таблица содержит базовые типы, их суффиксы и некоторые примеры.Основание системысчисленияШестнадцатеричнаяДесятичнаяВосьмиричнаяДвоичнаяСуффиксДопустимые символыПримерыH, hD, dO, o, Q, qB, b0 – 9, A – F, a – f0–90–70, 112H, 0FFH, 0Fh12, 12D, 99, 10017Q, 123Q10011100BПервым символом числа должна быть цифра 0–9. Когда шестнадцатеричное число начинается с буквы, то оно должно иметь приставку 0. Ассемблер Ax51 поддерживает такжезапись HEX-чисел в стиле языка Си, например 0х123.Знак «$» может быть использован в числах для улучшения читаемости. Но этот знак неможет быть первым или последним символом в записи числа. Этот знак игнорируется ассемблером и не влияет на значение числа. Например:2.5.2.

СимволыАссемблер Ax51 дает вам возможность использовать ASCII-символы в выражениях, чтобы генерировать числовое значение. До 2-х символов, заключенных в апострофы (одиночные кавычки), можно использовать в выражениях. Например:Символ Числовое соответствие (представление)Использование в программеMOV a, ’A’ ; ACC := 41h‘A’0041hMOV a, ’9’ ; ACC := 39h‘AB’4142hCLR C‘a’0061hSUBB A, ’0’ ; ACC := 9‘’0‘abcd’ОшибкаСимволы могут использоваться в программе как операнд непосредственных данных.2.5.3.

Символьные строкиСимвольные строки обычно используются в комбинации (вместе) с директивой DB дляопределения сообщений (константных), используемых в программе. Символьная строка— это последовательность символов, заключенная в апострофы. В директиве DB строкимогут смешиваться с числами.Например:Mes:Mes:DB ‘Error’DB ‘Error’, 0; Error: 45h,72h,72h,6fh,72h; Строка в стиле СиЕсли требуется записать в строке символ апострофа, то последний удваивается.192.5.4. Счетчик адресов (Location Counter)Ассемблер обслуживает свою внутреннюю переменную СА (счетчик адреса) для каждогосегмента. СА содержит смещение (адрес) инструкции или данных и увеличивается послекаждой строки на число байтов данных или кода в этой строке. СА инициализируется 0для каждого сегмента.

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

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

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

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