Transcript Приложение
Организация циклов в Ассемблере
Цикл
– это многократно повторяющаяся последовательность операторов
Типы циклов
«ПОКА» «ДО» «ДЛЯ»
Циклы в Паскале
Цикл «ПОКА» 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;
Цикл «ДЛЯ»
A:
For I := 1 to N do S
I: = 1;
S
;
тело цикла
I:=I+1; If (I < N) or (I = N) then Goto A;
Циклы в Ассемблере
Цикл «ПОКА» While X > 0 do S
A: CMP X , 0 A2: JLE A2
S;
тело цикла
JMP A …
Цикл «ДО» Repeat S until X > 0
A:
S;
тело цикла
CMP X , 0 JLE A
Цикл «ДЛЯ» For I := 1 to N do S
A: MOV CX , N
S;
тело цикла
DEC CX CMP X , 0 JNE A
Команда LOOP
Общий вид: LOOP <метка> Функции команды: Автоматически уменьшает значение счетчика.
Выполняет проверку на выход из цикла.
Выполняет переход на начало тела цикла.
Используется в случае цикла с известным числом повторений, т.е. цикла «ДЛЯ». Количество повторений цикла должно быть присвоено регистру СХ до начала цикла.
Цикл «ДЛЯ»
Без использования команды LOOP MOV CX , N A:
S;
тело цикла
DEC CX CMP X , 0 JNE A С использованием команды LOOP 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
Составить фрагмент программы на языке Ассемблер, вычисляющий значение 5 выражения: (результат записать в АХ).
x
1 Решение: …..
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 …..