|
Ассемблер в примерах - Вывод в двоичной форме
- Вопрос:
- У меня есть результат некоторого вычисления. Мне нужно вывести результат вычисления в двоичной форме на экран.
.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
| |