цикл в ассемблере.ppt
- Количество слайдов: 19
Организация циклов в Ассемблере
Цикл – это многократно повторяющаяся последовательность операторов
Типы циклов «ДО» «ПОКА» «ДЛЯ»
Циклы в Паскале
Цикл «ПОКА» 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 A 2 S; тело цикла JMP A A 2: …
Цикл «ДО» 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 <метка> Функции команды: l Автоматически уменьшает значение счетчика. l Выполняет проверку на выход из цикла. l Выполняет переход на начало тела цикла. Используется в случае цикла с известным числом повторений, т. е. цикла «ДЛЯ» . Количество повторений цикла должно быть присвоено регистру СХ до начала цикла.
Цикл «ДЛЯ» Без использования команды 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 100 h (4) start: jmp go (5) go: (6) mov ax, 0600 h (7) mov bh, 07 (8) mov cx, 0000 (9) mov dx, 184 fh (10) mov cx, 1000 (11) Zero: (12) mov ah, 02 (13) mov dl, 30 h (14) int 21 h (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; результат записать в АХ). Решение: F: …. . mov ax, 1 mov cx, К mul cx loop F …. .
цикл в ассемблере.ppt