Главная » Просмотр файлов » В.Н. Пильщиков - Программирование на языке ассемблера IBM PC

В.Н. Пильщиков - Программирование на языке ассемблера IBM PC (1110551), страница 19

Файл №1110551 В.Н. Пильщиков - Программирование на языке ассемблера IBM PC (В.Н. Пильщиков - Программирование на языке ассемблера IBM PC) 19 страницаВ.Н. Пильщиков - Программирование на языке ассемблера IBM PC (1110551) страница 192019-04-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Лля того чтобы фиксировать такие ошибки, в ЯА введены директивы условной генерации ошибок. Ках(дая из них проверяет некоторое условие и, если оно выполнено, Дополииюльиые всзмолиости 27б записывает в листинг (в ту строчку, где встретилась зта директива) сообщение о принудительной ошибке ((огссд епог).

После этого трансляпия программы будет продолжена, однако фаГш с обьектным кодоы, как и при любой иной ошибке перно" трансляпии, уже формироваться не будет. Ниже для каждой директивы условной генерапии ошибки приводятса номер ошибки и текст записываемого в листинг сообщения об ошибке. . ЕВВ1 . ЕВВ2 В7 Тогсад аггог - рава 1 Ва Рогова алгол - раве 2 99 Рогсед еггог Директива .ЕКК1 генерирует ошибку, если директива встретилась ассемблеру на его первом прохоле, директива .ЕКК2 генерирует ошибку, если она встретилась на втором проходе, а директива .ЕКК генерирует ошибку на любом прохоле. Например: ;есле имл Х ие описало и >если вто ухе 2-В проход, >то вааиксировата овибку 1РМПЕР Х .

ВВВ2 ЕМПГР . ЕВВЕ <ввракавиа> . ЕВВМЕ <вврахевие> Директива .ЕККЕ генерирует ошибку, если значение выражения равно О, а директива .ЕККЛ - если значение не равно О. Выражение должно быть константным и не содержать внешних шген и ссылок вперед. Например: .ЕВВЕ ттРЕ Ь - ВЕье;сиибка, если Ь - блввкав метка .

ЕВВМПЕР <имк> . ЕВВПЕР <имх> Директива .ЕККХОЕР генерирует ошибку, если указанное мзи еще (до директивы) не описано, а директива .ЕККОЕР - если имя уже описано. Если это имв является ссылкой вперед, то на первом проходе трансляпии оно считается неописанным, а на втором проходе - описанным. Например: .ЕВВМПЕР М ;свинка, если имв М еив ие описало у пв м пот(71 Директива .ЕККВ генерирует ошибку, если указанный текст пустой, а директива .ЕККЛ - если текст непустой. Директива .ЕККП)11 генерирует ошибку, если указанные тексты совпадают, а директива .ЕКК()1Р - если тексты различают- "ди>лапмиэи" .ЕВЕВ <текст> .Взвив <текст> .ЕВВ1ПМ <твкст1>,<такст2> .ЕВЮ)17 <текст1>,<текст2> 90 Рогова еггог - ехргевв1ов еппа1в О 91 Рогова еггог - ехргеввзов вог аппа1в О 92 тогсвд еггог - вувЬо1 вог детхвед 93 Рогова еггог - вуиЬо1 дет1аад 94 Рогова еггог - взгьав Ььаан 95 Рогсад ах*ох - аггьад аое Ьхаав 96 Рогсад еггог - еггьавв хдвагхса1 97 Рогсед еггог - вггьава дьттвгеаг Ятб Пдогрвммнроаанне на язмнв ассемблера ГВЫ РС ся.

Здесь под текстолг понимается последовательность символов, заключенная в угловые скобки. Если любая из этих директив находится в макроопределении или блоке повторений, то в текстах можно указывать формальные параметры макроса или блока (при этом допускается использование макрооператора бг), которые перед сравнением булуг заменены на соответствующие фактические параметры. Наприыер: и ивово х,х .вввв <х> ;;овабва, вели 1-й фавтвчвеаий лорамотр оауиев .Евнгпн <х>,<св> ;;овябва, если з-й фактический параметр - это св 14.6. Дополнительные директивы В данном разделе вкратце описываются директивы ЯА, которые не были рассмотрены в предыдущих часзях книги.

14.6.1. Указание типа процессора и набора команд Как уже отлгечачось, базовой сисгеыой команд процессоров фирмы 1пге1 является набор коыанд процессора 8086 (8088): любая программа, использующая только эти команды, может быть без изменений выполнена и на любом другом процессоре. В то же вреза в каждой старшей исцели имеются дополнительные команды. Наприыер, в процессоре 80186 появились новые команды Р\ЛНА, РОРА и др., а также были расширены возможности команд МШ., Р(БН, БНК и др. В процессоре 80286 допускаются все команды процессора 80186 и введено несколько новых команд, которые, правла, разрешено использовать только в привилегированном (защищенном) режиме.

В слелующих процессорах также появились новые команды. В саыих процессорах фирмы 1пге! нет команд вещественной арифметики, и операции над вещественными числами реализуются либо программным путем (для каждой операции составляется своя процедура), либо за счет подключения арифметического сопроцессора (8087, 80287 и т.

д.), который аппаратным спасобоы реализует арифметические операции над вещественными числами. В последнем случае центральный процессор обращается к сопроцессору с поыощью команды ЕЗС (см. разз. 14.2), в которой указывается, какую оперы|ию и над какими данными должен выполнить сопроцессор. При этом в ЯА для разных вариантов этой команды введены свои ынемонические обозначения, которые можно рассматривать как "команды сопроцессора". Отметим, что у сопроцессоров также соблюдается прееыственность: более старшие ыолели могут выполнять все операции более младших моделей. По умолчанию макроассемблер МАЯМ (версия 4.0) допускает использование в програыме только команд процессора 8086, применение же иных команд рассматривается как ошибка.

Если программа рассчитана на работу с другим процессором или на использование команд сопроцессора, то это надо явно указать ассемблеру, для чего используются указанные ниже директивы. Их можно поые- Дололннгольныо ооэмояносги 277 щагь в любом лгесте программы, они начинает действовать немедленно и до следующей подобной директивы. .8086 - допускается использование только команд процессора 8086 (зта директива подразумевается по умолчанию).

.186 - допускается использование всех команд процессора 8086, а также всех новых команд процессора 80186. .286С - допускается использование всех команд, поддерживаемых процессором 80286 в непривилепгрованном режиме (их набор полностью совпадает с системой командами процессора 80186). .286Р - допускается использование всех команд процессора 80286, в том числе и команд привилегированного режима.

.8087 - помимо команд основного процессора допускается и использование команд сопроцессора 8087. .287 - помимо команд основного процессора допускветсв и использование команд сопроцессора 80287. (Зюгечание: в версии 4.0 языка МАЗМ не предусмотренм анаэопггные директивы для процессора 386 и старше и для сопроцессора 387 и старше, т. к.

эта версия была разработана до их появления.) 14.6.2. Группы сепчентов 1(иректива <эмя группя> овсов <пмя оогмопта> О<яма оогмеата>1 обьединяет перечисленные сегменты в одну группу. Это значит, что все имена из всех этих сегментов булуг сегментироваться по одному и тому же сегментному регистру. По какому именно - определяется директивой АЗЯМЕ: если в ней указан операнд яг:<вмя группа> где эг - квкой-то сегментный регистр, то каждое имя из этих сегментов ассемблер будет заменять на адресную пару эг:ойь где о(з - смещение имени, отсчитанное ат начала группы (загрузку этого начала в репгстр эг должна осуществить сама программа).

Такая замена производится, даже если для какого-то из сегментов группы указан "свой" регистр. Отметим, что обьединение сегментов в группу означает их сепэентирование по одному регистру, но не их непрерывное расположение в памяти: сегменты одной группы необязательно будут размещены в памяти подрал, лгежду ними лнзгут оказаться другие сегменты (при размещении сегментов в памяти учитываются их классы, а йе их принадлежность к одной группе - см. директиву БЕОМЕХТ). Но в любом случае расстояние от начала группы до последнего занятого байта последнего сегмента группы не должно превосходзпь 64 Кб. Изи группы должно быть уникальным в программе, а сепэенты группы могут быть описаны в тексте программы квк до, так и после директивы ОйО()Р. Иьи 22В Пяопзвммилсяснис нс языке ассембяерв 1ЗМ РС группы относится к константным выражениям, его значение вычисляетса аналопзчно значению имени сепчента. Пример: зсмсЩсвас В1 отвосатслькю ак разао 0 ;смащавиа А отвоситальао В1 равао 0 ;ев ак ;слааиаловтво НОЧ ПВ,ЕВ:О ;эилииалсвтао ИОЧ СХ,ЕВ:20А Отметим непоследовательность ЯА при работе с группами.

Если во всех командах имена из сепчентов группы заменяются на сьгещения имен, отсчитанные от начала группы, то значением оператора ОРРБЕТ 11 является смещение имени Х относительно сегмента, в котором оно описано, даже если этот сегмент входит в группу (тюг, в приведенном примере значение ОРРЗЕТ В будет равно О). Чтобы смещение имени Х в этом операторе отсчитывалось от начала группы, надо вместо Х записать хонструкцию <иьы группы>:Х (в нашем примере значение оператора ОРРЗЕТ ОКВ равно 20Ь).

Аналопсчная проблема вознихает при описании адресных констант в директивах Р% и РР: если в качестве их операнда указать просто иьи, то оно будет заменено ассемблером на смещение имени, отсчитанное ог начала того сегмента, где имя описано, а не от начала группы, в которую входит данный сегмент. Здесь также, если нужен отсчет смещения от начала группы, следует применить конструкпию вида <имя группы>:<имя>. 14.6З. Изменение счетчика размещения Транслируя программу, ассеыблер следит за адресом ее очередного предложения, который он хранит в счетчике размещения и значение которого ыожно узнать в программе с помощью символа 3. Следующие две директивы позволяют менять значение этого счетчика.

Эта директива выравнивает счетчик размещения на ближайший четный адрес: если текущее значение счетчика четно, то оно не меняется, а иначе в очередной байт памяти ассемблер записывает величину 90Ь (команда 1>ОР) и увеличивает значение счетчика на 1. аи аковр В1,82 в1 веаиен* А ПВ 20А ВВР(01 В1 ЩФВ вг веаикит В ВВ 1 вэ инва сове вкаиеит АВИОНЕ СВ:СОВЕ, иоч Ах,ак иоч еа,ьх ИОЧ ВН,А моч сх,в зсмощсиис В2 отаосатсльао ак раино 20А ;смащаава В отвосатсиьво В2 раино 0 Долслннтвльнмв всвмоиносги 220 одо <вмрвкевве> Выражение может быль константным или адресным, но все используемые в неы имена должнм быть из текущего сегмента, причем они должнм быть описаны до этой директивы.

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

Тип файла
DJVU-файл
Размер
4,55 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

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