Консультация № 60573
29.10.2006, 16:51
0.00 руб.
0 2 2
Здравствуйте, уважаемые эксперты.
Проблема у меня такая: нужно вывести десятичный эквивалент числа, находящегося в регистре, на экран. Наиболее проблемная часть - это вывод многозначного числа. Скажем, AF4D. Помогите плиз с алгоритмом. Или ссылочку на сырец какой-нибудь дайте.
Спасибо.

Обсуждение

Неизвестный
29.10.2006, 18:22
общий
это ответ
Здравствуйте, Const!

Программа выводит в десятичном виде число в AX. Алгоритм можно приспособить для вывода в любой системе счисления.
Удачи!

Приложение:
cseg segment assume cs:cseg, ds:nothing, ss:ssegbegin: mov ax,0AF4Dh ;Тестовое число call outAX ;Вывод mov ah,08h ;Просмотр результатов до нажатия клавиши int 21h mov ax,4C00h ;Выход int 21houtAX proc near push ax push cx push dx push bx mov bx,10 ;Делитель - основание системы счисления xor cx,cx ;Сколько будет цифр@1: xor dx,dx ;Очистка старшей части делителя div bx ;Получаем остаток от деления на основание системы счисления, то есть последнюю цифру push dx ;Сохраняем её в стеке(порядок получения обратен порядку вывода) inc cx ;Одной цифрой больше or ax,ax ;Если делитель 0, то дальше получать цифры не надо jnz @1 mov ah,02h ;Функция вывода@2: pop dx ;Восстанавливаем цифры add dl,30h ;Преобразование из числа в символ int 21h ;Выводим цифру loop @2 pop bx pop dx pop cx pop ax retoutAX endpcseg endssseg segment stack db 400h dup (?)sseg ends end begin
Неизвестный
31.10.2006, 16:22
общий
это ответ
Здравствуйте, Const!
На Wasm.ru есть статья по выводу цифр:
Низкоуровневое программирование для дZенствующих / Программирование на Ассемблере под DOS \2.4. Печать десятичных циферек

Форма ответа