Главная » Просмотр файлов » Описание системы команд

Описание системы команд (1110646), страница 14

Файл №1110646 Описание системы команд (Семинары) 14 страницаОписание системы команд (1110646) страница 142019-04-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Замена сегмента es не допускается;по результату вычитания установить флаги;•изменить значение регистра edi/di на величину, равную длине элемента цепочки.Знак этой величины зависит от состояния флага df:o df=0 — величина положительная, то есть просмотр от начала цепочки к ееконцу;o df=1 — величина отрицательная, то есть просмотр от конца цепочки к ееначалу.Состояние флагов после выполнения команды:11 07 06 04 02 00OF SF ZF AF PF CFrrrrrrПрименение:Команды сканирования сравнивают значение в регистре eax/ax/al с ячейкой памяти,локализуемой парой регистров es:edi/di. Размер сравниваемого элемента зависит отприменяемой команды. Команда scas может работать с элементами размером в байт, словоили двойное слово.

В качестве операнда в команде указывается идентификаторпоследовательности элементов в памяти. Реально этот идентификатор используется лишьдля получения типа элементов последовательности, а ее адрес должен бытьпредварительно загружен в указанную выше пару регистров.

Транслятор, обработавкоманду scas и выяснив тип операндов, генерирует одну из машинных команд:: scasb,scasw или scasd. Машинного аналога для команды scas нет. Для адресации операндаисточник обязательно должен использоваться регистр es.Для того чтобы эту команду можно было использовать для поиска значения впоследовательности элементов, имеющих размерность байт, слово или двойное слово,необходимо использовать один из префиксов repe или repne.

Эти префиксы не толькозаставляют циклически выполняться команду поиска, пока ecx/cx<>0, но и отслеживаютсостояние флага zf (см. команды rep/repe/repne).;сосчитать число пробелов в строке str.datastrdb'...'len_str=$-str.codemovax,@datamovds,axmoves,axleadi,strmovcx,len_str;длинустроки — в cxmoval,' 'movbx,0;счетчик дляподсчета пробелов в строкеcldcycl:repescasbjcxzexit;переход наexit, если цепочка просмотренаполностьюincbxjmpcyclexit:...См.

также: урок 11 и команды cmps/cmpsb/cmpsw/cmpsd, ins/insb/insw/insd,lods/lodsb/lodsw/lodsd, movs/movsb/movsw/movsd, outs, stos/stosb/stosw/stosd, rep/repe/repz/repne/repnzSETcc(byte SET on condition)Установка байта по условиюsetcc операндСхема команды:Назначение: установка операнда логическим значением в зависимости от истинностиусловия, заданного модификатором кода операции cc.СинтаксисАлгоритм работы:Команда проверяет истинность условия, заданного в коде операции, то есть, фактически,состояние определенных флагов.Команды установки байтовКомандаПроверяемые флагиЛогическое условиеSETA/SETNBECF = 0 и ZF = 0(выше)/(не ниже или равно)SETAE/SETNBCF = 0(выше или равно)/(не ниже)SETB/SETNAECF = 1(ниже)/(не выше или равно)SETBE/SETNA CF = 1 или ZF = 1(ниже или равно)/(не выше)SETCCF = 1переносSETE/SETZZF = 1нольSETG/SETNLE ZF = 0 или SF = OF(больше)/(не меньше или равно)SETGE/SETNLSF = OF(больше или равно)/(не меньше)SETL/SETNGESF <> OFесли SF <> OFSETLE/SETNG ZF=1 или SF <> OF(меньше или равно)/(не больше)SETNCCF = 0нет переносаSETNE/SETNZZF = 0не равно нулюSETNOOF=0нет переполненияSETNP/SETPOPF = 0(неравенство)/(нет контроля четности)SETNSSF = 0нет знака, число положительноеSETOOF = 1переполнениеSETP/SETPEPF = 1контроль четности/равенствоSETSSF = 1если знак минус, число отрицательноеЕсли проверяемое условие (или содержимое соответствующих флагов на момент выдачикоманды setcc) истинно, то установить значение операнда в 01h, если условие ложно — тов 00h.Состояние флагов после выполнения команды:выполнение команды не влияет на флагиПрименение:Эти команды можно использовать после любой команды, изменяющей флаги, принеобходимости анализа результата изменений.

Если проанализировать условия длякоманд условного перехода, то обнаружится их полное соответствие с условиями,обрабатываемыми командой setcc, за исключением, конечно, команд jcxz и jecxz.;подсчитать число единичных битов врегистре axmovcx,16m1:rolax,1setcbladdbh,blclcloopm1См. также: урок 10 и команду jccSGDT(Store Global Descriptor Table)Сохранение регистра глобальной дескрипторной таблицыsgdt источникСхема команды:Назначение: извлечение содержимого системного регистра gdtr, содержащего значениябазового адреса и размера глобальной дескрипторной таблицы GDT.СинтаксисАлгоритм работы:Команда выполняет чтение содержимого системного регистра gdtr в область памятиразмером 48 бит. Структурно эти 48 бит представляют 16 бит размера и 32 бита значениябазового адреса начала таблицы GDT в памяти.Состояние флагов после выполнения команды:выполнение команды не влияет на флагиПрименение:Команду sgdt применяют при работе системных программ с уровнем привилегий 0, вчастности, при написании различных драйверов..286;структура для описанияпсевдодескриптора gdtrpointSTRUClimdw0adrdd0ENDS.datapoint_gdtpoint.code...;читаем содержимое gdtrsgdtpoint_gdt...См.

также: уроки 16, 17 и команду lgdtSIDT(Store Interrupt Descriptor Table)Сохранение регистра глобальной дескрипторной таблицы прерыванийsidt источникСхема команды:Назначение: извлечение содержимого системного регистра idtr, содержащего значениябазового адреса и размера дескрипторной таблицы прерываний IDT.СинтаксисАлгоритм работы:команда sidt выполняет чтение содержимого системного регистра idtr в область памятиразмером 48 бит.

Структурно эти 48 бит представляют 16 бит размера и 32 бита значениябазового адреса начала таблицы IDT в памяти.Состояние флагов после выполнения команды:выполнение команды не влияет на флагиПрименение:Команду sidt применяют при работе системных программ с уровнем привилегий 0, вчастности, при написании различных драйверов. В качестве операнда в командеуказывается адрес области в формате 16+32. Младшее слово области — размер IDT,двойное слово по старшему адресу — значение базового адреса начала этой таблицы..286;структура для описанияпсевдодескрипторов gdtr и idtrpointSTRUClimdw0adrdd0ENDS.datapoint_idtpoint.code...;читаем содержимое idtrsidtpoint_idt...См.

также: урок 17 и команду lidtSHL(SHift logical Left)Сдвиг логический операнда влевоshl операнд,количество_сдвиговСхема команды:Назначение: логический сдвиг операнда влево.СинтаксисАлгоритм работы:•••сдвиг всех битов операнда влево на один разряд, при этом выдвигаемый слева битстановится значением флага переноса cf;одновременно слева в операнд вдвигается нулевой бит;указанные выше два действия повторяются количество раз, равное значениювторого операнда.Состояние флагов после выполнения команды:11 00OF CF?r rПрименение:Команда shl используется для сдвига разрядов операнда влево.

Ее машинный кодидентичен коду sal, поэтому вся информация, приведенная для sal, относится и к командеshl. Команда shl используется для сдвига разрядов операнда влево. Так же, как и длядругих сдвигов, значение второго операнда (счетчикк сдвига) ограничено диапазоном0...31. Это объясняется тем, что микропроцессор использует только пять младшихразрядов операнда количество_разрядов. Аналогично другим командам сдвигасохраняется эффект, связанный с поведением флага of, значение которого имеет смыслтолько в операциях сдвига на один разряд:••если of=1, то текущее значение флага cf и выдвигаемого слева бита операндаразличны;если of=0, то текущее значение флага cf и выдвигаемого слева бита операндасовпадают.Этот эффект, как вы помните, обусловлен тем, что флаг of устанавливается в единицувсякий раз при изменении знакового разряда операнда.Команду shl удобно использовать для умножения целочисленных операндов без знака настепени 2.

Кстати сказать, это самый быстрый способ умножения; умножить содержимоеax на 16 (2 в степени 4).movshlax,17ax,4См. также: урок 9 и команды rcr, rcl, ror, rol, sar, sal, shrSHLD(SHift Left Double word)Сдвиг двойного слова влевоshldприемник,источник,количество_сдвиговНазначение: логический сдвиг двойного слова влево.Схема команды:СинтаксисАлгоритм работы:•сдвинуть операнд приемник влево на количество битов, определяемое операндомколичество_сдвигов;••одновременно сдвинуть операнд источник влево на количество битов,определяемое операндом количество_сдвигов. Важно заметить, что операндисточник только обеспечивает вдвигаемые в операнд приемник биты, сам он приэтом не изменяется;выдвигаемые во время сдвига влево из операнда источник биты вдвигаются воперанд приемник с его правого края.Состояние флагов после выполнения команды:11 07 06 04 02 00OF SF ZF AF PF CF?rr?rrПрименение:Команда shld используется для манипуляции битовыми строками длиной до 64 бит.

Этукоманду удобно использовать для быстрой вставки (или извлечения) битной строки вбольшую битную строку; при этом, что очень важно, не разрушается контекст (битноеокружение) этих подстрок..386;извлечь старшую половину eax в bx безразрушения eaxmovcl,16shldebx,eax,clpushbxshlebx,clshldeax,ebx,cl;восстановим eax pop bxСм. также: урок 9 и команды rcr, rcl, ror, rol, sar, sal, shr, shrdSHRСдвиг логический операнда вправоASCII-коррекция после сложенияshr операнд,кол-во_сдвиговСхема команды:Назначение: логический сдвиг операнда вправо.СинтаксисАлгоритм работы:•••сдвиг всех битов операнда вправо на один разряд; при этом выдвигаемый справабит становится значением флага переноса cf;одновременно слева в операнд вдвигается нулевой бит;указанные выше два действия повторяются количество раз, равное значениювторого операнда.Состояние флагов после выполнения команды:11 07 06 04 02 00OF SF ZF AF PF CF?r rr?rrПрименение:Команда shr используется для логического сдвига разрядов операнда вправо.

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

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

Список файлов семинаров

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