Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КОНСПЕКТ ЛЕКЦИЙ ПО АССЕМБЛЕРУ.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
471.55 Кб
Скачать

Команды управления циклами команда цикла loop

Loop met

┌─────┐

│CX:=n│

└──┬──┘

┌──────>х met:

│ ┌──┴──┐

│ │тело │

│ │цикла│

│ └──┬──┘

│ ┌────┴────┐

│ │CX:=CX-1 │

│ └────┬────┘

│ нет / ^\ да

└────/CX=0\────┐

\ / │

\/ │

v

Команда Loop не проверяет и не изменяет значения флагов, она только уменьшает регистр СХ на единицу и сравнивает последний с нулём.

Пример: подсчитать сумму элементов массива.

x db 10 dup(?)

n dw ?

s dw 0

sub al,al

lea bx,x

mov cx,n

m:

add al,[bx]

inc bx

loop m

mov s,al

Команды переходов loopz, loope

Мнемоники различны, но команда одна и та же:

Loopz met ( Loope met)

┌──────────────┤ MET:

│ ┌──────┴──────┐

│ │тело цикла с │

│ │формированием│

│ │ ZF │

│ └──────┬──────┘

│ ┌──────┴──────┐

│ │ CX := CX-1 │

│ └──────┬──────┘

│ / \ да

│ /ZF=1 \──────────┐

│ \ / │

│ \/ │

│ │ │

│ нет / \ да │

└───────────/CX=0 \─────┬────┘

\ / │

\/ v

Команда имеет дополнительный выход из цикла, по значению ZF=1.

В массиве Х определить первый элемент, значение которого = 5.

X DW 10 DUP (?)

N DW ?

NOM DW ?

;----------------------------

X ┌─────┬─────┬─────┬───────────┬─────┐

│X1=-1│ X2=2│ X3=5│ ......... │ Xn │

└──┴──┴──┴──┴──┴──┴───────────┴──┴──┘

Просмотр массива будет завершен после определения X3 = 5

mov cx,n

mov si,-2

met:

inc si

inc si

cmp [si],5

loopz met

jnz m1 ;в массиве нет элементов равных 5

;SI := (nom-1)*size(x)

;nom:= SI/2 +1

;после выхода из цикла

;SI указывает на исходный элемент

shr si,1

inc si

mov nom,si

jmp kon

m1: ;выдача сообщения 'в массиве нет элементов, равных 5'

КОМАНДЫ ПЕРЕХОДОВ LOOPNZ, LOOPNE содержат дополнительный выход из цикла при ZF=0. С помощью этой команды можно найти первый элемент массива, который <> заданному.

Команд цикла, которые проверяют условия >= и <= нет, для этого случая требуется самостоятельно организовывать доп. выход из тела цикла.