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

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

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

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

Такая необходимость можетвозникнуть при разработке программ обработки прерываний.cli;if=0См. также: урок 15 и команды int, iret/iretd, stiCMC(CoMplement Carry flag)Инвертирование флага переносаcmcСхема команды:Назначение: изменение значения флага переноса cf на обратное.СинтаксисАлгоритм работы:инвертирование значения флага переноса cf.Состояние флагов после выполнения команды:00CFrПрименение:Данная команда используется для изменения значения флага cf на противоположное. Вчастности, этот флаг можно использовать для связи с процедурой и по его состояниюсудить о результате работы данной процедуры. После выхода из процедуры этот флагможно проанализировать командой условного перехода jc.proc1......proc1...proccmcendpcalljcпереход на m1...m1:...proc1m1;если cf=1, тоСм.

также: уроки 8, 9, 15 и команды clc, stc, jc, jncCMP(CoMPare operands)Сравнение операндовcmp операнд1,операнд2Схема команды:Назначение: сравнение двух операндов.СинтаксисАлгоритм работы:••выполнить вычитание (операнд1-операнд2);в зависимости от результата установить флаги, операнд1 и операнд2 не изменять(то есть результат не запоминать).Состояние флагов после выполнения команды:11 07 06 04 02 00OF SF ZF AF PF CFrrrrrrПрименение:Данная команда используется для сравнения двух операндов методом вычитания, приэтом операнды не изменяются. По результатам выполнения команды устанавливаютсяфлаги.

Команда cmp применяется с командами условного перехода и командой установкибайта по значению setcc.len...equcmpjne(ax)<>lenjmp(ax)=len10ax,lenm1;переход еслиm2;переход еслиСм. также: уроки 10, 11, 12 и команды cmps/cmpsb/cmpsw/cmpsd, cmpxchg, sub, jcc, setccCMPS/CMPSB/CMPSW/CMPSD(CoMPare String Byte/Word/Double word operands)Сравнение строк байтов/слов/двойных словcmps приемник,источникcmpsbСхема команды:cmpswcmpsdНазначение: сравнение двух последовательностей (цепочек) элементов в памяти.СинтаксисАлгоритм работы:••••выполнить вычитание элементов (источник - приемник), адреса элементовпредварительно должны быть загружены:o адрес источника — в пару регистров ds:esi/si;o адрес назначения — в пару регистров es:edi/di;в зависимости от состояния флага df изменить значение регистров esi/si и edi/di:o если df=0, то увеличить содержимое этих регистров на длину элементапоследовательности;o если df=1, то уменьшить содержимое этих регистров на длину элементапоследовательности;в зависимости от результата вычитания установить флаги:o если очередные элементы цепочек не равны, то cf=1, zf=0;o если очередные элементы цепочек или цепочки в целом равны, то cf=0, zf=1;при наличии префикса выполнить определяемые им действия (см.

командыrepe/repne).Состояние флагов после выполнения команды:11 07 06 04 02 00OF SF ZF AF PF CFrrrrrrПрименение:Команды без префиксов осуществляют простое сравнение двух элементов в памяти.Размеры сравниваемых элементов зависят от применяемой команды.

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

Транслятор, обработав команду cmps и выяснив тип операндов,генерирует одну из машинных команд cmpsb, cmpsw или cmpsd. Машинного аналога длякоманды cmps нет. Для адресации назначения обязательно должен использоваться регистрes, а для адресации источника можно делать замену сегмента с использованиемсоответствующего префикса.Для того чтобы эти команды можно было использовать для сравнения последовательностиэлементов, имеющих размерность байт, слово, двойное слово, необходимо использоватьодин из префиксов repe или repne. Префикс repe заставляет циклически выполнятьсякоманды сравнения до тех пор, пока содержимое регистра ecx/cx не станет равным нулюили пока не совпадут очередные сравниваемые элементы цепочек (флаг zf=1).

Префиксrepne заставляет циклически производить сравнение до тех пор, пока не будет достигнутконец цепочки (ecx/cx=0) либо не встретятся различающиеся элементы цепочек (флагzf=0)..dataobl1obl1a_obl1a_obl2.code...dbdbdddd'Строка для сравнения''Строка для сравнения'obl1obl2cld;просмотрцепочки в направлении возрастанияадресовmovcx,20;длина цепочкиldssi,a_obl1;адресисточника в пару ds:silesdi,a_obl2;адресназначения в пару ds:sirepecmpsb;сравнивать,пока равныjnzm1;если не конеццепочки, то встретились разные элементы...;действия, еслицепочки совпали...m1:...;действия, еслицепочки не совпалиСм. также: уроки 10, 11 и команды ins, lods, movs, outs, scas, stos, repe, repz, repne, repnzCMPXCHG(CoMPare and eXCHanGe)Сравнение и обменcmpxchgприемник,источник(аккумулятор)Назначение: сравнение и обмен значений между источником и приемником.Схема команды:СинтаксисАлгоритм работы:•••выполнить сравнение элементов источник и приемник;если источник и приемник не равны, то:o установить zf=0;o переслать содержимое операнда приемник в источник (регистр al/ax/eax).если источник и приемник равны, то:o установить zf=1;o переслать содержимое операнда источник (регистр al/ax/eax) по местуоперанда приемник.Состояние флагов после выполнения команды:11 07 06 04 02 00OF SF ZF AF PF CFrrrrrrПрименение:Команды сравнивают два операнда.

Один из сравниваемых операндов находится ваккумуляторе (регистре al/ax/eax), другой может находиться в памяти или регистреобщего назначения. Если значения равны, то производится замена содержимого операндаприемник содержимым источника, находящимся в регистре-аккумуляторе. Если значенияне равны, то производится замена содержимого операнда источника находящимся врегистре-аккумуляторе содержимым операнда назначения. Определить тот факт, была липроизведена смена значения в аккумуляторе (то есть были ли не равны сравниваемыеоперанды), можно по значению флага zf..486movax,114ehmovbx,8e70hcmpxchg bx,axjzm1;переход, еслиzf=1, то есть операнды равны;и ax неизменился...;действия, еслиоперанды не равныm1:См. также: уроки 7, 10 и команды cmp, xchgCWD(Convert Word to Double word)Преобразование слова в двойное словоcwdСхема команды:Назначение: расширение слова со знаком до размера двойного слова со знаком.СинтаксисАлгоритм работы:копирование значения старшего бита регистра ax во все биты регистра dx.

Состояниефлагов после выполнения команды:выполнение команды не влияет на флагиПрименение:Команда cwd используется для расширения значения знакового бита в регистре ax на битырегистра dx. Данную операцию, в частности, можно использовать для подготовки коперации деления, для которой размер делимого должен быть в два раза больше размераделителя, либо для приведения операндов к одной размерности в командах умножения,сложения, вычитания....movax,25movcwddivbx,4bxСм.

также: урок 8 и команды cbw, cdq, cwde, div, idiv, mul, imul, add, adc, sub, sbbCDQ(Convert Double word to Quad word)Преобразование двойного слова в учетверенное словоcdqСхема команды:Назначение: расширение двойного слова со знаком до размера учетверенного слова (64бита) со знаком.СинтаксисАлгоритм работы:копирование значения старшего бита регистра eax на все биты регистра edx. Состояниефлагов после выполнения команды:выполнение команды не влияет на флагиПрименение:Команду cdq можно использовать для распространения значения знакового бита врегистре eax на все биты регистра edx. Данную операцию, в частности, можноиспользовать для подготовки к операции деления, для которой размер делимого долженбыть в два раза больше размера делителя..386delimoe dddelitel dd...movcdqidivостаток в edx......eax,delimoedelitel ;частное в eax,См.

также: урок 8 и команды cbw, cwd, cwde, div, idivDAA(Decimal Adjust for Addition)Десятичная коррекция после сложенияdaaСхема команды:Назначение: коррекция упакованного результата сложения двух BCD-чисел вупакованном формате.СинтаксисАлгоритм работы:команда работает только с регистром al и анализирует наличие следующих ситуаций:••Ситуация 1. В результате предыдущей команды сложения флаг af=1 или значениемладшей тетрады регистра al>9.

Напомним, что флаг af устанавливается в 1 вслучае переноса двоичной единицы из бита 3 младшей тетрады в старшую тетрадурегистра al (если значение превысило 0fh). Наличие одного из этих двух признаковговорит о том, что значение младшей тетрады превысило 9h.Ситуация 2.

В результате предыдущей команды сложения флаг сf=1 или значениерегистра al>9fh. Напомним, что флаг cf устанавливается в 1 в случае переносадвоичной единицы в старший бит операнда (если значение превысило 0ffh в случаерегистра al). Наличие одного из этих двух признаков говорит о том, что значение врегистре al превысило 9fh.Если имеет место одна из этих двух ситуаций, то регистр al корректируется следующимобразом:•••для ситуации 1 содержимое регистра al увеличивается на 6;для ситуации 2 содержимое регистра al увеличивается на 60h;если имеют место обе ситуации, то корректировка начинается с младшей тетрады.Состояние флагов после выполнения команды (в случае, если были переносы):11 07 06 04 02 00OF SF ZF AF PF CFrrr1r1Состояние флагов после выполнения команды (в случае, если переносов не было):11 07 06 04 02 00OF SF ZF AF PF CFrrr0r0Применение:Эту команду следует применять после сложения двух упакованных BCD-чисел с цельюкорректировки получающегося двоичного результата сложения в правильное двузначноедесятичное число.

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

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

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

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