![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 12.02.2015
Сообщений: 2
|
![]()
К программе, которая работает с массивами, нужно прикрутить вставку на ассемблере, суммирующую значение каждого массива (svedArray[i].* - каждого по отдельности). С выводом полученных результатов (третий кейс).
Код:
Я в ассемблере ни в зуб ногой. Если кто может написать вставку и объяснить как она работает - буду очень благодарен. |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 30.07.2008
Сообщений: 1,609
|
![]() Код:
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
|
![]() |
![]() |
![]() |
#3 |
Участник клуба
Регистрация: 30.07.2008
Сообщений: 1,609
|
![]()
Есть 4 основных регистра центрального процессора EAX, EBX, ECX, EDX
Эти регистры являются 32 разрядными, то есть содержат 32 бита. Если в регистре происходит переполнение, то устанавливается флаг переполнения. Проверку на переполнение для упрощения я не делал. На ассемблере циклы создаются инструкциями перехода (jump). Безусловной инструкцией перехода является инструкция JMP. Кроме этого есть инструкции перехода по условию. Одной из инструкций перехода является JZ, которая переходит если получен ноль в регистре EAX. Помещение числа в регистр производится инструкцией MOV mov eax, 9 помещает 9 в регистр eax Для получения адреса переменной используется инструкция LEA В данном случае задан массив структур, поэтому нужно точно знать размер структуры. Переменная int имеет размер 4 байта Переменная float имеет размер 4 байта. Суммарный размер структуры sved - 20 байт. Для итерирования по структуре к адресу структуры добавляется 20. Это осуществляется инструкцией add ecx, [edx] Если итерирование заканчивается, то переход переход по меткам ex1, ex2, ex3 sub eax, 1 уменьшает на единицу значение в регистре eax add edx, 20 добавляет 20 к адресу Значения, которое хранится по адресу добавляется в регистр ecx add ecx, [edx] Квадратные скобки означают, что считывается не адрес, а то, что хранится по адресу. 1. Будем считать, что структуры в памяти хранятся последовательно. 2. Будем считать, что данные структуры в памяти хранятся последовательно Если 1 и 2 не исполняются, то вставка будет неправильной. Обращение к переменным структуры производится сдвигом по адресу. Считывание M производится сдвигом на ноль. Считывание T производится сдвигом на 4 // add edx, 4 Считывание Z производится сдвигом на 8 Считывание C производится сдвигом на 12 Считывание V производится сдвигом на 16 ECX во вставке является регистром накопления суммы. Поэтому сперва инструкцией mov ecx, 0 сумма устанавливается в ноль EDX регистр адреса в структуре EAX счетчик цикла Вставку можно упростить
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
|
![]() |
![]() |
![]() |
#4 |
Новичок
Джуниор
Регистрация: 12.02.2015
Сообщений: 2
|
![]()
challengerr, пожалуйста, напишите мне на почту asolex@bk.ru
Попробуем довести программку до ума. |
![]() |
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 30.07.2008
Сообщений: 1,609
|
![]()
написал по почте
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с массивами(assembler) | halfeffectsys | Помощь студентам | 2 | 19.12.2013 10:55 |
Работа с массивами (assembler) | gvay | Помощь студентам | 3 | 13.12.2008 18:20 |
Работа с массивами (assembler) | deni | Помощь студентам | 2 | 12.12.2008 10:28 |
Работа с массивами (assembler) | Gespenst | Помощь студентам | 1 | 21.04.2008 14:34 |