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

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

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

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

Она может быть использована для согласованияоперандов различной размерности. Но не следует думать, что все эти разнотипныепересылки делает одна машинная команда. На самом деле существует несколькомашинных команд, каждая из которых работает со своими размерами операндов.Генерацию же нужной команды обеспечивает транслятор на основе анализа исходноготекста программы..datasl.code...db?movmovzxal,0ffhbx,al;bx=00ffh...;или из памяти:movzxeax,byte ptr slСм. также: урок 8 и команды mov, movs/movsb/movsw/movsd, movsx, cbw, cwd, cdqMUL(MULtiply)Умножение целочисленное без учета знакаmul множитель_1Схема команды:Назначение: операция умножения двух целых чисел без учета знака.СинтаксисАлгоритм работы:Команда выполняет умножение двух операндов без учета знаков.

Алгоритм зависит отформата операнда команды и требует явного указания местоположения только одногосомножителя, который может быть расположен в памяти или в регистре. Местоположениевторого сомножителя фиксировано и зависит от размера первого сомножителя:•••если операнд, указанный в команде — байт, то второй сомножитель долженрасполагаться в al;если операнд, указанный в команде — слово, то второй сомножитель долженрасполагаться в ax;если операнд, указанный в команде — двойное слово, то второй сомножительдолжен располагаться в eax.Результат умножения помещается также в фиксированное место, определяемое размеромсомножителей:•••при умножении байтов результат помещается в ax;при умножении слов результат помещается в пару dx:ax;при умножении двойных слов результат помещается в пару edx:eax.Состояние флагов после выполнения команды (если старшая половина результатанулевая):11 07 06 04 02 00OF SF ZF AF PF CF0????0Состояние флагов после выполнения команды (если старшая половина результатаненулевая):11 07 06 04 02 00OF SF ZF AF PF CF1????1Применение:Команда mul выполняет целочисленное умножение операндов без учета их знаковыхразрядов.

Для этой операции необходимо наличие двух операндов-сомножителей,размещение одного из которых фиксировано, а другого задается операндом в команде.Контролировать размер результата удобно используя флаги cf и of.mn_1mn_2...dbdb1525movmulal,mn_1mn_2См. также: урок 8 и команду imulNEG(NEGate operand)Изменить знак операндаneg источникСхема команды:Назначение: изменение знака (получение двоичного дополнения) источника.СинтаксисАлгоритм работы:••выполнить вычитание (0 – источник) и поместить результат на место источника;если источник=0, то его значение не меняется.Состояние флагов после выполнения команды (если результат нулевой):11 07 06 04 02 00OF SF ZF AF PF CFrrrrr0Состояние флагов после выполнения команды (если результат ненулевой):11 07 06 04 02 00OF SF ZF AF PF CFrrrrr1Применение:Команда используется для формирования двоичного дополнения операнда в памяти илирегистре.

Операция двоичного дополнения предполагает инвертирование всех разрядовоперанда с последующим сложением операнда с двоичной единицей. Если операндотрицательный, то операция neg над ним означает получение его модуля.moval,2negal;al=0feh —число -2 в дополнительном кодеСм. также: уроки 6, 8 и команду notNOP(No OPeration)Нет операцииСхема команды:Назначение: пустая команда.nopСинтаксисАлгоритм работы:не производит никаких действий.Состояние флагов после выполнения команды:выполнение команды не влияет на флагиПрименение:Команда nop, занимая один байт, может использоваться для резервирования места всегменте кода или организации программной задержки.

В качестве иллюстрации можнообратиться к примеру, приведенному в описании команды hlt. В этом примере командуnop можно использовать вместо jmp $+2. Назначение jmp $+2 в этом фрагменте —задержка для синхронизации работы микропроцессора и аппаратуры компьютера.NOT(NOT operand)Инвертирование операндаnot источникСхема команды:Назначение: инвертирование всех битов операнда источник.СинтаксисАлгоритм работы:инвертировать все биты операнда источника: из 1 в 0, из 0 в 1.Состояние флагов после выполнения команды:выполнение команды не влияет на флагиПрименение:Команду not можно использовать для изменения байта, выполняющего роль некоторогофлага, с целью отслеживания некоторых логических условий в программе. Но такойспособ не оптимален, эту ситуацию мы обсуждали в книге на уроках 9 и 12.flagистина...cycl:...db0ffh ;значение флага —cmpjeflag,0m1...m1:notфлаг в истинуflag;установитьСм.

также: уроки 9, 12 и команду negOR(logical OR)Логическое включающее ИЛИor приемник,маскаСхема команды:Назначение: операция логического ИЛИ над битами операнда назначения.СинтаксисАлгоритм работы:•••выполнить операцию логического ИЛИ над битами операнда назначения,используя в качестве маски второй операнд — маска. При этом бит результатаравен 0, если соответствующие биты операндов маска и назначения равны 0, впротивном случае бит равен 1;записать результат операции в источник (операнд маска остается неизменным);установить флаги.Состояние флагов после выполнения команды:11 07 06 04 02 00OF SF ZF AF PF CF0rr?r0Применение:Команду or можно использовать для работы с операндами на уровне битов. Типичноеиспользование команды — установка определенных разрядов первого операнда вединицу.moval,01horbl,alнулевой бит в 1;установитьСм. также: урок 9 и команды and, xor, notOUT(OUT operand to port)Вывод операнда в портout ном_порта,аккумуляторСхема команды:Назначение: вывод значения в порт ввода-вывода.СинтаксисАлгоритм работы:Передать байт, слово, двойное слово из регистра al/ax/eax в порт, номер которогоопределяется первым операндом.Состояние флагов после выполнения команды:выполнение команды не влияет на флагиПрименение:Команда применяется для прямого управления оборудованием компьютера посредствомпортов.

Номер порта задается первым операндом в виде непосредственного значения илизначения в регистре dx. Непосредственным значением можно задать порт с номером вдиапазоне 0...255. Для указания порта с большим номером используется регистр dx.Размер данных определяется размерностью второго операнда и может быть байтом,словом или двойным словом.out64h,alСм. также: уроки 2, 7, 16, 17 и команды in, ins/insb/insw/insd, outsOUTS/OUTSB/OUTSW/OUTSD(OUTput Byte/Word/Double word String to port)Вывод строки байтов/слов/двойных слов в портouts порт,источникoutsbСхема команды:outswoutsdНазначение: вывод в порт из памяти последовательности байт, слов, двойных слов.СинтаксисАлгоритм работы:•••передать данные в порт ввода-вывода, номер которого загружен в регистр dx, изячейки памяти по адресу ds:esi/si;в зависимости от состояния флага df изменить значение регистров esi/si:o если df=0, то увеличить содержимое этих регистров на длину структурногоэлемента последовательности;o если df=1, то уменьшить содержимое этих регистров на длину структурногоэлемента последовательности;при наличии префикса выполнить определяемые им deiqrbh (см.

командуrep/repe/repz/repne/repnz).Состояние флагов после выполнения команды:выполнение команды не влияет на флагиПрименение:Команда выводит данные в порт ввода-вывода, номер которого загружен в регистр dx, изячейки памяти по адресу ds:esi/si (допускается замена сегмента). Недопустимо заданиеномера порта в команде в виде непосредственного операнда — для этого используетсярегистр dx. Размеры вводимых элементов зависят от применяемой команды. Команда outsможет работать с элементами размером в байт, слово или двойное слово.

В качествеоперанда в команде указывается символическое имя ячейки памяти, из которой элементвыводится в порт ввода-вывода. Реально символическое имя используется лишь дляполучения типа элемента последовательности, а ее адрес должен быть предварительнозагружен в пару регистров ds:esi/si. Транслятор, обработав команду outs и выяснив типоперандов, генерирует одну из машинных команд outsb, outsw или outsd. Машинногоаналога для команды outs нет.Для того чтобы эти команды можно было использовать для вывода в портпоследовательности элементов, имеющих размерность байт, слово или двойное слово,необходимо использовать префикс rep.

Он заставляет циклически выполняться командувывода в порт до тех пор, пока содержимое регистра ecx/cx не станет равным нулю..286;вывести последовательность 10 байт впорт 300h;(номер порта взят условно)str_10 db10 dup(0)adr_str ddstr_10ldssi,adr_strmovdx,300hrepoutsbСм. также: уроки 2, 7, 11 и команды cmps/cmpsb/cmpsw/cmpsd, lods/lodsb/lodsw/lodsd,movs/movsb/movsw/movsd, ins/insb/insw/insd, scas/scasb/scasw/scasd, stos/stosb/stosw/stosd,rep/repe/repz/repne/repnzPOP(POP operand from the stack)Извлечение операнда из стекаpop приемникСхема команды:Назначение: извлечение слова или двойного слова из стека.СинтаксисАлгоритм работы:Алгоритм работы команды зависит от установленного атрибута размера адреса — use16или use32:••загрузить в приемник содержимое вершины стека (адресуется парой ss:esp/sp);увеличить содержимое esp/sp на 4 (2 байта) для use32 (соответственно для use16).Состояние флагов после выполнения команды:выполнение команды не влияет на флагиПрименение:Команда применяется для восстановления содержимого вершины стека в регистр, ячейкупамяти или сегментный регистр.

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

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

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

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