Учебник по ассемблеру (ASM)
 

Ассемблер в примерах - Вывод в двоичной форме

Вопрос:
У меня есть результат некоторого вычисления. Мне нужно вывести результат вычисления в двоичной форме на экран.
.data
   a dw 70h          ;= 112 |
   b dw 8bh          ;= 139 |
   c dw ?  ;Результирующая переменная, = 251[10] = 0fbh[16]
.code
main:
   mov  ax,@data
   mov  ds,ax
   xor  ax,ax

   mov  ax,a  ;AX  = a
   add  ax,b  ;AX  = AX+b = a+b
   mov  c,ax  ;c   = AX   = a+b

  ;А ТЕПЕРЬ НУЖНО ПРЕОБРАЗОВАТЬ, КАК Я ПОНИМАЮ, c В СТРОКУ И ВЫВЕСТИ НА ЭКРАН

   mov  ax,4c00h
   int  21h
end main

Ответ:
Добавляете п\программу OutNumber , между строчками:
mov ax,4c00h
int 21h
;тут
end main


Вызывать нужно так:
mov bx,2
call OutNumber
mov bx,10
call OutNumber
mov bx,16
call OutNumber
Подпрограмма универсальная, работает с любой системой счисления, указаной в регистре ВХ.
Процессор должен быть определен как 186.
OutNumber:	pusha
настраиваемся на вывод
		xor	cx,cx
;в получаем последнюю цифру числа и запоминаем в стеке
isDiv:		xor	dx,dx
		div	bx
		push	dx
		inc	cx;считаем количество цифр
		or	ax,ax;повторяем пока не 0
		jnz	isDiv
;выводим число в нужном порядке в цикле
isOut:		pop	ax
		cmp	al,09
		jle	noHex
		add	al,7
noHex:		add	al,30h
		int	29h
		loop	isOut
;выводим разделяющий пробел
		mov	al,' '
		int	29h
;востанавливаем все регистры и возвращаемся из п/программы
		popa
		ret

   Вперёд
   Содержание