![]() |
1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
![]() ![]() |
![]() |
CMOS |
![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 57 Пол: Мужской Репутация: ![]() ![]() ![]() |
Как в вывести числа в Ассемблере? Можно, конечно, взять число поделить на 10, к остатку прибавить 30h, затем частное снова поделить на 10 и т.д. Кстати, я на форуме видел что-то подобное. Но неужели мелкомягкие не предусмотрели для этого дела какой-нибудь функции?
|
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата(CMOS @ 20.05.2006 14:19) Как в вывести числа в Ассемблере? <...> Но неужели мелкомягкие не предусмотрели для этого дела какой-нибудь функции? Во-первых, при чем здесь ассемблер и "мелкомягкие"? Вместо того, чтоб возмущаться, лучше бы назвал компилятор, которым пользуешься. MASM? Существует ассемблер НЕ только от MicroSoft... Возьми, например, TASM (или FASM, или NASM), и попробуй на нем сделать что-то... |
CMOS |
![]()
Сообщение
#3
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 57 Пол: Мужской Репутация: ![]() ![]() ![]() |
Когда я вспоминал Майкрософтовцов я имел ввиду прерывания >21h.
Компилятор TAsm. |
FreeMan |
![]()
Сообщение
#4
|
- ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 480 Пол: Мужской Репутация: ![]() ![]() ![]() |
wsprintf вроде имя этой функции. туда передается указатель на выходной буфер, на формат. строку... там не только числа в строку можно превратить. вобщем МСДН!
-------------------- бб
|
CMOS |
![]()
Сообщение
#5
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 57 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
CRASH |
![]()
Сообщение
#6
|
Группа: Пользователи Сообщений: 1 Пол: Мужской Репутация: ![]() ![]() ![]() |
Как в вывести числа в Ассемблере? Можно, конечно, взять число поделить на 10, к остатку прибавить 30h, затем частное снова поделить на 10 и т.д. Кстати, я на форуме видел что-то подобное. Но неужели мелкомягкие не предусмотрели для этого дела какой-нибудь функции? А что тут сложного. Всё очень просто как 2x2. Напрмер, имеется значение в bl и переменная cnt - byte:
Думаю тут всё просто и понятно. Как в вывести числа в Ассемблере? Можно, конечно, взять число поделить на 10, к остатку прибавить 30h, затем частное снова поделить на 10 и т.д. Кстати, я на форуме видел что-то подобное. Но неужели мелкомягкие не предусмотрели для этого дела какой-нибудь функции? Забыл сказать: для простого вывода на монитор числа просто после помещения нужного значения в dl прибавляем к нему 30h (add dl, 30h). Ну сейчас похоже и всё ![]() |
CMOS |
![]()
Сообщение
#7
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 57 Пол: Мужской Репутация: ![]() ![]() ![]() |
Да пробовал я это раньше. Работает только с байтами. Для слов подогнать не смог.
Ладно, вспомним старую добрую математику. Так надежней. Вот код (для 3х значных чисел), если кого интересует: Код mov ax, x mov d, 100 mov cx, 3 repeat: mov dl, d div dl mov dl, al add dl, 30h mov al, ah mov ah, 0 push ax mov ah, 2 int 21h mov dl, 10 mov ah, 0 mov al, d div dl mov d, al pop ax loop repeat |
Malice |
![]()
Сообщение
#8
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
А вот вывод 16-ричных чисел, даже попроще:
Код mov eax,01234DEADh mov cl,8 @1: rol eax,4 push eax and al,0Fh cmp al,0Ah sbb al,69h das int 029h pop eax loop @1 |
FreeMan |
![]()
Сообщение
#9
|
- ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 480 Пол: Мужской Репутация: ![]() ![]() ![]() |
-------------------- бб
|
![]() ![]() |
![]() |
Текстовая версия | 8.09.2024 7:51 |