210 likes | 1.01k Views
Организация циклов в Ассемблере. Цикл – это многократно повторяющаяся последовательность операторов. Типы циклов. «ДО». «ПОКА». «ДЛЯ». Циклы в Паскале. Цикл «ПОКА». While X > 0 do S. A: If X > 0 then begin S ; тело цикла Goto A; end;. Цикл «ДО». Repeat S until X > 0.
E N D
Организация циклов в Ассемблере
Цикл – это многократно повторяющаяся последовательность операторов
Типы циклов «ДО» «ПОКА» «ДЛЯ»
Цикл «ПОКА» 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;
Цикл «ПОКА» While X > 0 do S A: CMP X , 0 JLE A2 S; тело цикла JMP A A2: …
Цикл «ДО» Repeat S until X > 0 A: S; тело цикла CMP X , 0 JLE A
Цикл «ДЛЯ» For I := 1 to N do S MOV CX , N A: S; тело цикла DEC CX CMP X , 0 JNE A
Команда LOOP Общий вид: LOOP <метка> Функции команды: • Автоматически уменьшает значение счетчика. • Выполняет проверку на выход из цикла. • Выполняет переход на начало тела цикла. Используется в случае цикла с известным числом повторений, т.е. цикла «ДЛЯ». Количество повторений цикла должно быть присвоено регистру СХ до начала цикла.
Цикл «ДЛЯ» Без использования команды LOOP С использованием команды LOOP MOV CX , N A: S; тело цикла DEC CX CMP X , 0 JNE A MOV CX , N A: S; тело цикла LOOP A
ПРИМЕР Составим программу, которая выводит на экран 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; результат записать в АХ). Решение: ….. movax, 1 movcx, К F: mul cx loop F …..