Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





В ассемблерном варианте программы цикл repeat-until может быть реализован при помощи операций сравнения и условных переходов. Проверка условия (в нашем случае текущего индекса массива) осуществляется после выполнения операторов тела цикла.
В листинге 3.7 представлен исходный текст программы на ассемблере.
Листинг 3.7. Фрагмент кода на ассемблере, в котором находится сумма первых четырех элементов массива
386
model flat, stdcall
data
XI DD 2, -23,
SXl DD $-Xl
IXl DD 1
CNT EQU 3
SUMX1 DD 0
. code
start:
push EBX
mov EBX, offset XI
mov EAX, 0
mov EDX, DWORD PTR
shr EDX, 2
cmp EDX, CNT
jl EXIT
NEXT:
add EAX, [EBX]
cmp DWORD PTR IXl,
jg EXIT
inc DWORD PTR IXl
add EBX, 4
jmp NEXT
EXIT:
mov DWORD PTR SUMX1, EAX
pop EBX
end start

Вначале инициализируем все необходимые переменные. Для доступа к элементам массива его адрес помещаем в регистр ЕВХ:
mov EBX, offset XI

Начальное значение суммы, равное о, помещаем в регистр ЕАХ:
mov ЕАХ, О

Условие ассемблерного цикла repeat-until проверяется командой:
cmp DWORD PTR IXl, CNT
где ixi — текущий индекс массива.

Поскольку целочисленное значение элемента массива занимает в памяти двойное слово, то, как и в предыдущем примере, для доступа к последующему элементу мы должны увеличивать значение адреса на 4:
add ЕВХ, 4
Результат помещается в переменную SUMXI ДЛЯ дальнейшего использования.

3.1.4. Цикл for
Оператор цикла for организует выполнение оператора или группы операторов определенное число раз.

В общем виде цикл можно представить так:
for(выражение-инициализатор; условие; выражение-модификатор)
<операторы>


 
 
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru