Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2013, 16:01   #1
Jawner
Пользователь
 
Регистрация: 11.04.2012
Сообщений: 15
По умолчанию Факториал. Выбор индекса элемента

Доброго времени суток. Нужно написать программу на асемблере(встроенныом в с++ билдер), которая вычисляет факториал 7ого элемента массива. Программу написал, но не могу понять по каккому принципу выбирается элемент

mov eax,1
mov ecx,dword ptr a+4*6 <--
@M:
imul ecx
loop @M
mov x,eax

по какому принципу выбираются индексы массива? На сколько я понял, просто а - это 1ый элемент, а+4 - это второй, а+4*9 - 10ый. Что означает 4?
Jawner вне форума Ответить с цитированием
Старый 21.04.2013, 16:22   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,359
По умолчанию

У адресов побайтовая адресация (не работает адресная арифметика с++), а в массиве, скорее всего, 4-байтные числа.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 21.04.2013, 18:14   #3
Jawner
Пользователь
 
Регистрация: 11.04.2012
Сообщений: 15
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
У адресов побайтовая адресация (не работает адресная арифметика с++), а в массиве, скорее всего, 4-байтные числа.
А как это работает ? Первый элемент + 4, потом второй элемент +4 или как ?
Jawner вне форума Ответить с цитированием
Старый 21.04.2013, 19:13   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Jawner Посмотреть сообщение
А как это работает ? Первый элемент + 4, потом второй элемент +4 или как ?
точно так.
ну Вы же сами уже написали это в своём первом сообщении.
первый элемент берётся по нулевому смещению (по имени a находится начало массива), чтобы взять второй элемент, нужно к начальному смещению прибавить РАЗМЕР элемента. Очевидно, что размер у Вас составляет 4 байта, поэтому, чтобы получить индекс второго элемента нужно к смещению прибавить 4-ре (размер),
третьего элемента - к начальному смещению прибавить 8 ( 2 (количество элементов, которые надо пропустить)*4 (размер каждого элемента)) и т.д.

Последний раз редактировалось Serge_Bliznykov; 21.04.2013 в 19:15.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск индекса максимального элемента массива alexchromets Общие вопросы по Java, Java SE, Kotlin 2 06.03.2013 23:02
Получение индекса текущего элемента по OnSelectedIndexChanged для CheckBoxList varb ASP.NET 2 23.10.2011 22:24
Выбор элемента в DbLookupListBox Sina Общие вопросы Delphi 3 15.11.2010 15:17
Выбор однозначного индекса Vladymyr Microsoft Office Access 2 08.11.2010 18:31
выбор элемента ZET78 JavaScript, Ajax 1 18.08.2010 07:18