Главная » Просмотр файлов » Иванова Г.С., Ничушкина Т.Н. - Основы программирования на ассемблере IA-32

Иванова Г.С., Ничушкина Т.Н. - Основы программирования на ассемблере IA-32 (1075571), страница 3

Файл №1075571 Иванова Г.С., Ничушкина Т.Н. - Основы программирования на ассемблере IA-32 (Иванова Г.С., Ничушкина Т.Н. - Основы программирования на ассемблере IA-32) 3 страницаИванова Г.С., Ничушкина Т.Н. - Основы программирования на ассемблере IA-32 (1075571) страница 32017-12-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

32-хразрядный адрес базы сегмента хранится не в виде сегментного адреса в сегментномрегистре, как при 16-ти разрядной адресации, а полностью в специальных внутреннихрегистрах процессора – дескрипторах. Номер дескриптора заносится в 14 бит сегментного регистра, который в этом режиме называется селектором.

Один бит селектора из этих14-ти отвечает за выбор таблицы локальных или глобальных дескрипторов.Таблица локальных дескрипторов содержит дескрипторы сегментов приложения, атаблица глобальных – дескрипторы сегментов программ операционной системы. Оставшиеся два бита селектора содержат код уровня привилегий сегмента, который проверяется при обращениях из других программ. Таким образом, реализуется защита сегментов.14 бит селектора и 32 бита эффективного или исполнительного адреса, формируемого на основе машинной команды, объединяются в 46-ти разрядный виртуальный адрес.Сумма 32-х разрядного базового адреса сегмента и 32-х разрядного эффективногоадреса образует 32-х разрядный линейный адрес. Физический же адрес определяется потаблице страниц на основе линейного.Соответственно различают несколько адресных пространств: виртуальное – 64 Тб;линейное – 4 Гб; физическое – 4 Гб.При создании приложений Windows в основном используется модель памяти Flat«плоская».

Эта модель подразумевает, что каждому приложению отводится линейное адресное пространство объемом 2 Гб, а остальные 2 Гб предоставляются операционной системе. Базовый адрес в дескрипторах всех сегментов приложения устанавливается равным 0. В результате все сегменты приложения «перекрываются». Программа, данные истек размещаются в разных местах памяти за счет различных смещений.

Разделение памяти между приложениями осуществляется операционной системой, которая размещаетстраницы приложений с одинаковыми линейными адресами в разных местах оперативной памяти. Следовательно и защита сегментов при этой модели не работает.Оглавление171.3.3 Форматы машинных командРазмер машинной команды процессора IA-32 колеблется от 1 до 15 байт. Структуракоманды представлена на рисунке 10. Помимо обязательного кода операции (КОП), иногда состоящего из двух частей, команда может включать от 0 до 4 однобайтовых префиксов, а также возможно байты адресации, непосредственного смещения (смещение, указанное в команде) и непосредственного операнда.Префикс повторения – используется только для команд обработки строк и будетрассмотрен далее.Префикс размера адреса (67h) – применяется для изменения размера смещения,например, если необходимо использовать смещение размером 16 бит при 32-х разряднойадресации.Префикс размера операнда (66h) – указывается, если вместо 32-х разрядного регистра для хранения операнда используется 16-ти разрядный.Префикс замены сегмента – используется при адресации данных любым сегментным регистром кроме DS.Рисунок 10 – Структура машинной команды IA-32На рисунке 10 использованы следующие обозначения:d – бит направления обработки, например, пересылки данных: 1 – в регистр, 0 – из регистра; используется в арифметических командах и командах пересылки, если хотя быодин операнд находится в регистре;w – размер операнда: 1 – операнды – двойные слова, 0 – операнды – байты;Оглавление18mod – режим: 00 – Disp=0 – смещение в команде отсутствует (0 байт);01 – Disp=1 – непосредственное смещение размером 1 байт;10 – Disp=2 – непосредственное смещение размером 2 байта;11 – оба операнда находятся в регистрах.Регистры кодируются в зависимости от размера операнда (w):w=1regw=0000EAX000AL(r) 001ECX001CL010EDX010DL011EBX011BL100ESP100AH101EBP101CH110ESI110DH111EDI111BHЕсли в команде используется двухбайтовый регистр, например, AX, то перед командой добавляется префикс изменения длины операнда (66h).Различают два вида команд, обрабатывающих операнд в памяти:•команды без байта sib (масштаб–индекс–база);•команды, содержащие байт sib.Тип команды определяется по содержимому поля m байта адресации (r/m): еслиm≠100, то байт sib в команде отсутствует и используется таблица 1.

В противном случаеиспользуется таблица 2, определяющая схемы адресации, которые формируются байтомsib.Таблица 1 – Схемы адресации памяти в отсутствии байта SibПолеr/m000B001B010B011B100B101B110B111BЭффективный адрес второго операндаmod = 00Bmod = 01Bmod = 10BEAXEAX+Disp8EAX+Disp32ECXECX+Disp8ECX+Disp32EDXEDX+Disp8EDX+Disp32EBXEBX+Disp8EBX+Disp32Определяется Sib Определяется Sib Определяется SibDisp321SS:[EBP+Disp8]SS:[EBP+Disp32]ESIESI+Disp8ESI+Disp32EDIEDI+Disp8EDI+Disp32Оглавление19Таблица 2 – Схемы адресации памяти при наличии байта SibПолеЭффективный адрес второго операндаbasemod = 00Bmod = 01Bmod = 10B000B EAX+ss*indexEAX+ss*index +Disp8EAX+ss*index +Disp32001B ECX+ss*indexECX+ss*index +Disp8ECX+ss*index +Disp32010B EDX+ss*indexEDX+ss*index +Disp8EDX+ss*index +Disp32011B EBX+ss*indexEBX+ss*index +Disp8EBX+ss*index +Disp32100B SS:[ESP+ss*index] SS:[ESP+ ss*index]+Disp8 SS:[ESP+ ss*index] +Disp32101B Disp321+ss*indexSS:[EBP+ss*index +Disp8] SS:[EBP+ss*index +Disp32]110B ESI+ss*indexESI+ss*index +Disp8ESI+ss*index +Disp32111B EDI+ss*indexEDI+ss*index +Disp8EDI+ss*index +Disp32В таблице:ss – масштаб; index – содержимое индексного регистра; base – содержимое базовогорегистра;1– особый случай – адрес операнда не зависит от содержимого регистра EBP, а определяется только смещением в команде (прямая адресация).Кроме того, при анализе кодов машинных команд следует иметь в виду, что команды, в качестве одного из операндов использующие регистры AL/AX/EAX, имеют специальный формат, который унаследован от еще более раннего предка – процессора i8080(Z80).

В этом процессоре регистр AX использовался как сумматор.Примеры:1)movEBX,ECX100010DW Mod Reg Reg1000100111 001 01189СB2)movBX,CXпрефикс1 100010DW Mod Reg Reg01100110 10001001 11 001 011668 9CB3)movECX,DS:6[EBX]100010DW Mod Reg Reg См.мл.байт1000101101 001 011 000001108 B4B064)mov CX,DS:6[EBX]префикс 100010DW Mod Reg Reg См.мл.байт01100110 1000101101 001 011 00000110668B4B0 6Оглавление205)mov CX,ES:6[EBX]префикс1 префикс2 100010DW Mod Reg Reg См.мл.байт0110011000100110 1000101101 001 011 0000011066268B4B066)mov ECX,6[EBX+EDI*4]100010DW Mod Reg Mem SS Ind Base См.мл.байт1000101101 001 100 10 111 011 000001108 B4CBB06Оглавление21Контрольные вопросы1.Изобразите структурную схему процессора i8086.Ответ.2.Что собой представляет сегмент при 16-ти разрадной адресации?.Ответ.3.Назовите регистры общего назначения i8086? Как они были изменены в IA32?Ответ.4.Нарисуйте схему адресации защищенного режима.Ответ.5.Перечислите основные отличия машинных команд процессора IA32 от ма-шинных команд процессора i8086.

Зачем они были выполнены?Ответ.Оглавление222ОСНОВЫ ПРОГРАММИРОВАНИЯ НА АССЕМБЛЕРЕ С ИС-ПОЛЬЗОВАНИЕМ ТРАНСЛЯТОРА MASM322.1Структура программы на языке ассемблераЗапись программы на языке ассемблера MASM32 выполняется по «свободному»формату, т.е. правила заполнения каких бы то ни было позиций строки специально неоговариваются.В программе могут присутствовать предложения четырех типов:• машинные команды ассемблера – такая команда преобразуется ассемблером в машинную;• директивы ассемблера – операторы управления процессами ассемблирования икомпоновки;• макрокоманды – заменяются на этапе предварительной обработки (макрогенерации) специально сгенерированной в соответствии с указанными параметрами совокупностью машинных команд;• комментарии.Машинные команды ассемблера имеют следующий формат:[Метка :] Код операции [Список операндов] [; Комментарии].В используемой нотации квадратные скобки означают, что заключенная в них частькоманды может отсутствовать.

Код операции и список операндов разделяются хотя быодним пробелом. Помимо двоеточия между меткой и командой, а также перед комментарием может быть произвольное количество пробелов. Операнды отделяются один от другого запятой. Точка с запятой в начале строки означает, что данная строка является строкой комментария. При необходимости можно использовать:• символ переноса на следующую строку «\», например:asdf\DB′ Пример использования символа переноса ″ \ ″ .

′Оглавление23•многострочный комментарий, который ограничивается символом, указанным по-сле служебного слова comment, например:COMMENT$Это многострочныйкомментарий$Masm32, как и другие ассемблеры, не различает строчные и прописные буквы ни видентификаторах, ни в служебных словах. Однако при работе в ассембере обычно устанавливают опцию различия строчных и прописных символов в идентификаторах (OPTION CASEMAP:NONE), поскольку эти различия существенны при вызове функций API.Программа на ассемблере MASM32 состоит из сегментов следующих типов:•сегмент кода, содержащий собственно текст программы;•сегменты данных:сегмент констант, содержащий директивы объявления данных, изме-нение которых в программе не предполагается;сегмент инициализированных данных, содержащий директивы объ-явление данных, для которых заданы начальные значения – память под этиданные распределяется во время ассемблирования программы;сегмент неинициализированных данных, содержащий директивыобъявление данных – память под эти данные отводится во время загрузкипрограммы на выполнение;•сегмент стека, определяемый для ассемблера по заданному размеру.В программе сегменты описываются полными или сокращенными директивами.Сокращенные директивы описания сегмента кодируются следующим образом:где1..CODE [Имя сегмента] – начало или продолжение сегмента кода;2..MODEL Модель [Модификатор][,Язык][,Модификатор языка]Модель – определяет набор и типы сегментов; при 32-х разрядной адресациииспользуется единственная модель FLAT;Модификатор – определяет тип адресации: use16, use32, dos;Язык и Модификатор языка – определяют особенности передачи параметров при вызове подпрограмм на разных языках С, PASCAL, STDCALL;Оглавление243..DATA – начало или продолжение сегмента инициализированных данных;4..DATA? – начало или продолжение сегмента неинициализированных данных;5..CONST – начало или продолжение сегмента неизменяемых данных;6..STACK [Размер] – начало или продолжение сегмента стека.В среде RadAsm специально для выполнения лабораторных работ создана заготовка консольной программы conapp.tpl, которая выглядит следующим образом:; использование набора команд i80586.586.MODELflat, stdcall ; модель памяти и тип передачи параметровOPTION CASEMAP:NONEInclude kernel32.inc; чувствительность идентификаторов к регистру; подключение файлов описаний библиотечных п/пInclude masm32.incIncludeLib kernel32.lib; подключение библиотек при компоновкеIncludeLib masm32.lib; сегмент инициализированных данных.DATAMsgDB"Press Enter to Exit",0AH,0DH,0; сегмент неинициализированных данных.DATA?inbufDB100 DUP (?).STACK4096; сегмент стека – 4096 байт; сегмент кода.CODEStart:XOREAX,EAX; очистка регистраInvoke StdOut,ADDR Msg ; вызов процедуры выводаInvoke StdIn,ADDR inbuf,LengthOf inbuf; вызов процедуры вводаInvoke ExitProcess,0END; вызов процедуры завершенияStartЭта заготовка включает вызовы процедур ввода и вывода (см.

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

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

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