Главная » Просмотр файлов » assembler. Учебник для вузов_Юров В.И_2003 -637с

assembler. Учебник для вузов_Юров В.И_2003 -637с (862834), страница 33

Файл №862834 assembler. Учебник для вузов_Юров В.И_2003 -637с (Юров В.И - Assembler. Учебник для вузов. 2003) 33 страницаassembler. Учебник для вузов_Юров В.И_2003 -637с (862834) страница 332021-12-22СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Еслипроект состоит из большого количества файлов, необходимость помнить всю этуинформацию довольно утомительна. Для решения этой проблемы можно посоветовать использовать специальную программу — менеджер проекта. В пакете TASMтакой программой является утилита make.exe, а в пакете MASM — утилитаnmake.exe. Эти утилиты работают со специально оформленными файлами, называемыми файлами описания, или make-файлами. В make-файлах задаются отношения между файлами проекта и действия над этими файлами, которые выполняются в зависимости от возникновения тех или иных условий. Главный принцип,положенный в основу работы утилиты make.exe, заключается в анализе времениизменения или создания файлов. Подробное описание утилиты можно найти среди файлов к книге1.Итогив Структура программы на ассемблере отражает особенности архитектуры процессора.

Для процессоров Intel типичная программа состоит из трех сегментов:кода, стека и данных. Но это не обязательное условие; например, если программа не использует стек и для ее работы не требуется определения данных, то онаможет состоять всего лишь из одного сегмента кода.is Программа на ассемблере работает на уровне аппаратных средств, входящихв программную модель процессора, которая описана в главе 2.™ При разработке алгоритма работы программы и его реализации на ассемблерепрограммист сам должен беспокоиться о размещении данных в памяти, об эффективном использовании ограниченного количества регистров, об организации связи с операционной системой и другими программами.• Специфика разработки программы на ассемблере состоит в том, что программист должен уделять внимание не только и не столько особенностям моделирования предметной области, сколько тому, как при этом наиболее эффективно и корректно использовать ресурсы процессора.Все прилагаемые к книге файлы можно найти по адресу http://www.piter.com/download.

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

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

Но чаще всего припервых запусках программы этого не случается, что говорит о наличии в программе логических ошибок, поиск которых без специальных средств может бытьдолгим. Для поиска и устранения логических ошибок предназначен специальный вид программного обеспечения — отладчики. С их помощью в большинстве случаев довольно быстро удается снять большинство программных проблем подобного рода.Глава 7Команды обмена даннымиЛинейные алгоритмыКоманды пересылки данныхВвод из порта и вывод в портКоманды работы с адресами памятиКоманды работы со стекомНаверняка вы уже знакомы с понятием алгоритма, представляющего собой формализованное описание логики работы программы.

Способы такой формализациивесьма разнятся: от текстового описания последовательности действий до алгоритма развитых case-систем. Последовательность действий, описываемых алгоритмом, может быть:И линейной — все действия выполняются поочередно, друг за другом;ш нелинейной — в алгоритме есть точки ветвления, в которых должно приниматься решение о месте, с которого программа продолжит свое выполнение, причемрешение может носить условный или безусловный характер.Линейные участки алгоритма обычно содержат команды манипуляции данными, вычисления значений выражений, преобразования данных.

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

Эти команды осуществляют пересылку данных из одного места в другое, запись и чтениеинформации из портов ввода-вывода, преобразование информации, манипуляциис адресами и указателями, обращение к стеку. Для некоторых из этих команд операция пересылки является только частью алгоритма. Другая его часть выполняетнекоторые дополнительные операции над пересылаемой информацией. Поэтомудля удобства практического применения и отражения их специфики данные команды будут рассмотрены в соответствии с их функциональным назначением, согласно которому они делятся на команды:собственно пересылки данных;.ввода из порта и вывода в порт;-•работы с адресами и указателями;преобразования данных;''работы со стеком.Пересылка данныхК группе команд пересылки данных относятся следующие команды:mov <операнд назначения>,<операнд-источник>xchg <операнд!>,<операнд2>MOV — это основная команда пересылки данных.

Она реализует самые разнообразные варианты пересылки. Отметим особенности применения этой команды.« Командой MOV нельзя осуществить пересылку из одной области памяти в другую. Если такая необходимость возникает, то нужно использовать в качествепромежуточного буфера любой доступный в данный момент регистр общегоназначения. К примеру, рассмотрим фрагмент программы для пересылки байта из ячейки fls в ячейку fid:masmmodelsmall.datafls db 5fid db 1.codestart:mov al.flsmov fld.alend s t a r tНельзя- загрузить в сегментный регистр значение непосредственно из памяти.Для такой загрузки требуется промежуточный объект. Это может быть регистробщего назначения или стек. Если вы посмотрите на листинг 5.1, то увидитев начале сегмента кода две команды MOV, выполняющие настройку сегментногорегистра DS.

При этом из-за невозможности напрямую загрузить в сегментный148Глава 7. Команды обмена даннымирегистр значение адреса сегмента, содержащееся в предопределенной переменной @data, приходится использовать регистр общего назначения АХ.II Нельзя переслать содержимое одного сегментного регистра в другой сегментный регистр.

Это объясняется тем, что в системе команд нет соответствующегокода операции. Но необходимость в таком действии часто возникает. Выполнить такую пересылку можно, используя в качестве промежуточных все те жерегистры общего назначения. Вот пример инициализации регистра ES значением из регистра DS:mov ax.dsmov es.axНо есть и другой, более «красивый» способ выполнения данной операции —использование стека и команд PUSH и POP:pushpop esds ;поместить значение регистра ds в стек;записать в es число из стека• Нельзя использовать сегментный регистр CS в качестве операнда назначения.Причина здесь простая.

Дело в том, что в архитектуре процессора IA-32 параCS:IP содержит адрес команды, которая должна выполняться следующей. Изменение командой MOV содержимого регистра CS фактически означало бы операцию перехода, а не пересылки, что недопустимо.В связи с командой MOV отметим один тонкий момент. Пусть в регистре ВХ содержится адрес некоторого поля (то есть мы используем косвенную базовую адресацию).

Его содержимое нужно переслать в регистр АХ. Очевидно, что нужно применить команду MOV в формеmov a x , [ Ь х ]Транслятор задает себе вопрос: что адресует регистр ВХ в памяти — слово илибайт? Обычно в этом случае он принимает решение сам, по размеру большего операнда, но может и выдать предупреждающее сообщение о возможном несовпадении типов операндов.Или другой случай — возможно, более показательный. Рассмотрим командыинкремента INC (увеличения операнда на 1) и декремента DEC (уменьшения операнда на 1):inc [Ьх]dec [bx]Что адресуется регистром ВХ в памяти — байт, слово или двойное слово?Допустим также, что требуется инициализировать поле, адресуемое регистромВХ, значением 0. Очевидно, что одно из решений — применение команды MOV:mov [bx] ,0И опять у транслятора вопрос: какую машинную команду ему конструировать?Для инициализации байта? Для инициализации слова? Для инициализации двойного слова?Во всех этих случаях необходимо уточнять тип используемых операндов.

Дляэтого существует специальный оператор ассемблера PTR (см. приложение). Правильно записать приведенные ранее команды можно следующим образом:mov a x , w o r d ptr[bx] ;если [bx] адресует слово в памятиinc byte ptr[bx];если [bx] адресует байт в памятиВвод из порта и вывод в портdec dword ptr[bx]mov word p t r [ b x ] , 0149;если [Ьх] адресует двойное слово в памяти;если [Ьх] адресует слово в памятиМожно рекомендовать использовать оператор PTR во всех сомнительных относительно согласования размеров операндов случаях. Также этот оператор нужноприменять, когда требуется принудительно поменять размерность операндов.К примеру, требуется переслать значение Offh во второй байт поля flp:masmmodel.datatip dwsmall0.codestart:mov byte ptr (flp+l),0ffhend startНесмотря на то что поле flp имеет тип WORD, мы сообщаем ассемблеру, что поленужно трактовать как байтовое, и заставляем вычислить значение эффективногоадреса второго операнда как смещение flp плюс единица.

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

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

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

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