Важная информация

User Tag List

Страница 7 из 32 ПерваяПервая ... 34567891011 ... ПоследняяПоследняя
Показано с 61 по 70 из 312

Тема: Вычисление числа Пи на ассемблере

  1. #61
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,851
    Спасибо Благодарностей отдано 
    84
    Спасибо Благодарностей получено 
    235
    Поблагодарили
    171 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот из вышеупомянутой книги, как ни странно - работает
    Код:
    DIV32:	MOV A,B ; DE = HLDE/BC, HL = HLDE%BC
    	CMA
    	MOV B,A
    	MOV A,C
    	CMA
    	MOV C,A
    	INX B
    	XRA A
    DIV321:	DAD H
    	RAR
    	XCHG
    	DAD H
    	XCHG
    	JNC $+4
    	INX H
    	PUSH H
    	DAD B
    	JNC DIV322
    	RAL
    DIV323:	INX D
    	INX SP
    	INX SP
    	ADI 10h
    	JNC DIV321
    	RET
    DIV322:	RAL
    	JC DIV323
    	POP H
    	ADI 10h
    	JNC DIV321
    	RET

  2. Этот пользователь поблагодарил b2m за это полезное сообщение:

    Denn (18.02.2021)

  3. #61
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  4. #62
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,863
    Спасибо Благодарностей отдано 
    658
    Спасибо Благодарностей получено 
    1,854
    Поблагодарили
    1,059 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    INX SP INX SP
    Подобные вещи и в pirk катят, но убрал, чтобы работало и при разрешенных прерываниях (там где они есть).

    - - - Добавлено - - -

    Это я к тому, что желательно этот фрагмент потом заменить

    - - - Добавлено - - -

    Цитата Сообщение от ivagor Посмотреть сообщение
    желательно этот фрагмент потом заменить
    Пардон, здесь проблем не будет (у меня несколько другая ситуация была).

  5. #63
    Guru Аватар для Vslav
    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    755
    Поблагодарили
    353 сообщений
    Mentioned
    86 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    У меня пока нет оснований не доверять тому архиву, т.ч. с 45000 я не согласен.
    Я тоже не согласен с 45000
    Взял Пи вот тут
    и сравнил с вычисленным по 4-цифровому шпигату (по ссылке что давал litwr и в моем листинге), оно навернулось на 16278 цифре - начиная с нее не совпадает с эталонными цифрами. То есть, найденная мной ошибка - там не единственная.

    Update:
    там банальное целочисленное переполнение происходит, то есть - не совсем ошибка, просто неприменимость в данных условиях. Поменял типы на 64-битные - доехало до 50К, потом опять ERROR

    Update2:
    Правильная последовательность с 54920-ой цифры:
    61527146690058147000026330
    Вычисленная по 4-цифровому шпигату (с int64):
    61527146690058146000026330
    То есть - перенос 10000 не отработал, ошибка в наличии.
    Последний раз редактировалось Vslav; 09.11.2015 в 18:50.

  6. #64
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,863
    Спасибо Благодарностей отдано 
    658
    Спасибо Благодарностей получено 
    1,854
    Поблагодарили
    1,059 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    Взял Пи вот тут
    Скопировал оттуда, сравнил с ранее полученным результатом
    Цитата Сообщение от ivagor Посмотреть сообщение
    правильно считает до 54932 знака включительно
    - эти самые 54932 знака совпали

  7. #65
    Guru Аватар для Vslav
    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    755
    Поблагодарили
    353 сообщений
    Mentioned
    86 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    - эти самые 54932 знака совпали
    Да, а потом встречается перенос за четыре десятичных разряда и он игнорится, на 57936-ой позиции имеем липовую цифру 6 вместо верной 7, я заслужил с полки пирожок

  8. #66
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,851
    Спасибо Благодарностей отдано 
    84
    Спасибо Благодарностей получено 
    235
    Поблагодарили
    171 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Нехватает однако 16*16=32 и 32/16=16. Наткнулся на итерацию, в которой после деления 17 бит получается, дальше можно не проверять. Нужны нормальные 32-битные процедуры, но тут регистров уже не хватит. Да и на первый взгляд, медленновато пока получается (пусть даже и неверный результат). Точно не засекал, но даже на глаз - медленнее. Так что первый шпигат - для восьмибиток пока лучше.

  9. #67
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,863
    Спасибо Благодарностей отдано 
    658
    Спасибо Благодарностей получено 
    1,854
    Поблагодарили
    1,059 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я так понимаю, что нужна процедура переваривающая 32 битные: делимое, делитель и частное. Остаток м.б. 16 битным

  10. #68
    Master
    Регистрация
    16.12.2014
    Адрес
    г. Ожерелье
    Сообщений
    743
    Спасибо Благодарностей отдано 
    223
    Спасибо Благодарностей получено 
    40
    Поблагодарили
    39 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Cделал код для 6502. На Коммодоре+4 800 знаков отсчитало за 6 мин 32 сек. Там по cсылке есть указания на алгоритм, по которому миллиарды знаков отсчитал некто Чудновский, с 32-разрядными базовыми константами. Но кода не искал, может где и есть в сети.

  11. #69
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,863
    Спасибо Благодарностей отдано 
    658
    Спасибо Благодарностей получено 
    1,854
    Поблагодарили
    1,059 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Для затравки процедура 32 битного деления для 8080 - div32vslow.zip
    Все 32битное - делитель, делимое, частное и остаток. Очень медленно. Единственный плюс - легко масштабировать хоть до 256 бит.

  12. #70
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,851
    Спасибо Благодарностей отдано 
    84
    Спасибо Благодарностей получено 
    235
    Поблагодарили
    171 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    С делением я разобрался, доделал до 32-битного частного и 16-битного остатка. Сделал так: если надо, деление будет выполнено дважды (для старших двух байт и для младших двух байт). Умножение оставил как есть, но сделал цикл сложением для старшего байта 24-битных чисел. Вобщем, пока считает 100 знаков за 12,5 сек.
    Последний раз редактировалось b2m; 10.11.2015 в 22:54.

Страница 7 из 32 ПерваяПервая ... 34567891011 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Арифметические процедуры на ассемблере
    от spensor в разделе Программирование
    Ответов: 27
    Последнее: 13.05.2017, 20:56
  2. Мнемокоманды и числа.
    от ALKO в разделе Программирование
    Ответов: 0
    Последнее: 15.02.2014, 03:49
  3. try-catch на ассемблере z80
    от siril в разделе Программирование
    Ответов: 22
    Последнее: 30.10.2012, 21:17
  4. Определение числа сторон
    от mungo в разделе Внешние накопители
    Ответов: 1
    Последнее: 16.03.2012, 18:06

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •