![]() |
|
![]() ![]() ![]() |
|
volnorez |
|
|||
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 22.9.2007 Репутация: нет Всего: нет |
Помогите пожалуйста с такой задачей. я уже просто не знаю что делать
![]() В двумерном массиве 4х4 найти сумму самых больших элементов в столбце. кто знает как это сделать если можна с коментариями |
|||
|
||||
THandle |
|
|||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 1 Всего: 372 |
volnorez, тебе надо на ассемблере??? Или же ты просто ошибся разделом и тебе уже написали на Делфи:
http://forum.vingrad.ru/forum/topic-231890...y1666092/0.html Или тебе и то и то требуется? |
|||
|
||||
volnorez |
|
|||
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 22.9.2007 Репутация: нет Всего: нет |
Мне на ассемблере а с Делфи я ошибся:(
|
|||
|
||||
Mikl_ |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: 8 Всего: 14 |
2) Для того что бы писать что-то на ассемблере требуется указать какой из ассемблеров требуется, а их более десятка (самые распространенные masm, fasm, nasm, tasm, yasm, a86, hla) и под какую операционную систему требуется написать задачу DOS, Windows (от 3.11 до Vista) Linux (и прочие -nix) ничего этого ты не пишешь, а я не экстрасенс ![]() 3) допустим, тебе требуется masm и com под DOS и массив состоит из беззнаковых целых чисел размером в байт (а мог состоять из целых чисел со знаком или из вещественных чисел или символов ASCII или Unicode и это были бы разные программы но раз ты об этом не пишешь значит и мне на это насрать)
![]() Это сообщение отредактировал(а) Mikl_ - 20.10.2008, 03:50 |
||||
|
|||||
volnorez |
|
|||
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 22.9.2007 Репутация: нет Всего: нет |
Спасибо тебе большое это то что надо!!!
![]() |
|||
|
||||
Kallikanzarid |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 240 Регистрация: 9.11.2008 Репутация: нет Всего: 3 |
ИМХО, если тебе нужна высокая производительность (а зачем еще нужен ассемблер?), то тут нужно применять бинарный поиск и раскручивание циклов. Можно и векторизацию, но не факт, что на таком маленьком массиве от этого будет большой выйгрыш.
Учитывая все это, я бы не советовал ассемблер - слижком много повторяющегося кода, легко сделать ошибку, которую потом хрен найдешь. С такой задачей лучше справится C/Fortran, если компилятор хороший. |
|||
|
||||
Mikl_ |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: 8 Всего: 14 |
Kallikanzarid, явно лабораторная работа из серии сдать и забыть -- ассемблер это не только скорость но и короткий код для поиска максимума/минимума можно и SSE-инструкции использовать
![]() |
|||
|
||||
Kallikanzarid |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 240 Регистрация: 9.11.2008 Репутация: нет Всего: 3 |
Понимаю, но не мог не поворчать про ущербность подхода
![]() |
|||
|
||||
Kallikanzarid |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 240 Регистрация: 9.11.2008 Репутация: нет Всего: 3 |
Сейчас посмотрел список инструкций SSE. Получается вообще здорово:
1) храним матрицу в формате фортрана (по столбцам) 2) 4 инструкции на занесение столбцов в xmm0-xmm3 3) 4 инструкции на вычисление максимумов 4) 3 (6?) инструкций на занесения результатов из xmm1, xmm2, xmm3 в xmm0 5) одна инструкция на суммирование 6) одна инструкция на извлечение результата Итого: 13-16 инструкций, никаких циклов ![]() |
|||
|
||||
volnorez |
|
|||
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 22.9.2007 Репутация: нет Всего: нет |
Это конечно все супер только я не знаю что такое инструкции SSE и так как нам надо делать лабы по конкретным данным (которые показаны в лабораторных) я не могу использовать такой метод. Да кстати та прога Mikl_ у меня как то не правельно работало и пришлось писать совершенно другую согласно лабораторной методичке и вот что у меня получилось (кстати с циклами) и тоже не большая.
|
|||
|
||||
Kallikanzarid |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 240 Регистрация: 9.11.2008 Репутация: нет Всего: 3 |
ИМХО, мелко берешь. Простое задание "для самых маленьких", а ты делаешь его по написанному. Настоящий опыт так ты не получишь.
|
|||
|
||||
volnorez |
|
|||
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 22.9.2007 Репутация: нет Всего: нет |
А есть еще какие то варианты написания?
Просто эта программа тоже работает не совсем правильно я там немного схитрил когда писал. |
|||
|
||||
Mikl_ |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: 8 Всего: 14 |
volnorez, что конкретно не правильно работало? судя по твоему листингу, требовалось
mas dw 65,48,79,5,25,6,113,17,77,34,35,57,14,90,65,79 поменять на mas db 65,48,79,5,25,6,113,17,77,34,35,57,14,90,65,79 размеры чисел это позволяют, у тебя ни одно число не больше 255
Это сообщение отредактировал(а) Mikl_ - 24.11.2008, 12:12 |
||||
|
|||||
volnorez |
|
|||
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 22.9.2007 Репутация: нет Всего: нет |
А конкретно оно считает не правильно. Результат выдает какойто странный. Mikl_ А ты можешь сказать что не так в моем листинге?
|
|||
|
||||
Mikl_ |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: 8 Всего: 14 |
volnorez, намудрил ты там, похоже, что находишь минимальный элемент jb q2 вместо jae q2 много лишних операций
![]() ![]() ![]() ![]()
Это сообщение отредактировал(а) Mikl_ - 25.11.2008, 10:05 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Asm для начинающих" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm для начинающих | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |