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