Приложение

Report
Организация
циклов
в Ассемблере
Цикл
– это многократно
повторяющаяся
последовательность
операторов
Типы циклов
«ДО»
«ПОКА»
«ДЛЯ»
Циклы
в
Паскале
Цикл «ПОКА»
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
Составить фрагмент программы на языке
Ассемблер, вычисляющий
значение
5
выражения:  2 x (результат записать в АХ).
x 1
Решение:
…..
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
…..

similar documents