Организация циклов в Ассемблере
Цикл – это многократно повторяющаяся последовательность операторов
Типы циклов «ПОКА» «ДО» «ДЛЯ»
Циклы в Паскале
Цикл «ПОКА» While X > 0 do S A:If X > 0 then begin S; тело цикла Goto A; end;
Цикл «ДО» Repeat S until X > 0 A:S; тело цикла If (X < 0) or (X = 0) then Goto A;
Цикл «ДЛЯ» For I := 1 to N do S I: = 1; A:S; тело цикла I:=I+1; If (I < N) or (I = N) then Goto A;
Циклы в Ассемблере
Цикл «ПОКА» A:CMP X, 0 JLE A2 S; тело цикла JMP A A2: … While X > 0 do S
Цикл «ДО» A:S; тело цикла CMP X, 0 JLE A Repeat S until X > 0
Цикл «ДЛЯ» MOV CX, N A:S; тело цикла DEC CX CMP X, 0 JNE A For I := 1 to N do S
Команда LOOP Общий вид: LOOP Функции команды: Автоматически уменьшает значение счетчика. Выполняет проверку на выход из цикла. Выполняет переход на начало тела цикла. Используется в случае цикла с известным числом повторений, т.е. цикла «ДЛЯ». Количество повторений цикла должно быть присвоено регистру СХ до начала цикла.
Цикл «ДЛЯ» MOV CX, N A:S; тело цикла DEC CX CMP X, 0 JNE A MOV CX, N A:S; тело цикла LOOP A Без использования команды LOOP С использованием команды LOOP
ПРИМЕР Составим программу, которая выводит на экран 1000 нулей
(1) prg segment para public 'code' (2) assume cs:prg,ss:prg,es:prg,ds:prg (3) org 100h (4) start: jmp go (5) go: (6) mov ax, 0600h (7) mov bh,07 (8) mov cx, 0000 (9) mov dx,184fh (10) mov cx,1000 (11) Zero: (12) mov ah,02 (13) mov dl,30h (14) int 21h (15) loop Zero (16) ret (17) prg ends (18) end start Решение:
Задачи для практики
Задача 1 Составить фрагмент программы на языке Ассемблер, подсчитывающий сумму первых 10 натуральных чисел (результат записать в АХ). Решение: ….. mov cx,10 mov ax,00 summa: add ax,cx loop summa …..
Задача 2 Составить фрагмент программы на языке Ассемблер, вычисляющий значение выражения: (результат записать в АХ). Решение: ….. mov BX,00 mov CX,05 sum: mov AX,02 mul CX add BX,AX loop sum …..
Задача 3 Составить фрагмент программы на языке Ассемблер, вычисляющий факториал заданного числа К (К – от 0 до 8; результат записать в АХ). Решение: ….. mov ax, 1 mov cx, К F: mul cx loop F …..