Главная » Просмотр файлов » Ассемблер NASM для процессоров с архитектурой IA-32. Адресация. Флаги. Вызов внешних подпрограмм

Ассемблер NASM для процессоров с архитектурой IA-32. Адресация. Флаги. Вызов внешних подпрограмм (1110584)

Файл №1110584 Ассемблер NASM для процессоров с архитектурой IA-32. Адресация. Флаги. Вызов внешних подпрограмм (Ассемблер NASM для процессоров с архитектурой IA-32. Адресация. Флаги. Вызов внешних подпрограмм)Ассемблер NASM для процессоров с архитектурой IA-32. Адресация. Флаги. Вызов внешних подпрограмм (1110584)2019-04-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

Практическая работа №11Ассемблер NASM для процессоров с архитектурой IA-32АдресацияВызов внешних подпрограммМатериалыДокументация по ассемблеру NASM на русском (http://www.codenet.ru/progr/asm/nasm/)Юров В. И. и др. Assembler: учебник для вузов. СПб: Питер, 2008. 636 с.Полная документация по функциям GlobalAlloc (http://msdn.microsoft.com/enus/library/aa366574%28v=vs.85%29.aspx)иGlobalFree(http://msdn.microsoft.com/enus/library/aa366579%28v=vs.85%29.aspx).Документация по отладчику OllyDbg на cracklab.ru (http://cracklab.ru/art/ollydbg.php) иhabrahabr.ru (http://habrahabr.ru/post/93402/).Адресация. Группы регистровВ прошлых практических работах было дано общее описание регистровой памяти и основныеприемы работы с ней. Ниже представлено более подробное описание назначения основныхрегистров, которые стоит или не стоит использовать. Регистр является устройством временногохранения данных и используется с целью облегчения арифметических, логических и пересылочныхопераций.

Процессоры с архитектурой IA-32 содержат 14 программно доступных регистров(общего назначения и сегментные), указатель команд (EIP) и регистр флагов (EFLAGS).Регистры общего назначения (РОН)317150AHALEAXDHDLEDXCHCLECXBHBLEBX310EBPESPESIEDI1Восемь регистров общего назначения (РОН) имеют длину 32 бита и могут хранить любыезначения, однако каждый из них имеет свое назначение. Они поддерживают операнды-данныедлиной 1, 8, 16, 32 и — при использовании двух регистров — 64 бит; битовые поля от 1 до 32 бит;операнды-адреса длиной 16 и 32 бит. Эти регистры называются EAX, EBX, ECX, EDX, ESI, EDI,EBP, ESP.

Доступ к младшим 16 битам этих регистров выполняется независимо при использованиисоответствующих имен 16-битных регистров: AX, BX, CX, DX, SI, DI, BP и SP.Также могут использоваться индивидуально младший (биты 0-7) и старший (биты 8-15) байтырегистров AX, BX, CX, DX. Им соответствуют обозначения AH, DH, CH, BH и AL, DL, CL, BL.В свою очередь РОН также делятся на подгруппы: регистры данных, индексные регистры ирегистры-указатели.Регистры данных (относятся к РОН)EAX — регистр-аккумулятор, используется для накопления данных (“accumulator”);EBX — регистр базы (“base”);ECX — регистр-счетчик (“counter”);EDX — регистр данных (“data”).Эти регистры используются для хранения данных и выполнения различных арифметических илогических операций.

Некоторые команды неявно используют определенный регистр. Например,ECX может играть роль счетчика цикла.Индексные регистры (относятся к РОН)Индексные регистры предназначены для хранения индексов при работе с массивами.ESI (source index) содержит индекс источника;EDI (destination index) содержит индекс приёмника.Эти регистры можно использовать и как регистры общего назначения.Регистры-указатели (относятся к РОН)Основным назначением регистров-указателей является хранение индексов (смещений)относительно некоторого начала массива (базы) при выборке операндов из памяти.

При этом адресбазы обычно хранится в одном из базовых регистров (EBX или EBP). Обращаться с ними нужноболее осторожно, чем с предыдущими группами регистров, иначе можно получить непредвиденныйрезультат (недопустимое обращение к памяти, выход за границы массивы и т. п.).В данную группу регистров входят следующие:EBP — указатель базы (“base pointer”);ESP — указатель стека (“stack pointer”).Регистр EBP служит указателем базы при работе с данными в стеке. Может использоватьсяпроизвольным образом в большинстве арифметических и логических операций или для временногохранения каких-либо данных.

ESP указывает на вершину стека. Он используется командами,которые работают со стеком. ESP не стоит использовать для других целей.Примечание. Нельзя обратиться по имени к старшим или младшим битам регистров ESI,EDI, EDP, ESP, в отличие от EAX, EBX, ECX, EDX.Следует отметить, что регистры могут быть неравнозначны и при использовании определенныхинструкций могут иметь специальное значение:☼ EAX — аккумулятор, операнд-источник или приемник результата (некоторые инструкциимогут быть короче на один байт при использовании EAX);☼ EBX — указатель на данные в сегменте DS;☼ ECX — счетчик для цепочечных (например, MOVS) и циклических (с префиксом REP ит.п.) инструкций;☼ EDX — адрес порта ввода-вывода для инструкций IN / INS, OUT / OUTS;☼ ESI — указатель на операнд-источник в сегменте DS для цепочечных инструкций;☼ EDI — указатель на операнд-приемник в сегменте ES для цепочечных инструкций;☼ EBP — указатель на данные в сегменте SS.2Сегментные регистрыПроцессор с архитектурой IA-32 включает 6 непосредственно доступных 16-битных регистровселекторов сегментов.

С каждым сегментным регистром ассоциирован программно-недоступныйкэш дескриптора соответствующего сегмента, содержащий базовый адрес сегмента в линейномадресном пространстве, предел сегмента и атрибуты сегмента. Этот кэш заполняется при загрузкезначения в сегментный регистр. В реальном режиме предел сегмента всегда 0FFFFh, атрибутыигнорируются, а базовый адрес вычисляется сдвигом значения селектора на 4 бита влево. Взащищенном режиме кэш заполняется соответствующими значениями из дескрипторной таблицы.310Программно недоступные поля (загружаются автоматически)CSлинейный базовый адреспределатрибутыDSлинейный базовый адреспределатрибутыESлинейный базовый адреспределатрибутыFSлинейный базовый адреспределатрибутыGSлинейный базовый адреспределатрибутыSSлинейный базовый адреспределатрибутыСегментные регистры предназначены для обеспечения сегментной адресации.CS — регистр сегмента кода (“code segment”).

Хранит селектор сегмента кода. Процессоризвлекает очередную инструкцию для исполнения, формируя логический адрес из селектора в CS исмещения в регистре EIP. Значение этого регистра нельзя изменить непосредственно, оно меняетсяв командах межсегментного перехода (FAR JMP), межсегментного вызова (FAR CALL), привызове обработчика прерывания (INT) и при возврате из дальней процедуры (RETF) илиобработчика прерывания (IRET).Регистры DS, ES, FS и GS хранят селекторы сегментов данных.DS — регистр сегмента данных (“data segment”).

Если инструкция обращается к памяти, носодержит только смещение, то считается, что она обращается к данным в сегменте DS.ES — регистр дополнительного сегмента данных (“enhanced segment”). Сегмент ES можетиспользоваться без явного указания в цепочечных командах.FS и GS — используются при обращении к памяти только при явном использовании винструкции префиксов этих сегментов.SS — регистр сегмента стека (“stack segment”).

Регистр SS хранит селектор сегмента стека.Стек используется для передачи параметров подпрограммам и для сохранения адреса возврата привызове подпрограммы или обработчика прерывания. Вершиной стека считается байт, логическийадрес которого образуется из селектора в регистре SS и смещения в регистре ESP.

Программаможет непосредственно изменить значение SS, что дает ей возможность переключаться междунесколькими стеками. Причем на время выполнения команды MOV SS,xxxx и одной командыследующей за ней (обычно это MOV ESP,xxxx) запрещаются маскируемые и блокируютсянемаскируемые прерывания.Значения селекторов могут быть загружены при исполнении программы и являютсяспецифичными для задачи. Это значит, что регистры сегментов в защищенном режимеперезагружаются автоматически при переключении микропроцессора на другую задачу.

В то жевремя, использование сегментных регистров зависит от того, какая модель адресного пространства3используется. При использовании сплошной модели в сегментные регистры загружается один и тотже селектор сегмента с базой 0 и пределом 0FFFFFFFFh, обеспечивая доступ ко всемулинейному адресному пространству. При использовании сегментированной модели значенияселекторов в сегментных регистрах независимы, так что программа может одновременнообращаться к шести сегментам.Данную группу регистров необходимо было явно использовать в 16-разрядномпрограммировании.

В Win32 (начиная с Windows 95 и выше) такой проблемы уже не существует.Сегменты всё еще существуют, но о них не нужно заботиться, поскольку они уже не 64 КБ (как при16-ти разрядах), а 4 ГБ. Обращаться к регистрам этой группы не стоит — это может повлечьнепредвиденные ситуации.Указатель команд15310IPEIPEIP — указатель команд, указатель инструкции (instruction pointer). Является 32-разряднымрегистром. EIP содержит смещение следующей команды, подлежащей выполнению.Относительный адрес отсчитывается от начала сегмента исполняемой задачи. Указатель командEIP непосредственно недоступен (это его сокращенное название, а не мнемоническое обозначение,используемое в языке программирования), но он управляется явно командами управления потоком,прерываниями и исключениями (JMP, CALL, RET, IRET, команды условного перехода).Получить текущее значение EIP можно, если выполнить команду CALL, а затем прочитать словона вершине стека.Младшие 16 бит регистра EIP обозначаются IP и могут быть использованы процессоромнезависимо при исполнении 16-битного кода.Регистр флаговРегистр EFLAGS содержит группу флагов состояния, управления и системных флагов:3122 21 20Зарезервированы(установлены в0)IDVIP19 18 17 16 15 14 13 12 11 10 9VIFACVMRF 0 NTIOPLOFDFIF87TFSF65 43 2 1 0ZF 0 AF 0 PF 1CFFLAGSРегистр флагов содержит отдельные биты: флаги управления и признаки результата.Неопределенные биты зарезервированы, то есть на данный момент они не имеют значения,однако могут быть использованы для специальных целей в следующих версиях процессора.

Термин«установлен» означает значение 1, а термин «сброшен» - значение 0.Некоторые из флагов могут быть изменены специально предназначенными для этой целиинструкциями. Для изменения или проверки группы флагов можно воспользоваться командами:☼ LAHF / SAHF — загрузка / сохранение младших 8 битов регистра флагов в регистре AH;☼ PUSHF / POPF — помещение / извлечение из стека младших 16 битов регистра флагов;☼ PUSHFD / POPFD — помещение / извлечение из стека 32-битного регистра EFLAGS.Флаги статусаФлаги статуса (признаки результата) устанавливаются после выполнения арифметических илогических команд (таких как ADD, SUB, MUL, DIV):CF (carry) — флаг переноса.

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

Тип файла PDF

PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.

Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.

Список файлов лабораторной работы

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