![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] реализовать вычисление массива: |S(Ai + Bi)| * X + X^2 , i = 0...3 |
|
C/C++ - [решено] реализовать вычисление массива: |S(Ai + Bi)| * X + X^2 , i = 0...3
|
Ветеран Сообщения: 876 |
Всем привет, есть задание реализовать вычисление массива: |S(Ai + Bi)| * X + X^2 , i = 0...3
У меня есть решение, объясните пожалуйста часть кода. |
|
------- Отправлено: 19:49, 09-05-2011 |
Ветеран Сообщения: 876
|
Профиль | Отправить PM | Цитировать Цитата Beyound:
можно выкинуть. Цитата Beyound:
![]() Beyound огромное спасибо, немного помог мне, до меня что то доходить начало. Был бы очень рад если бы дальше мне помог ![]() Цитата Beyound:
cycle_i: \\ : поставили метку начала цикла MOV eax,a[esi] \\адрес первого элемента массива а MOV edx,b[esi] \\адрес первого элемента массива b ADD esi,4 \\следующий элемент с шагом 4 (т.к. регистр esi имеет размер 4 байта) ADD sum, eax \\ прибаляем к sum содержимое eax ADD sum, edx \\ прибавляем к sum содержимое edx INC ecx \\ увиличение ecx на 1 CMP ecx, 3 \\ проверяет равен ли ecx 3 JB cycle_i \\если ecx < 3 то перейти в начало цикла |
|||
------- Отправлено: 20:45, 10-05-2011 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 154
|
Профиль | Отправить PM | Цитировать у тебя есть пару недочетов
1. CMP ecx, 3 \\ сравниваем ecx 3, итог сравнения эта коменда нам не показывает а хранит его в регистре 2. JB cycle_i \\ команда раскладывается так J - "если сравнение выдало результат" B (bigger) "больше" то переходм по ссылке cycle_i 3.ADD esi,4 \\прибавляем к текущему значению региста esi число 4. 4 потому что все считается в байтах, а нам нужно сместиться на int который занимает 4 байта (32 бита) - это стандартно. |
Отправлено: 21:13, 10-05-2011 | #12 |
Ветеран Сообщения: 876
|
Профиль | Отправить PM | Цитировать Beyound, а вот моё задание: |S(Ai)*X+S(Bi)*Y|
Правильно ли я его сделал? |
------- Отправлено: 21:23, 10-05-2011 | #13 |
Старожил Сообщения: 154
|
Профиль | Отправить PM | Цитировать если чесно я немного непонимаю как тут операция с массивом идет, не хватает впереди выражения математического знака... или даже двух) вполне возможно что твой вариант верен) по крайней мере ошибок в нем нет
|
Последний раз редактировалось Beyound, 10-05-2011 в 21:48. Отправлено: 21:37, 10-05-2011 | #14 |
Ветеран Сообщения: 876
|
Профиль | Отправить PM | Цитировать Цитата Beyound:
![]() int sum1=0; int sum2=0; ___asm { mov esi,0 mov ecx,0 cycle_A: MOV eax,A[esi] ADD esi,4 ADD sum1,eax INC ecx CMP ecx,3 JB cycle_A MOV eax,sum1 MOV ecx,X iMUL ecx MOV sum1,eax mov esi,0 mov ecx,0 cycle_B: MOV eax,B[esi] ADD esi,4 ADD sum2,eax INC ecx CMP ecx,3 JB cycle_B MOV eax,sum2 MOV ecx,Y iMUL ecx ADD sum1,eax modul: NEG sum1 JS modul } Цитата Beyound:
![]() Объясни пожалуйста а когда я закончил асемблерную вставку и пишу return к чему возврат мне надо указывать? к переменной в которой содержится ответ? |
||
------- Отправлено: 21:56, 10-05-2011 | #15 |
Старожил Сообщения: 154
|
Профиль | Отправить PM | Цитировать ага
|
Отправлено: 22:10, 10-05-2011 | #16 |
Ветеран Сообщения: 876
|
Профиль | Отправить PM | Цитировать щас проверил и всё замечательно работает! Огромное спасибо!
|
------- Отправлено: 22:20, 10-05-2011 | #17 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] кто поможет реализовать такое? | Cherterok | Вебмастеру | 3 | 02-03-2011 10:36 | |
[решено] Как реализовать в скрипте возможность автозаполнения | evg64 | AutoIt | 5 | 03-10-2009 20:07 | |
[решено] Как реализовать. VistaMizer интегрированная в дистрибутив | K.A.V. | Автоматическая установка Windows 2000/XP/2003 | 5 | 30-09-2009 00:15 | |
[решено] P5K/EPU + RAID как реализовать? | svchost | Материнские платы и память | 4 | 20-10-2008 16:35 | |
вычисление даты | lastdruid | Общий по Linux | 1 | 03-03-2007 16:14 |
|