Форум программистов, компьютерный форум, киберфорум
Assembler: MASM64, х64/long mode
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
3 / 3 / 0
Регистрация: 17.11.2015
Сообщений: 31
1

Несколько готовых процедур для программирования в 64 bit Windows

10.07.2016, 02:15. Показов 2338. Ответов 4

Author24 — интернет-сервис помощи студентам
Поделюсь с миром несколькими процедурами на Ассемблере под win 64bit.
Большими проектами не занимаюсь, а так на досуге бывает, когда есть вдохновение, что нибудь да попишу.

Синтаксис Fasm.
Итак первая:
Процедура конвертирует число в строку (64 бит версия)
Входы:
rax - число которое нужно сконвертировать.
rdi – адрес строки куда записывать конвертируемое число.
Максимальное входное число, переданное через регистр rax в процедуру равно: 18446744073709551615 (64bit).
Длина строки на которую показывает регистр rdi может быть не более 21 байт (20 это максимальное число + 1 символ для конца строки ‘0’).
Процедура использует стёк (для наибольшего входного числа, может быть до 20 последовательных записей. Но потом, в ней же он и восстанавливается).
Процедура может быть полезна если нужно к примеру отобразить содержимое какого либо регистра в API функции MessageBox.

Кликните здесь для просмотра всего текста

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
proc IntToStr
mov rcx,0
mov rbx,10
dividei:
mov rdx,0
div rbx
add rdx,'0'
push rdx
inc rcx
cmp rax,0
jnz dividei
 
reverse:
pop rax
mov [rdi],al
add rdi,1
dec rcx
cmp rcx,0
jnz reverse
mov byte [rdi],0
ret
endp


Завтра еще выложу парочку.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.07.2016, 02:15
Ответы с готовыми решениями:

Критические отличия работы ядра Windows 7 64-bit и Windows 10 64-bit или их ошибки
Здравствуйте! Помогите пж Года два назад купил ПК с установленной на нем Windows 10 64-bit...

Сохранение драйверов после смены windows xp sp3 32 bit на windows SL 8 64 bit
Здравствуйте! Если на диск C где стояла windows xp sp3 32bit поставить windows SL 8 64bit при этом...

Как залить треугольник без использования готовых процедур?
Uses crt,graph; var driver,mode,x1,x2,x3,y1,y2,y3,x,y:integer; P:real; Begin clrscr;...

Обясните мне, если Windows 32 bit, процессор 64 bit, то работает ли 2-ое ядро?
Обясните мне, если ОС Windows 32 bit, процессор 64 bit, все программы установлены разумеется 32...

4
1624 / 806 / 146
Регистрация: 13.06.2015
Сообщений: 3,266
10.07.2016, 02:41 2
Не всё так просто в этой жизни. Число 18446744073709551615, да и вообще любое число, большее 32бит*10 ты командой div на 10 не поделишь.
1
3 / 3 / 0
Регистрация: 17.11.2015
Сообщений: 31
10.07.2016, 03:03  [ТС] 3
Почему интересно? И кстати процедура правильно работает и с 64 битным числом.
0
1624 / 806 / 146
Регистрация: 13.06.2015
Сообщений: 3,266
10.07.2016, 04:01 4
Потому что результат деления не влезет в 32 бита и ЦП выдаст исключение DIV0.
Я тоже лет 10 назад, когда только узнал про ассемблер, думал, что всё так просто, и сейчас я понаделаю за пару часов своих универсальных библиотек ввода-вывода, до которых до меня почему-то никто не догадался.

Добавлено через 5 минут
А, тут на самом деле 128-битное число делится. Ну тогда влезет, наверное. Только этот алгоритм правда всем известен давно)

Добавлено через 9 минут
Так не интересно. Ты попробуй хотя бы 32-разрядное число, да ещё и со знаком, в RealMode вывести. Про FP вообще умолчу из скромности.
0
3 / 3 / 0
Регистрация: 17.11.2015
Сообщений: 31
10.07.2016, 13:21  [ТС] 5
Цитата Сообщение от Kukuxumushu Посмотреть сообщение
Ты попробуй хотя бы 32-разрядное число, да ещё и со знаком, в RealMode вывести.
Попробую как нибудь на досуге, если не забуду конечно
0
10.07.2016, 13:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.07.2016, 13:21
Помогаю со студенческими работами здесь

Ноут Aspire 5560G: не ставится Windows 7 64-bit, в отличие от 32-bit
На сайту Acer драйвера на 64-битную версию. Три диска втыкал "Windows 7 SP1 64-bit" сейчас. Два...

Как узнать какая у меня винда (Windows XP SP3 2008): 32 bit или 64 bit?
Как узнать какая у меня винда (Windows XP SP3 2008): 32 bit или 64 bit?

Несколько готовых программ на C#
Несколько готовых программ на C#, может кому понадобятся 1. Задание : Дана целочисленная...

Тормозит Windows 8.1 64-bit по сравнению с Windows 7 64-bit
Здравствуйте! Недавно поставил Windows 8.1 64-bit для того, чтобы можно было писать программы под...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru