Перевод из одной СС в другую

Спасибо, ребята, разобрался с этой строчкой

По директиве

dw

отводится ячейка памяти размером в слово (2 байта или 16 бит), которой присваивается имя

buf

, и в которую заносится операнд

0

. Конструкция

6 dup(0)

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

0

. Таким образом, мы зарезервировали 6 слов памяти.

Почему именно 6? Вроде тоже разобрался. В слово можно записать числа диапазона -2^(n-1):2^(n)-1, где n - разрядность ячейки (в нашем случае n=16). Максимальное число этого диапазона будет 2^(16)-1 = 65535, которое в 8-чной СС выглядит как 177777 (т.е. мы можем задать в качестве переводимого числа

val

число 65535, т.к. для него определена ячейка размером в слово

dw

). Как я понял, каждая цифра восьмеричного числа 177777 записывается в отдельную ячейку выделенного нами размера. Всего цифр 6, поэтому мы и выделяем 6 ячеек.

Получается, если бы мы переводили не в 8-чную, а в 2-чную СС, то нам надо было бы выделить 16 слов, т.к. в 2-чной СС 65535 представлено 16-тью единицами?

И почему мы выделяем для каждой цифры целое слово, когда достаточно и одного байта?

А вот по 3-му вопросу все равно не совсем понимаю. Зачем нам нужно записывать число 20 в ячейку?