Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Команды умножения и деления двоичных чисел
Применяются для выполнения операций умножения и деления над двоичными числами. Их описание представлено в табл. 1.5. Таблица 1.5 Формат команд умножения и деления
Особенностью операций умножения и деления является наличие в команде всего одного операнда (сомножителя или делителя), который может быть задан с помощью любого режима адресации данных, кроме непосредственного (находиться в памяти или в регистре). Второй операнд задан неявно; его местоположение фиксировано и зависит от размера операндов. Знаки результатов в операциях со знаком определяются по алгебраическим правилам. Варианты размеров сомножителей, мест размещения второго операнда и результата для операции умножения представлены в табл. 1.6, а для операции деления – в табл. 1.7. Если результат по размеру совпадает с размером сомножителей, то флаги CF и OF после завершения операции раны нулю, в противном случае – устанавливаются в единицу. Это значит, что результат вышел за пределы младшей части произведения и состоит из двух частей, что необходимо учитывать при дальнейшей работе. Остальные флаги не определены. Таблица 1.6 Расположение операндов при умножении
Как следует из табл. 1.6, при умножении однобайтовых значений первый сомножитель указывается в самой команде, второй должен быть помещён в регистр AL, а произведение после выполнения команды умножения помещается в регистр AX. Процесс умножения двухбайтовых сомножителей аналогичен, за исключением того, что второй сомножитель должен быть помещён в регистр AX, а произведение сохраняется по частям в двух регистрах: DX и AX. Пример: mov al,5; Переслать в регистр al десятичное значение 5 mov bh,4; Переслать в регистр bh десятичное значение 4 mul bh; Умножить содержимое регистра al на bh mov cx,ax; Переписать значение произведения из регистра ax в c x
Таблица 1.7 Расположение операндов при делении
Делитель может находиться в регистре или в памяти и иметь размер 8 или 16 битов. Местонахождение делимого фиксировано: если делитель имеет размер 1 байт, то делимое должно помещаться в регистр AX; если делитель является двухбайтовым, то старшие два байта делимого должны размещаться в регистре DX, а младшие два байта – в регистре AX. Результатом команды деления являются частное и остаток от деления, которые также размещаются в строго определённых регистрах (табл. 1.7). После выполнения операции деления содержимое флагов не определено, но возможно возникновение исключения с номером ноль (так называемое «деление на ноль») в случаях, когда делитель равен нулю или частное не входит в отведенную для него разрядную сетку. Пример: mov ax,20; Переслать в регистр ax десятичное значение 20 mov bh,4; Переслать в регистр bh десятичное значение 4 neg bh; Изменить знак числа, хранящегося в регистре bh idiv bh; Разделить с учётом знака содержимое регистра a х на bh mov cl,al; Переписать остаток из регистра al в регистр cl mov ch,ah; Переписать остаток из регистра ah в регистр ch Логические команды Логические команды выполняют логические операции над битами операндов. Размерность операндов должна быть одинакова. Логические команды наиболее часто используются для селективных (выборочных) установок, инвертирования, сброса или проверки битов в операнде - получателе в соответствии с двоичным значением операнда - источника. Такие действия часто встречаются в операциях над битами регистров и данных ввода-вывода. При этом операнд - источник называют маской, а сама операция называется маскированием. Описание логических команд представлено в табл. 1.8. Команда логического сравнения TEST выполняет операцию логического умножения над операндами; при этом сами операнды не изменяются. Результат операции формируется во временной памяти: бит результата равен 1, если соответствующие биты операндов равны 1, в противном случае бит результата равен 0.
Команда NOT не воздействует на флажки. Остальные команды сбрасывают OF и CF, оставляют АF не определенным и устанавливают СF, Z F, PF по обычным правилам. Касательно режимов адресации, в команде NOT не допускается непосредственный операнд. В остальных командах один из операндов должен быть регистром. Другой операнд может иметь любой режим адресации. Таблица 1.8 Формат логических команд
Примеры: mov al,01001101b; Переслать в регистр al двоичное ;значение 01001101 b not al; Инвертировать биты содержимое регистра al or al, 10000001b; Установить нулевой и седьмой биты ; в регистре al в 1 and al, 11110101b; Сбросить первый и третий биты в содержимом ; регистра al test al, 00000001b; Проверить, является ли содержимое регистра al ; нечётным числом (нулевой бит должен быть 1) jnz m1; Выполнить переход на команду с адресом m 1, если нулевой ; бит содержимого регистра al равен 1 (число нечётное) ; В этом случае результат команды test равен 1 и значение ; флага zf равно 0
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2020-12-09; просмотров: 123; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.224.39.32 (0.009 с.) |