Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Справочник по Ассемблеру гр.32.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
158.72 Кб
Скачать

Сумма первых 10 четных чисел

var s:integer;

begin

asm

mov cx,10

записываем в регистр cx количество повторений

mov dx,1

записываем в регистр dx счетчик повторений

mov ax,2

записываем в регистр ax первое значение ряда

mov bx,0

записываем в регистр bx начальную сумму

@1: add bx,ax

bx+ax

add ax,2

ax+2

add dx,1

dx+1

cmp dx,cx

сравниваем число произведенных повторений с общим количеством повторений

jbe @1

dx <= cx

mov s,bx

записываем полученную сумму в s

end;

writeln(s);

end.

Циклы

Сумма первых 10 четных чисел

var a,c:integer;

begin

asm

MOV CX,10

записываем в регистр cx количество повторений

mov AX,2

записываем в регистр ax первое значение ряда

mov BX,0

записываем в регистр bx начальную сумму

@1: add BX,AX

bx+ax

add AX,2

ax+2

LOOP @1

оператор цикла (add dx,1; cmp dx,c)

MOV c,BX

записываем полученную сумму в c

end;

writeln(c);

end.

Найти количество чисел от а до 1, которые делятся на 3.

Var a,c:byte; (* Кол. Чисел от а до 1, дел на 3*)

begin read(a);

asm

MOV Cl,a (* В РЕГИСТР ЧИСЛО ПОВТОРЕНИЙ*)

mov ch,0 (чтобы делимое было в регистре СХ)

mov bl,3 (* В РЕГИСТР ДЕЛИТЕЛЬ*)

mov dx,1 (* В РЕГИСТР ПЕРВОЕ ЧИСЛО*)

mov bh,0 (* СЧЕТЧИК КОЛ ЧИСЕЛ*)

@1: mov ax,dx (* ЧИСЛО В РЕГИСТР ДЛЯ ДЕЛЕНИЯ*)

DIV bl (*деление*)

CMP Ah,0 (* СРАВНИВАЕМ ОСТАТОК с 0*)

JNE @2

add bh,1 (* ЕСЛИ ДЕЛИТСЯ, ТО ПЛЮС 1*)

@2: add dx,1 (* ВТОРОЕ ЧИСЛО - ПЕРВОЕ +1*)

LOOP @1 (* КОНЕЦ ЦИКЛА*)

MOV c,bh (* ИЗ РЕГИСТРА РЕЗ В ПЕРЕМЕННУЮ*)

end;

writeln(c);end.

Можно использовать для а тип word, то тогда надо, чтобы результат был не больше 255.