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

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

  SUB AH,AH

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