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

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

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

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

Нельзя применить R0, R1, … . Но, используя директиву «USING Банк» и зарезервированные имена AR0 и т.д., можно записать:PUSH AR0…POP AR0Пример:USING 1 — использовать 1-ый банк;PUSH AR0 — взять 8-ую ячейку и поместить ее содержимое в стек.XCH — обмен даннымиXCH A, Rn — обмен содержимым регистра;XCH A, direct — -//- прямая адресацияXCH A, @Ri — -//- косвенная адресацияПример:XCHD A, @RiAA@RiR72.4.2.

Команды арифметических операцийКоманды сложения (вычитания): ADD A, SRC_BYTE ; A ≔ A + SRC_BYTEADDC A, SRC_BYTE ; A ≔ A + SRC_BYTE + C — сложение с переносом (если он есть,то добавится «1», если нет, то «0»)SUBB A, SRC_BYTE ; A ≔ A - SRC_BYTE - C, где С — заём (вычитание всегда с заёмом)Особенность этих команд – одним из операндов и операндом назначения является аккумулятор. При этом второй операнд допускает все виды адресации, используемые в семействе MCS-51 для внутренней памяти данных.9Чтобы зафиксировать переполнение в беззнаковых числах, после последнего сложениянадо тестировать бит CY. Для знаковых чисел требуется использовать бит OV. Если перенос из 7-го бита, CY = 1, иначе CY = 0.

Когда имеется только один перенос из 6-го или из7-го бита, флаг OV = 1; в других случаях OV = 0.Пример. Многобайтное сложение:R6R7R4R5MOV A, R7ADD A, R5 ; сложение младших байтовMOV R7, AMOV A, R6ADDC A, R4 ; сложение старших байт (с переносом)MOV R6, AЗаметим, что команда вычитания только с заемом. Как сделать вычитание без заема?Пример. Вычитание без заёма [C = 0]:CLR CSUBB A, R7Инкременты/декременты (простейшие арифметические операторы): INC/DECДопускаются прямая и неявная адресации.Регистр DPTR можно только инкрементировать.Пример:ADD A, #1 ; здесь бит переноса вырабатываетсяINC A ; а здесь нетINC DPTRУмножение/деление: MUL/DIVОперанды (целочисленные) должны располагаться в регистрах A и B, а результат окажется там же, причем в В – старший байт, в А – младший.

При этих командах бит переноса Свсегда сбрасывается в ноль. MUL – беззнаковое умножение. Если произведение > 255, тоOV = 1, иначе OV = 0, а CY = 0. DIV – беззнаковое деление. Изначально CY = OV = 0.Результат деления получается дробным — целая часть в А, остаток в В. Если B = 0, то получается неопределенный результат, т.е.

A и B не определены (OV = 1). Это самые длительные команды (4 машинных цикла).Десятичная коррекция аккумулятора: DA AКорректирует BCD-упакованный (двоично-десятичными) код после двоичного сложения.Если младшая тетрада аккумулятора больше 9 или AC = 1, то ACC := ACC + 6 – будетскорректирована младшая тетрада. Если после этого CY = 1 или старшая тетрада больше9, то прибавляется 6 к старшей тетраде. Это опять приводит к выработке значения CY10(если CY = 1, то сумма больше 100).

Таким образом, в зависимости от условий к ACCможет прибавляться 00H, 06H, 60H, 66H.Примечание: Команда DA A правильно работает только после команд сложения.2.4.3. Команды логических операцийЛогическое «И», «ИЛИ», «ИСКЛЮЧАЮЩЕЕ ИЛИ»: ANL/ORL/XRLОбобщенная мнемоника «И»: ANL dest_byte, src_byte ; dest_byte := dest_byte ^ src_byteВ большинстве вариантов команды одним из операндов и операндом назначения являетсяаккумулятор. Хотя такую же роль может исполнять прямоадресуемая ячейка памяти илиРСФ.

Эта команда эффективна, когда требуется выполнить операцию «И» над группойбитов байта. Часто она используется для избирательного сброса битов в байте. «Наложитьмаску» — логическая операция с константой.0 0 0 0сброс в нольПример: ANL A,#0FHANL P1,#03H0 0 0 0Обобщенная мнемоника «ИЛИ»:Х Х Х Хостанутся без измененийР1Х Х Х ХORL dest_byte, src_byte ; dest_byte := dest_byte  src_byteВарианты операндов те же.

Эта команда эффективна, когда требуется выполнить операцию «ИЛИ» над группой битов байта. Часто она используется для избирательной установки битов в байте.Пример: ORL A,#0FH ; установка в «1»ORL P1,#0C0HОбобщенная мнемоника «ИСКЛЮЧАЮЩЕГО ИЛИ»:Х Х Х Х1 1 1 1Х Х Х ХХХ1 1XRL dest_byte, src_byte ; dest_byte := dest_byte  src_byteВарианты операндов те же. Эта команда эффективна, когда требуется выполнить операцию «ИСКЛЮЧАЮЩЕЕ ИЛИ» над группой битов байта.

Часто она используется для избирательной инверсии битов в байте.АПример: XRL A,#0FHXRL P1,#0C1HХ Х Х ХХ Х Х ХинверсияХ Х Х ХХ Х Х ХОчистка и инверсия аккумулятора: CLR/CPLПример:XRL A, ACC ; A := 0MOV A, #0CLR A ; A := 0CPL ; A :=— инверсия аккумулятораТ.к. аккумулятор является центральным программным объектом, то для него зарезервированы две короткие команды, которые реализуют часто используемые с ним операции:очистка и инверсия. Выполняются только с аккумулятором.Циклические сдвиги: RL/RLC/RR/RRC11Рис.

2.2. Схемы циклических сдвиговRL — сдвиг влево (в сторону ст. разряда), RR — сдвиг вправо (в сторону мл. разряда),RLC и RRC — сдвиги с переносом. С помощью этих команд можно реализовывать разные типы сдвигов разных целочисленных переменных любой разрядности.Типы сдвигов: циклический, логический, арифметический.Логический сдвиг: влево — происходит сдвиг всех разрядов влево, но при этом старшийразряд теряется; вправо — аналогично, но сдвиг происходит вправо и теряется младшийразряд.Арифметический сдвиг: влево — совпадает с логическим сдвигом влево; вправо — аналогично, но сдвиг вправо, но переполнения не будет, а знак сохраняется.Пример:1 000 1001 →1 1 0 0 0 1 0 0 _ арифметический сдвиглогический сдвиг01000100Пример. Логический сдвиг на один разряд влево 16-разрядной величины (R6СТ-R7МЛ):XCHCLRRLCXCHA,R7 ; обмен содержимымC ; сброс бита переносаA ; сдвиг влево младшего байтаA,R7; сдвиг влевонельзя)XCH A,R6RLC AXCH A,R6старшегобайта(здесьбитпереносасбрасыватьКоманда SWAP A (обмен содержимого аккумулятора) используется при манипуляции сдвоично-десятичными числами, а также может рассматриваться как циклический сдвигбез переноса влево или вправо на четыре разряда.7430122.4.4.

Команды передачи управления. Подпрограммы и способы передачи параметровК этой группе команд относятся команды вызова подпрограмм и возврата из подпрограмм, команды условного и безусловного ветвления, а также команда пустой операцииNOP.Вызов подпрограмм и возврат из подпрограмм: LCALL/ACALL/RET/RETIПодпрограмма — это поименованная часть программы, которая вызывается, выполняетопределенные действия и возвращает управление в точку вызова.

Вызовы подпрограмммогут быть вложенными, т.е. одна подпрограмма может вызывать другую подпрограмму,а та, в свою очередь, еще другую. При этом, количество возможных вложенных подпрограмм определяется размером стека.NameSubr:(метка)телоподпрограммы………………RETВ команде вызова подпрограммы LCALL Subr (длинный вызов) содержится полный 16разрядный адрес подпрограммы. При выполнении этой команды PC := PC+3 – содержимое счетчика команд PC увеличивается на три и соответствует адресу следующей заLCALL команды (адресу возврата).

После сохранения PC в стеке ему присваивается значение Subr. Тем самым осуществляется переход на начало вызываемой подпрограммы.Выход из подпрограммы (завершение подпрограммы) должен выполняться с помощьюкоманды RET, которая извлекает из стека адрес возврата и загружает его в PC. В результате осуществляется переход к следующей за LCALL команде или, как говорят, в «точкувозврата». Представленный ниже рисунок иллюстрирует выполнение команды LCALL.Рис.

2.3. Схема выполнения подпрограммы Subr путем ее вызова командой LCALL и последующего возврата в основной цикл программы командой RETКоманда ACALL отличается от LCALL только разрядностью адреса и числом байтов, которых два. В команде ACALL адрес 11-разрядный; старшие три бита расположены в трехмладших битах первого байта (КОП) команды.

Поэтому есть ограничение на размещениекода подпрограммы и вызывающей ее команды ACALL: они должны находиться в однойстранице памяти размером 2048 байтов, что иллюстрирует рисунок, и внутри одного модуля файла.13Рис. 2.4. Схема выполнения подпрограммы Subr путем ее вызова командой ACALLДопустимо применять обобщенный вызов подпрограммы путем выполнения командыCALL. В этом случае происходит автоматический выбор команды ACALL или LCALL.Команда RETI должна завершать подпрограммы обработки прерываний. Дополнительнок действиям команды RET эта команда восстанавливает логику прерываний.

КомандаRETI разрешает прерывания того же уровня приоритета, что и приоритет обработанногопрерывания.Способы передачи параметров подпрограмм:1) через регистры общего назначения R0-R7, DPTR, A, B — это самый быстрый способпередачи параметров и наиболее распространенный, при этом через регистр можно передавать как значение, так и адрес.2) через заданную область памяти.

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

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

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

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