Поиск:

Ответ в темуСоздание новой темы Создание опроса
> нахождение среднего арифметического двух длинных 
:(
    Опции темы
Nortos
Дата 25.12.2010, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 17.11.2009

Репутация: нет
Всего: нет



Написать (используя операцию побитового сдвига*) нахождение среднего
арифметического двух длинных чисел:
unsigned int* avg(unsigned int* a, const unsigned int* b, int size);
a = (a + b) >> 1; size_a = size_b

 * сдвиг осуществляется операцией shr


Помогите решить, задача будет оплачена
PM MAIL   Вверх
Игорь1024
Дата 25.12.2010, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 151
Регистрация: 11.5.2009
Где: Дальний Восток

Репутация: нет
Всего: нет



Ничего себе я тогда написал...

Это сообщение отредактировал(а) Игорь1024 - 13.2.2011, 07:02
--------------------
The God is real,unless he is declared as integer.
PM MAIL   Вверх
vadimych
Дата 18.1.2011, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 16.1.2011

Репутация: нет
Всего: нет



Я думаю, ни одна команда из кода Игоря1024 работать не будет. Если unsigned int - это тип dword, то 
Код

mov eax,a
add eax,b
shr eax,1
 .


Это сообщение отредактировал(а) vadimych - 18.1.2011, 15:09
PM MAIL   Вверх
JAPH
Дата 18.1.2011, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 8.1.2007
Где: Ленобласть

Репутация: 1
Всего: 23



vadimych, там unsigned int* складываются ;)

Код

    push ebp
    mov  ebp, esp
    pusha
    mov  ecx, [ebp + 16] ; size
    mov  esi, [ebp + 12] ; second
    mov  edi, [ebp + 8] ; first
; считаем, что указатели указывают на младшие байты длинных целых
; далее решение о том, складывать побайтово или подвордово, должно приниматься на основании size
; что он означает? количество составляющих unsigned int? или количество байт?
; здесь предполагаем, что первый вариант
    clc
@1: lodsd
    adc  eax, [edi]
    stosd ; не хочу add edi, 4 из-за того, что надо сохранять флаги. в принципе, дело вкуса
    loop @1
    mov  ecx, [ebp + 16]
@2: pushf
    sub  edi, 4
    popf
    rcr  dword [edi], 1 ; shr обязательна? здесь rcr более удобна имхо
    loop @2
    popa
    mov  eax, [ebp + 8] ; return value
    leave
    ret


P.S. раскопали smile скоро месяц задаче

Это сообщение отредактировал(а) JAPH - 18.1.2011, 18:13


--------------------
Что непонятно - спрашиваем smile
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0656 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.