Меню сайта

Урок 62. Команда преобразования

Когда программа выполняет целое деление сознаком, возникает
— — — проблема, если делимое — байтовый операнд. — Иногда нужно разделить
— — — байтовое значение на байтовое, но командаделения требует, чтобы
— — — делимое занимало регистр AX. — В случае деления со знаком
— — — необходимо, чтобы значение в регистре AXбыло правильной копией
— — — числа, представленного в дополнительномкоде. — Команда
— — — преобразования байта в слово CBW решаетэту задачу- она берет число
— — — из регистра AL и расширяет его знак врегистр AH. — Таким образом,
— — — если значение в регистре AL положительно,команда заполняет регистр
— — — AH нулями, если же значение в регистре ALотрицательно, она
— — — устанавливает в регистре AH всеединицы. — Команда CBW загружает в
— — — регистр AX 16=битовое число, равноезначению исходного байта в
— — — регистре AL. — В случае деления слов команда преобразования слова в
— — — двойное слово CWD выполняет идентичнуюфункцию. — Команда CWD
— — — расширяет знак слова из регистра AX врегистр DX. — Эти две команды
— — — расширяют операнды до выполнения целогоделения со знаком.

— — — — — В случае целого деления без знака при техже условиях знака уже
— — не существует, и его не надо расширять встаршую часть делимого. В
— — — этом случае правильным является заполнениерегистра AH (или
— — — регистра DX) нулями перед делением.Существует много команд,
— — — которые могут выполнить эту задачу,включая команду MOV с
— — — непосредственным операндом, или просто

— — — — — SUB — — AH,AH

— — — — — что гарантирует обнуление регистра AH.

Категория: Программирование на Ассемблере | Дата: 07.02.13

Меню раздела
Блок