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

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

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

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

Для того чтобыиспользовать их как сегменты кода, данных или стека, необходимо предварительно сообщить транслятору об этом с помощью специальной директивы ASSUME, формат которой показан на рис. 5.15. Эта директива сообщает транслятору, какой сег-106Глава 5. Синтаксис ассемблерамент к какому сегментному регистру привязан. В свою очередь, это позволяет транслятору корректно связывать символические имена, определенные в сегментах.Привязка сегментов к сегментным регистрам осуществляется с помощью операндов этой директивы, в которых имя_сегмента должно быть именем сегмента, определенным в исходном тексте программы директивой SEGMENT или ключевым словом NOTHING. Если в качестве операнда используется только ключевое словоNOTHING, то предшествующие назначения сегментных регистров аннулируются,причем сразу для всех шести-сегментных регистров.

Ключевое слово NOTHING можнотакже использовать вместо аргумента имя сегмента; в этом случае будет выборочноразрываться связь между сегментом с именем имя сегмента и соответствующим сегментным регистром.Рис. 5.15. Директива ASSUMEРассмотренные ранее директивы сегментации используются для оформленияпрограммы в трансляторах MASM и TASM. Поэтому их называют стандартнымидирективами сегментации.Для простых программ, содержащих по одному сегменту для кода, данных и стека, хотелось бы упростить их описание. Для этого в трансляторы MASM и TASMбыла введена возможность использования упрощенных директив сегментации.

Приэтом возникла проблема, связанная с тем, что необходимо было как-то компенсировать невозможность напрямую управлять размещением и комбинированием сегментов. Для этого совместно с упрощенными директивами сегментации стали использовать директиву указания модели памяти MODEL, которая частично сталауправлять размещением сегментов и выполнять функции директивы ASSUME (поэтому при введении в программу упрощенных директив сегментации директивуДирективы сегментации107ASSUME можно не указывать). Директива MODEL связывает сегменты, которые приналичии упрощенных директив сегментации имеют предопределенные имена,с сегментными регистрами (хотя все равно придется явно инициализироватьрегистр DS).Для сравнения приведем два листинга с программами на ассемблере. Функционально они одинаковы и выводят на консоль сообщение: «Hello World! No war andbomb! Let's live friendly and learn assembler language.».

Листинг 5.1 содержит программу со стандартными директивами сегментации, а листинг 5.2, соответственно, — с упрощенными.Листинг 5.1. Использование стандартных директив сегментацииdatasegment para public 'data'message db 'Hello World! No war and bomb! Let us live friendly and learnassembler language. $'dataendsstk segment stackdb 256 dup ('?')сегмент стекаstk endscodesegment para public 'code'начало сегмента кодаmainprocначало процедуры mainassume cs:code,ds:data,ss:stkmov ax,dataадрес сегмента данных в регистр ахmov ds.axах в dsmov ah,9mov dx,offset messageвывод сообщения на экранint 21hmov ax,4cOQhпересылка 4c00h в регистр ахвызов прерывания с номером 21hint 21hконец процедуры mainmainendpконец сегмента кодаcodeendsконец программы с точкой входа mainend mainЛистинг 5.2.

Использование упрощенных директив сегментациирежим работы для TASM - masm, для MASM - не нужноmasmmodelsmallмодель памятисегмент данных.datamessage db 'Hello World! No war and bomb! Let us live friendly and learnassembler language.stack 256hсегмент стекасегмент кода.codeначало процедуры mainmainprocзаносим адрес сегмента данных в регистр ахmov ax,@datamov ds,axах в dsmov ah,9movintmovintdx,offset messageвывод сообщения на экран21hax.4c00hпересылка 4с00п в регистр ахвызов прерывания с номером 21h21hконец процедуры mainmainendpконец программы с точкой входа mainend mainСинтаксис директивы MODEL показан на рис. 5.16.Обязательным параметром директивы MODEL является модель_памяти.

Этот параметр определяет модель сегментации памяти для программного модуля. Предполагается, что программный модуль может иметь только определенные типысегментов, которые определяются так называемыми упрощенными директивамиописания сегментов (табл. 5.3).108Глава 5. Синтаксис ассемблера\ MODELРис. 5.16. Синтаксис директивы MODELТаблица 5.3. Упрощенные директивы определения сегментаФормат директивы(режим MASM).CODE [имя]Назначение.DATAНачало или продолжение сегмента инициализированныхданных. Также используется для определения данных типаnear 1.CONSTНачало или продолжение сегмента постоянных данных(констант) модуля.DATA?Начало или продолжение сегмента неинициализированныхданных. Также используется для определения данных типаnearSTACK [размер]Начало или продолжение сегмента стека модуля.

Параметр[размер] задает размер стека.FARDATA [имя]Начало или продолжение сегмента инициализированныхданных тина far.FARDATA? [имя]Начало или продолжение сегмента неинициализированныхданных типа farНачало или продолжение сегмента кодаНаличие в некоторых директивах параметра [имя] говорит о том, что возможноопределение нескольких сегментов этого типа. С другой стороны, наличие нескольких видов сегментов данных обусловлено требованием обеспечить совместимостьс некоторыми компиляторами языков высокого уровня, которые создают разныесегменты данных для инициализированных и неинициализированных данных,а также констант.При использовании директивы MODEL транслятор делает доступными несколько предопределенных идентификаторов, к которым можно обращаться во времяработы программы в целях получения информации о тех или иных характеристиках выбранной модели памяти (см.

ниже). Перечислим эти идентификаторы и ихзначения для транслятора TASM (табл. 5.4). Предопределенные идентификаторыMASM приведены в приложении Б (см. на сайте http://www.piter.com/download).Таблица 5.4. Идентификаторы, создаваемые директивой MODELИмя идентификатораЗначение переменной©codeФизический адрес сегмента кода©dataФизический адрес сегмента данных типа near©fardataФизический адрес сегмента данных типа farДирективы сегментации109Имя идентификатора©fardata?Значение переменнойФизический адрес сегмента неинициализированныхданных типа far©cursegФизический адрес сегмента инициализированных данныхтипа far©stackФизический адрес сегмента стекаЕсли вернуться к листингу 5.2, то можно увидеть пример использования одного из перечисленных идентификаторов, а именно @data. Цель его применения —получение значения физического адреса сегмента данных программы.В заключение обсуждения директивы MODEL отметим, что операнды директивыMODEL задают модель памяти, определяющей набор сегментов программы, размеры сегментов данных и кода, способы связывания сегментов и сегментных регистров.

В табл. 5.5 приведены некоторые значения параметров модели памяти директивы MODELТаблица 5.5. Модели памятиМодельTINYТип кодаnearТип данныхnearНазначение моделиКод и данные объединены в одну группус именем DGROUP. Используется длясоздания программ файлового формата СОМSMALLnearnearКод занимает один сегмент, данныеобъединены в одну группу с именемDGROUP. Эту модель обычно используютдля большинства программ на ассемблереMEDIUMfarnearКод занимает несколько сегментов, по одномуна каждый объединяемый программныймодуль. Все ссылки на передачу управленияимеют тип far. Данные объединены в однойгруппе; все ссылки на них имеют тип nearCOMPACT nearfarКод в одном сегменте; ссылки на данныеимеют тип farLARGEfarfarКод в нескольких сегментах, по одному накаждый объединяемый программный модульFLATnearnearКод и данные в одном 32-битном сегменте(плоская модель памяти)Параметр модификатор директивы MODEL позволяет уточнить некоторые особенности использования выбранной модели памяти (табл.

5.6).Таблица 5.6. Модификаторы модели памятиЗначениемодификатораНазначениеuse 16Сегменты выбранной модели используются как 16-разрядные(если соответствующей директивой указан процессор i80386или 180486)продолжение110Глава 5. Синтаксис ассемблераТаблица 5.6 (продолжение)ЗначениемодификатораНазначениеuse32Сегменты выбранной модели используются как 32-разрядные(если соответствующей директивой указан процессор i80386или J80486)dosПрограмма будет работать в MS-DOSНеобязательные параметры язык и модификатор_языка определяют некоторыеособенности вызова процедур.

Необходимость в использовании этих параметровпоявляется при написании и связывании программ на разных языках программирования. Этого вопрос будет подробнее обсужден в главе 15 при рассмотрениисредств модульного программирования на ассемблере.Описанные ранее стандартные и упрощенные директивы сегментации не исключают друг друга. Стандартные директивы используются, когда программистжелает получить полный контроль над размещением сегментов в памяти и их комбинированием с сегментами других модулей. Упрощенные директивы целесообразно использовать для простых программ, а также для программ, предназначенных для связывания с программными модулями, написанными на языках высокогоуровня. Это позволяет компоновщику эффективно связывать модули разных языков за счет стандартизации связей и управления.Таким образом, в ходе предыдущего изложения была описана структура программы на ассемблере.

Было показано, что программа разбивается на несколькосегментов, каждый из которых имеет свое функциональное назначение. Для такого разбиения используются директивы сегментации. Трансляторы TASM и М ASMпредоставляют два типа таких директив: стандартные и упрощенные. Далее в учебнике будут использоваться упрощенные директивы сегментации, если не появится необходимость в применении стандартных директив.Вторую часть главы мы посвятим вопросу описания данных в программе наассемблере и организации доступа к ним.Простые типы данных ассемблераЛюбая программа предназначена для обработки некоторой информации, поэтомувопрос о том, какие типы данных языка программирования доступны для использования и какие средства языка привлекаются для их описания, обычно встаетодним из первых.

Трансляторы TASM и MASM предоставляют широкий наборсредств описания и обработки данных, который вполне сравним с аналогичнымисредствами большинства языков высокого уровня.Понятие типа данных носит двойственный характер. С точки зрения размерности процессор аппаратно поддерживает следующие основные типы данных(рис. 5.17).« Байт — восемь последовательно расположенных битов, пронумерованных от Одо 7, при этом бит 0 является самым младшим значащим битом.Простые типы данных ассемблера111БайтСловоЦДвойное словоУчетверенное словоСтаршее словобтаршее двойное слово6347Старший : Младшийбайт: байтМладшее словоМладшее двойное слово31156331Упакованный тип данных12795ОРис.

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

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

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

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