Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для 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(выражение-инициализатор; условие; выражение-модификатор)
<операторы>
<< Назад В начало Далее >> |
|