![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Вычитание двоичных чисел без знакаСодержание книги
Поиск на нашем сайте
Команды вычитания выполняют вычитание, по рассмотренным алгоритмам, а учёт особых ситуаций должен производиться самим разработчиком программного продукта. К командам вычитания относят: – DEC <операнд> – операция декремента. Флаг CF не затрагивается, а остальные арифметические флаги (OF, SF, ZF, AF, PF) устанавливаются в соответствии с результатом вычитания. – SUB <операнд_1>,<операнд_2> – команда вычитания; Принцип действия: операнд_1=операнд_1-операнд_2. Нельзя использовать переменную одновременно и для операнд_2, и для операнд_1. Команда SUB не делает различий между числами со знаком и без знака. – SBB <операнд_1>,<операнд_2> – команда вычитания с учётом заёма (флага cf). Принцип действия: операнд_1=операнд_1-операнд_2-значение_cf.
Пример: вычтем из одного 64-битного числа, хранящегося в EDX:EAX другое, хранящееся в ЕВХ:ЕСХ. Sub eax,ecx Sbb edx,ebx Если при вычитании младших двойных слов произошел заем, то он будет учтен при вычитании старших. Пример: в регистр al поместить результат вычитания 5-10.
![]() Факт того, что в al записано отрицательное число, отражён в состоянии флага cf. Вычитание двоичных чисел со знаком Вычитание в микропроцессоре производится путём сложения. Результат вычитания нужно рассматривать как значение в дополнительном коде. Например: -45-45=-90 -45= 11010011 + -45= 11010011 = -90=1 10100110 в приёмнике число в дополнительном коде. (sf=1; of=1;) +00000001 =010110102 =9010
Умножение двоичных чисел без знака Для умножения чисел без знака предназначена команда: MUL <источник>; Выполняет умножение содержимого источника (регистр или переменная) и регистра AL, АХ, ЕАХ (в зависимости от размера источника) и помещает результат в АХ, DX:AX, EDX:EAX соответственно. Произведение имеет двойной размер.
Размер Источник Результат (приёмник)
Если АН, DX, EDX содержит только нули, то флаги CF=0 и OF=0, иначе — в 1. Например, умножим содержимое регистра al (25) на 45. Умножение двоичных чисел со знаком – IMUL <операнд_1>[, операнд_2, операнд_3]; умножение чисел со знаком. Эта команда имеет три формы, различающиеся числом операндов: 1) IMUL <операнд_1>: операнд_1 (регистр или переменная) умножается на AL, АХ или ЕАХ (в зависимости от размера операнда), и результат располагается в АХ, DX:AX или EDX:EAX соответственно.
2) IMUL <операнд_1>,<операнд_2>: операнд_2 (число, регистр или переменная) умножается на операнд_1 (регистр), и результат заносится в операнд_1. 3) IMUL <операнд_1>,<операнд_2>,<операнд_3>: операнд_2 (регистр или переменная) умножается на операнд_3 (число), и результат заносится в операнд_1 (регистр). Произведение имеет двойной размер В первом случае приемник (регистры АХ, DX:AX или EDX:EAX) всегда больше операнд_1. Если результат мал и умещается в одном регистре (то есть если cf=of=0), то содержимое другого регистра (старшей части) является расширением знака – все его биты равны старшему биту (знаковому разряду) младшей части результата. В противном случае (если cf=of=1) знаком результата является знаковый бит старшей части результата, а знаковый бит младшей части является значащим битом двоичного кода результата.
Пример: mul bl;al*bl, результат в Ах. Пример: mul bx;ax*bx, результат Dx:Ax.
Лекция №5. Арифметические команды над целыми числами (продолжение). Арифметические операции над двоично-десятичными числами (BCD числами) Деление двоичных чисел без знака. Для деления чисел без знака предназначена команда: – DIV <делитель>; Команда выполняет целочисленное деление без знака АХ, DX:AX или EDX:ЕАХ (в зависимости от размера делителя) на делитель (регистр или переменная) и помещает результат в AL, АХ или ЕАХ, а остаток — в АН, DX или EDX соответственно.
Расположение операндов и результата при делении
Пример: div bl;ax/bl, результат в Al,Ah. Пример: div bx; (Dx:Ax)/Bx, результат Ax,Dx. Источник (делитель) может быть: 1. 8-бит регистр (al, ah, cl,...) 2. 16-бит регистр (ax, dx,...) 3. 32-бит регистр (eax, edx, ecx...) 4. 8-бит значение из памяти (byte ptr [xxxx]) 5. 16-бит значение из памяти (word ptr [xxxx]) 6. 32-бит значение памяти (dword ptr [xxxx]) Прерывание 0 – «деление на 0» – при выполнении команды div может возникнуть по одной из следующих причин: 1) делитель равен 0; 2) частное не входит в отведённую под него разрядную сетку, что может случиться в следующих случаях:
– при делении слова на байт значение делимого в более чем 256 раз больше значения делителя; – при делении двойного слова на слово делимое в более чем 65536 раз больше значения делителя; – при делении учетверённого слова на двойное слово делимое в более чем 4 294 967 296 раз больше значения делителя. Пример:
|
||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-09-13; просмотров: 427; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.15.26.235 (0.01 с.) |