IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

> Массивы
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской
Реальное имя: Павел

Репутация: -  0  +


Приведите, пожалуйста, кому не лень самый простой пример использования одномерного массива. Я Assembler начал изучать 2 часа назад... sad.gif С адресацией-то все вроде ясно, а вот для чего используют, например @0, @1, @2 не понятно. Азы читал...
Например, вычислить SUM(A*X), где A:array[1..5] of integer; X:integer;
И если можно, с подробным комментарием
Заранее спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 1)
сообщение
Сообщение #2


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


program AsmArray;

var
a: array[1..5] of Integer;
x, Sum,
i: Integer;

begin
Randomize;
for i := 1 to 5 do
begin
a[i] := -9 + Random(20);
Write(a[i], ' ');
end;
Writeln;

x := 4;

asm
cld { df := 0, lodsw будет УВЕЛИЧИВАТЬ si }
xor dx,dx { dx := 0 }
lea si,a { si := @a[0] }
mov cx,5 { cx := 5, цикл на 5 интераций }
@@Add: { локальная (@@) метка }
lodsw { ax := слово по адресу ds:si - очередной эл-т массива, }
{ si := si + 2 (2 = SizeOf(Integer)) }
add dx,ax { dx := dx+ ax; }
loop @@Add { cx := cx - 1; if cx <> 0 then goto @@Add; }
mov ax,x { ax := x }
imul dx { dx:ax := ax * dx }
mov Sum,ax { Sum := ax }
end;

Writeln('Sum = ', Sum);
end.


Сообщение отредактировано: xds -


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 19.04.2024 6:51
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name