Данная процедура конвертирует 16-битное слово в строку ASCIIZ, т.е. число 7 преобразовывается в строку 0000000000000111. Лидирующие нули включаются в строку. Строка ASCIIZ - это набор символов, завершающихся 0.

NmbrToBi$ proc ;POW36

;Входные данные: AX - смещение строки, BX - число, которое необходимо преобразовать

;Выходные данные: Строка ASCIIZ. Регистры не сохраняются.

mov DI,AX ;смещение строки

mov DX,8000h ;проверочное слово, 1 в позиции 15

mov CX,16 ;обрабатываем 16 бит

NumberTo_B0:

mov AL,48 ;символ '0'

test BX,DX ;бит равен 1?

jz NumberTo_B

inc AL ;символ '1'

NumberTo_B:

stosb ;записываем в строку '1' или '0'

shr DX,1 ;сдвигаем тестовый бит вправо

loop NumberTo_B0

mov [DI],DL ;завершаем строку 0

ret

NmbrToBi$ endp