
- •Integer- -32768… 32767 2 байта со знаком
- •Работа с integer (word)
- •Условный переход
- •Сумма первых 10 четных чисел
- •Найти количество чисел от а до 1, которые делятся на 3.
- •Var a,c:byte; (* Кол. Чисел от а до 1, дел на 3*)
- •Можно использовать для а тип word, то тогда надо, чтобы результат был не больше 255.
Сумма первых 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.