<<
>>

Деление

Процесс деления двух неупакованных BCD-чисел несколько отличается от дру- гих рассмотренных ранее операций с ними. Здесь также требуются действия по коррекции, но они должны выполняться до основной операции, выполняющей непосредственно деление одного BCD-числа на другое BCD-число.
Предваритель- но в регистре АХ нужно получить две неупакованные BCD-цифры делимого. Это делает программист удобным для него способом. Далее для коррекции результата деления в целях представления его в символьном виде нужно выполнить команду AAD (ASCII Adjust for Division). Команда AAD не имеет операндов и преобразует двузначное неупакованное BCD- число в регистре АХ в двоичное число, которое впоследствии будет играть роль делимого в операции деления. Кроме преобразования, команда AAD помещает по- лученное двоичное число в регистр AL. Делимое, естественно, является двоичным числом из диапазона 0...99. Алгоритм, по которому команда AAD осуществляет это преобразование, выглядит следующим образом. 1. Умножить на 10 старшую цифру исходного BCD-числа в АХ (содержимое АН). 2. Выполнить сложение АН + AL, результат которого (двоичное число) занести в AL. 3. Обнулить содержимое АН. Далее программисту нужно выполнить обычную команду деления DIV для де- ления содержимого АХ на одну BCD-цифру, находящуюся в байтовом регистре или байтовой ячейке памяти. Деление неупакованных BCD-чисел иллюстрирует лис- тинг 8.11. Аналогично ААМ, команде AAD можно найти и другое применение — использо- вать ее для перевода неупакованных BCD-чисел из диапазона 0...99 в их двоичный эквивалент. Для деления чисел большей разрядности так же, как и в случае умножения, нужно реализовывать, например, алгоритм деления в «столбик» или найти более оптимальный путь. Любопытный и настойчивый читатель, возможно, самостоя- тельно разработает эти программы. Но это делать совсем необязательно. Среди файлов, прилагаемых к книге, в каталоге данной главы приведены тексты макро- команд, которые выполняют четыре основных арифметических действия с BCD- числами любой разрядности. Кроме этого в [8] вы найдете дополнительный мате- риал по этому вопросу.
<< | >>
Источник: В. И. Юров. Assembler. Учебник для вузов. 2-е изд. 2003

Еще по теме Деление:

  1. Деление на свободных и рабов — основное деление римского общества.
  2. Деление полей
  3. Деление полей
  4. § 6. Административно-территориальное деление и местное самоуправление
  5. Административно-территориальное деление государств Содружества
  6. Деление Зодиака
  7. § 5. Административно-территориальное деление
  8. ГЛАВА 22 ДЕЛЕНИЕ ЗНАКОВ НА ЧЕТЫРЕ ЧАСТИ
  9. Административно-территориальное деление
  10. МЕХАНИЗМ ДЕЛЕНИЯ ОБЩЕСТВА НА ТОЛПУ И МАРГИНАЛОВ
  11. Административное деление и реформа местного управления
  12. Статья 106. Слияние, присоединение, деление и преобразование юридического лица