Команда преобразования

    Когда программа выполняет целое деление со знаком, возникает

    проблема, если делимое - байтовый операнд.  Иногда нужно разделить

    байтовое значение на байтовое, но команда деления требует, чтобы

    делимое занимало регистр AX.  В случае деления со знаком

    необходимо, чтобы значение в регистре AX было правильной копией

    числа, представленного в дополнительном коде.  Команда

    преобразования байта в слово CBW решает эту задачу; она берет число

    из регистра AL и расширяет его знак в регистр AH.  Таким образом,

    если значение в регистре AL положительно, команда заполняет регистр

    AH нулями, если же значение в регистре AL отрицательно, она

    устанавливает в регистре AH все единицы.  Команда CBW загружает в

    регистр AX 16=битовое число, равное значению исходного байта в

    регистре AL.  В случае деления слов команда преобразования слова в

    двойное слово CWD выполняет идентичную функцию.  Команда CWD

    расширяет знак слова из регистра AX в регистр DX.  Эти две команды

    расширяют операнды до выполнения целого деления со знаком.

 

      В случае целого деления без знака при тех же условиях знака уже

   не существует, и его не надо расширять в старшую часть делимого. В

    этом случае правильным является заполнение регистра AH (или

    регистра DX) нулями перед делением. Существует много команд,

    которые могут выполнить эту задачу, включая команду MOV с

    непосредственным операндом, или просто

 

      SUB   AH,AH

 

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

Hosted by uCoz