![]() |
|
|
![]()
|
|
| champion |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 26.1.2005 Репутация: нет Всего: 2 |
Помогите пожалуйста решить задачи используя Assembler (Tasm). В большей части логику, т.к. остальное уж совсем просто.
Это сообщение отредактировал(а) champion - 7.4.2008, 09:59 |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 1 Всего: 207 |
процессор 32-х битный?
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| champion |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 26.1.2005 Репутация: нет Всего: 2 |
Да.
|
|||
|
||||
| anwe |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 8 Всего: 23 |
1. Логика проста: умножаешь, как на бумаге - в столбик. Получается, первое число умножаешь на каждую цифру второго и складываются полученные результаты. Только эти промежуточне результаты надо прописывать в соответсвующих смещенных разрядах влево, а сложение проводить с учетом флага переноса. В общем, как на бумаге:
2. То же как на бумаге при сложении в столбик. Надо учитывать флаг переноса:
3. Это что ли 256 бит *2^256? Так только для 2^256 никакой памяти не хватит. |
||||
|
|||||
| champion |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 26.1.2005 Репутация: нет Всего: 2 |
Спасибо! В третьей умножение 256 битных чисел, а потом деление на 2^256, и записываем остаток. (деление по модулю)
|
|||
|
||||
| anwe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 8 Всего: 23 |
Деление самое сложное из сложения умножения и деления. Для деления числа любой разрядности на число любой разрядности используется алгоритм самой сути деления. Что такое деление (из математики)? - Вычитание до тех пор, пока не остаток не станет меньше делителя. На этом и основан этот алгоритм: вычитается делитель из делимого, сдвинутого влево на необходимое кол-во разрядов и увеличивается соответсвующий разряд результата. Пример для 64-х разрядов: делимое в edx:eax, делитель в ecx:ebx, результат в edx:eax, остаток в esi:edi.
Для другого числа принцип такой же. ТОЛЬКО! как будешь хранить свое 2^256???? Это же 2*10^67 двойных слов Используй FPU. Это сообщение отредактировал(а) anwe - 13.4.2008, 23:31 |
|||
|
||||
| champion |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 26.1.2005 Репутация: нет Всего: 2 |
А если выделить в памяти область для переменной в которой и будет хранится это число? Как переменную? Части числа записывать через запятую, как массив
X dd ffffffh,ffffffh,ffffffh,ffffffh,ffffffh,ffffffh,ffffffh,ffffffh |
|||
|
||||
| anwe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 8 Всего: 23 |
champion, я вчера был мягко казать не совсем трезвый, и выразился не верно. Для 2^256 конечно хватит 256 разрядов. Конечно, твоя запись верная, так и надо. Ну а алгоритм у тебя уже есть, только загоняешь результат перемножения двоек в соответствующее двойное слово в числе и все получишь.
|
|||
|
||||
![]()
|
| Правила форума "Asm для начинающих" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm для начинающих | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |