четверг, 11 июня 2009 г.

перевод в десятичную систему

разработать программу для перевода двоичного числа в десятичное


.8087
text segment byte
assume cs:text,ds:text
org 100h
begin:
; Форматируем
mov ax,1Ah ; 0666
call GetDecimalStr
; Выводим на печать
mov dx,offset DecNum
mov ah,09h
int 21h
ret

GetDecimalStr:
; Пусть в ax будет число, которое надо вывести как десятичное
; Форматируем его, результат записываем в строку
mov cx,10000 ; Начальный делитель
mov di,offset DecNum ; Адрес приемника
cld ; Флаг направления для команды stosb
@@GetDec:
xor dx,dx
div cx ; dx:ax / cx -> ax, остаток в dx
add al,'0' ; Приводим к ASCII
stosb ; Записываем в выходную строку
push dx ; Запоминаем остаток
xor dx,dx
mov ax,cx
mov cx,10
div cx ; Делим делитель на 10
mov cx,ax
pop ax ; Вспоминаем делимое
test cx,cx ; Делитель стал равен 0 ?
jnz @@GetDec
ret
DecNum db '??????',13,10,'$'
text ends
end begin


скачать можно тут

Комментариев нет:

Отправить комментарий