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

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

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

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

Подготовить результат к выводу на экран.movah,08h ;ah=08hmoval,09h ;al= 09hmulah;al=48h —двоичный эквивалент 72aam;ah=07h,al=02horax,3030h;ax=3732h — ASCII-представление числа72Пример 2. Преобразовать двоичное число 60h в эквивалентное десятичное число.;поместим число 60h в регистр axmovax,60h ;ax=60haаm;ax=0906h —получили десятичный эквивалент числа60horax,3030h;символьный эквивалент, можно выводитьна экранСм. также: урок 8, приложение 7 и команды aaa, aad, aas, daa, dasAAS(Ascii Adjust after Substraction)ASCII-коррекция после вычитанияaasСхема команды:Назначение: корректировка результата вычитания двух неупакованных одноразрядныхBCD-чисел.СинтаксисАлгоритм работы:если (младший полубайт регистра al меньше 9) или (флаг af=1), то выполнить следующиедействия:•••уменьшить значение младшего полубайта регистра al на 6;обнулить значение старшего полубайта регистра al;установить флаги af и cf в 1;иначе установить флаги af и cf в 1.Состояние флагов после выполнения команды:11 07 06 04 02 00OF SF ZF AF PF CF???r?rПрименение:Команду aas используют для коррекции результата вычитания двух неупакованныходноразрядных BCD-чисел после команды sub.

Операндами в команде sub должны бытьправильные одноразрядные BCD-числа. Рассмотрим возможные варианты вычитанияодноразрядных BCD-чисел:••5-9 — для вычитания необходимо сделать заем в старшем разряде. Факт такогозаема в микропроцессоре фиксируется установкой флагов cf и af в 1 и вычитанием1 из содержимого ah. В результате после команды aas в регистре al получаетсяправильное значение (модуль результата), которое для нашего примера (с учетомзаема из старшего разряда) составляет 6.

Одновременно моделируется заем изстаршего разряда, что позволяет производить вычитание длинных чисел.8-6 — для вычитания нет необходимости делать заем в старшем разряде. Поэтомупроизводится сброс флагов cf и af в 0, а ah не изменяется. В результате послекоманды aas в регистре al получается правильное значение (модуль результата),которое для нашего примера составляет 2.Пример 1.

Вычесть десятичное число 8 из 5. Подготовить результат к выводу на экран.moval,05hmovbl,08hsubal,bl;al=0fdhaas;al=07, cf=af=1oral,30h ;al=37h — кодсимвола 7;вывод результата на экранmovah,2movdl,alint21hСм. также: уроки 3, 8, приложение 7 и команды aaa, aad, aam, daa, dasADC(Addition with Carry)Сложение с переносомadc приемник,источникСхема команды:Назначение: сложение двух операндов с учетом переноса из младшего разряда.СинтаксисАлгоритм работы:•••сложить два операнда;поместить результат в первый операнд: приемник=приемник+источник;в зависимости от результата установить флаги.Состояние флагов после выполнения команды:11 07 06 04 02 02OF SF ZF AF PF CFrrrrrrПрименение:Команда adc используется при сложении длинных двоичных чисел.

Ее можноиспользовать как самостоятельно, так и совместно с командой add. При совместномиспользовании команды adc с командой add сложение младших байтов/слов/двойных словосуществляется командой add, а уже старшие байты/слова/двойные слова складываютсякомандой adc, учитывающей переносы из младших разрядов в старшие. Таким образом,команда adc значительно расширяет диапазон значений складываемых чисел.

Вприложении 7 приведен пример программы сложения двоичных чисел произвольнойразмерности..datasl1dd01fe544fhsl2dd005044cdhelderREZdb0 ;для учетапереноса из старшего разряда результатаrezdd0.code...movax,sl1addax,sl2 ;сложениемладших слов слагаемыхmovrez,axmovax,sl+2adcax,sl2+2;сложение старших слов слагаемых плюсcfmovrez+2,axadcelderREZ,0;учестьвозможный переносСм. также: урок 8, приложение 7 и команды add, sub, sbb, xaddADD(ADDition)Сложениеadd приемник,источникСхема команды:Назначение: сложение двух операндов источник и приемник размерностью байт, словоили двойное слово.СинтаксисАлгоритм работы:•••сложить операнды источник и приемник;записать результат сложения в приемник;установить флаги.Состояние флагов после выполнения команды:11 07 06 04 02 00OF SF ZF AF PF CFrrrrrrПрименение:Команда add используется для сложения двух целочисленных операндов. Результатсложения помещается по адресу первого операнда.

Если результат сложения выходит заграницы операнда приемник (возникает переполнение), то учесть эту ситуацию следуетпутем анализа флага cf и последующего возможного применения команды adc. Например,сложим значения в регистре ax и области памяти ch. При сложении следует учестьвозможность переполнения.chiclorez...dwdd20150addax,chislo;(ax)=(ax)+chmovword ptr rez,axjncdop_sum;переход, если результат не вышел заразрядную сеткуadcword ptr rez+2,0;расширить результат, для учетапереноса;встарший разрядdop_sum:...См.

также: урок 8, Приложение 7 и команды adc, sub, sbb, xaddAND(logical AND)Логическое Иand приемник,источникСхема команды:Назначение: операция логического умножения для операндов приемник и источникразмерностью байт, слово или двойное слово.СинтаксисАлгоритм работы:•••выполнить операцию логического умножения над операндами источник иприемник: каждый бит результата равен 1, если соответствующие биты операндовравны 1, в остальных случаях бит результата равен 0;записать результат операции в приемник;установить флаги.Состояние флагов после выполнения команды:11 07 06 02 00OF SF ZF PF CF0rrr0Применение:Команда and используется для логического умножения двух операндов.

Результатоперации помещается по адресу первого операнда. Эту команду удобно использовать дляпринудительной установки или сброса определенных битов операнда.Например, преобразуем двузначное упакованное BCD-число в его символьныйэквивалент.u_BCDчислоs_ch...db25h ;упакованное BCD-dw0 ;место для результатаxormovshlmov;ax=0225;преобразованиепредставление:and;ax=3235hmovax,ax;очистка axal,u_BCDax,4;ax=0250al,u_BCDв символьноеax,3f3fhs_ch,axСм. также: уроки 9, 12 и команды or, xor, testBOUND(check array BOUNDs)Контроль нахождения индекса массива в границахbound индекс,границы массиваСхема команды:Назначение: проверка нахождения значения индекса в границах массива.СинтаксисАлгоритм работы:Cравнить значение в регистре индекс с двумя значениями, расположеннымипоследовательно в ячейке памяти, адресуемой операндом границы массива.

Диапазонзначений индекса определяется используемым регистром индекс:•если это 16-разрядный регистр общего назначения, то содержащееся в немзначение проверяется на попадание в диапазон значений, которые находятся в двухпоследовательных словах в памяти по адресу, указываемому вторым операндом.•Эти два значения являются, соответственно, значениями нижнего и верхнегоиндекса границы массива;если это 32-разрядный регистр общего назначения, то содержащееся в немзначение проверяется на попадание в диапазон значений, которые находятся в двухпоследовательных двойных словах в памяти по адресу, указываемому вторымоперандом.

Эти два значения являются, соответственно, значениями нижнего иверхнего индекса границы массива;Если в результате проверки значение из регистра вышло за пределы указанного диапазоназначений, то возбуждается прерывание с номером 5, если нет, программа продолжаетвыполнение.Состояние флагов после выполнения команды:выполнение команды не влияет на флагиПрименение:Команду bound очень удобно использовать для контроля выхода за нижнюю или верхнююграницы массива. Значения этих границ должны быть предварительно помещены в двапоследовательных слова (двойных слова) в памяти. Адрес этих слов (двойных слов)указывается вторым операндом.

Далее динамически в ходе работы программы значение врегистре индекс, указываемом первым операндом, сравнивается со значениями этих двухграниц, и если нижняя_граница<=(индексindex)<=верхняя_граница, то программапродолжает выполнение. В противном случае генерируется исключительная ситуация 5(int 5).

Далее в программе обработки этой ситуации можно выполнить необходимуюкорректировку и вернуться в программу (см. урок 17).Фрагмент, который можно использовать при обработке одномерного массива сразмерностью элементов в слово:.286;это обязательная директива,так как bound;входит в систему командмикропроцессоров, начиная с i286.dataBoundMaslabelwordLow_Bounddw0Upp_Bounddw20masdw10 dup (?)...xordi,di;очисткаиндексного регистраcycl:movax,mas[di];переборэлементов массиваadddi,2bounddi,BoundMas;если значение в di не будет попадать вграницы, то будет вызван;обработчик прерывания 5, где можноскорректировать;значение ip/eip в стеке с тем, чтобывыйти;из бесконечного ;цикла, например, наметку М2 или;выполнить другие действияjmpcyclМ2:...См. также: урок 17 и команду iret/iretdBSF(Bit Scan Forward)Побитное сканирование впередbsf результат,источникСхема команды:Назначение: для проверки наличия единичных битов в операнде источник.СинтаксисАлгоритм работы:•••просмотр битов операнда источник, начиная с бита 0 и заканчивая битом 15/31, дотех пор, пока не встретится единичный бит;если встретился единичный бит, то флаг zf устанавливается в 0 и в регистр первогооперанда записывается номер позиции, где встретился единичный бит.

Диапазонзначений зависит от разрядности второго операнда: для 16-разрядного операнда —это 0...15; для 32-разрядного — это 0...31;если единичных битов нет, то флаг zf устанавливается в 1.Состояние флагов после выполнения команды:06ZFrПрименение:Команду bsf используют при работе на битном уровне для определения позиции воперанде крайних справа единичных битов.Например, сдвинем содержимое регистра bx вправо таким образом, чтобы нулевой битстал единичным:.386mov;bx=0000 0010b...bsfjzshr...null:bx,0002hcx,bxnullbx,cl;cx=0001h;bx=0000 0001bСм. также: урок 9, 12 и команду bsrBSR(Bit Scan Reverse)Побитное сканирование назадbsr результат,источникСхема команды:Назначение: проверка наличия единичных битов в операнде источник.СинтаксисАлгоритм работы:•••просмотр битов операнда источник, начиная со старшего бита 15/31 и заканчиваябитом 0, до тех пор, пока не встретится единичный бит;если встретился единичный бит, флаг zf устанавливается в 0 и в регистр первогооперанда записывается номер позиции (отсчет осуществляется относительнонулевой позиции), где встретился самый старший единичный бит.

Диапазонзначений зависит от разрядности второго операнда: для 16-разрядного операнда это0...15; для 32-разрядного — 0...31;если единичных битов нет, флаг zf устанавливается в 1.Состояние флагов после выполнения команды:06ZFrПрименение:Команду bsr используют при работе на битном уровне для определения позиции крайнихслева единичных битов.Например, сдвинем содержимое регистра bx вправо таким образом, чтобы старшийединичный бит исходного значения в bx переместился в нулевую позицию:.386...movbx,41hbsrjzshrcx,bxnullbx,ax...null:...;cx=06h;bx=0001hСм.

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

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

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

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