Как в вывести числа в Ассемблере? Можно, конечно, взять число поделить на 10, к остатку прибавить 30h, затем частное снова поделить на 10 и т.д. Кстати, я на форуме видел что-то подобное. Но неужели мелкомягкие не предусмотрели для этого дела какой-нибудь функции?
Автор: volvo 20.05.2006 18:47
Цитата(CMOS @ 20.05.2006 14:19)
Как в вывести числа в Ассемблере? <...> Но неужели мелкомягкие не предусмотрели для этого дела какой-нибудь функции?
Во-первых, при чем здесь ассемблер и "мелкомягкие"? Вместо того, чтоб возмущаться, лучше бы назвал компилятор, которым пользуешься. MASM? Существует ассемблер НЕ только от MicroSoft... Возьми, например, TASM (или FASM, или NASM), и попробуй на нем сделать что-то...
Автор: CMOS 21.05.2006 0:01
Когда я вспоминал Майкрософтовцов я имел ввиду прерывания >21h. Компилятор TAsm.
Автор: FreeMan 23.05.2006 21:18
wsprintf вроде имя этой функции. туда передается указатель на выходной буфер, на формат. строку... там не только числа в строку можно превратить. вобщем МСДН!
Автор: CMOS 23.05.2006 22:54
Цитата(FreeMan @ 23.05.2006 19:18)
wsprintf вроде имя этой функции. туда передается указатель на выходной буфер, на формат. строку... там не только числа в строку можно превратить. вобщем МСДН!
Ты сейчас какой компилятор имел ввиду? Виндозовский? Работаю под 16 бит в TAsm-e строго!
Автор: CRASH 24.05.2006 21:06
Цитата(CMOS @ 20.05.2006 18:19)
Как в вывести числа в Ассемблере? Можно, конечно, взять число поделить на 10, к остатку прибавить 30h, затем частное снова поделить на 10 и т.д. Кстати, я на форуме видел что-то подобное. Но неужели мелкомягкие не предусмотрели для этого дела какой-нибудь функции?
А что тут сложного. Всё очень просто как 2x2. Напрмер, имеется значение в bl и переменная cnt - byte:
mov al, bl aam ;корректируем значение в ax деля число на 10. (частное в al, остаток в ah) or 3030h ;преобразуем число в символ таблицы ASCII путём "дорисовки" символа <3> mov cnt, ah mov cnt+1, al
Думаю тут всё просто и понятно.
Цитата(CMOS @ 20.05.2006 18:19)
Как в вывести числа в Ассемблере? Можно, конечно, взять число поделить на 10, к остатку прибавить 30h, затем частное снова поделить на 10 и т.д. Кстати, я на форуме видел что-то подобное. Но неужели мелкомягкие не предусмотрели для этого дела какой-нибудь функции?
Забыл сказать: для простого вывода на монитор числа просто после помещения нужного значения в dl прибавляем к нему 30h (add dl, 30h).
Ну сейчас похоже и всё
Автор: CMOS 27.05.2006 0:05
Да пробовал я это раньше. Работает только с байтами. Для слов подогнать не смог. Ладно, вспомним старую добрую математику. Так надежней. Вот код (для 3х значных чисел), если кого интересует:
Код
mov ax, x mov d, 100 mov cx, 3 repeat: mov dl, d div dl