
X,y,z:integer;
begin
read(x,y);
asm
mov ах, х ; aх: =х
сmр ах, у ; х сравнивается с у
jge @xgey ;
mov ах, у ; ax: =y
@xgey: mov z, ах ; z:=ax
end;
writeln(‘max= ‘,z);
end.
------------------------
В этом примере xgey — метка с адресом перехода, если х >= у.
Задание. Написать программу на языке Паскаль с использованием Ассемблерной вставки для произведения вычислений.
Дано квадратное уравнение a*x*x +b*x +c=0. Определить есть ли у него действительные корни.
Если x попадает в интервал (3..7), увеличить его в два раза иначе, уменьшить в два раза.
Дано квадратное уравнение a*x*x +b*x +c=0. Определить сколько у него действительных корней.
Даны три отрезка. Надо выяснит, можно ли из них построить треугольник.
Даны три числа. Найти наибольшее из них.
Дано двузначное число. Необходимо определить различны ли в нем цифры.
Дано трехзначное число. Необходимо определить все ли цифры в нем различны.
Дано четыре отрезка. Необходимо определить можно ли построить из них четырехугольник.
Дано четыре отрезка. Необходимо определить можно ли построить из них прямоугольный четырехугольник.
Дано три отрезка. Необходимо определить можно ли из них построить прямоугольный треугольник.
Даны три числа. Необходимо отсортировать их по возрастанию.
Лабораторная работа №3.
3. Организация циклов.
Для организации циклов с известным числом повторений используется команда loop или ее модификации. Область действия команды и ее модификаций такая же, как у команд условного перехода (-128..127).
Циклический участок программы обычно имеет следующую структуру:
mov сx, число повторений { Инициализация цикла}
jcxz метка_после_цикла
метка:
{тело цикла}
loop метка
метка_после_цикла :
Команда jcxz означает переход при сх=0, т.е. цикл не нужно выполнять ни разу. Напоминаем, что по команде loop содержимое сх уменьшается на 1 и, если сх<>0, то переход к метке, заданной в команде loop, в противном случае — выход из цикла.
Если выход из цикла определяется не только числом повторений, вместо команды loop можно использовать ее разновидности
{ loope } повтор цикла, если счетчик не исчерпан и флаг
{ loopz } нуля установлен
{ loopne } повтор цикла, если счетчик не исчерпан и флаг
{ loopnz } нуля не установлен
ПРИМЕР: Найти сумму S=1+2+3+4+…+n.
var
s,n:integer;
begin
read(n);
asm
mov cx,n
mov ax,0
jcxz @end
@for:
add ax,cx
loop @for
@end: mov s,ax
end;
writeln('s=',s);
readln;
readln;
end.
Та же программа с использованием для организации цикла «прыжков».
var
s,n:integer;
begin
read(n);
asm
mov cx,n
mov ax,0
@for: jcxz @end
add ax,cx
dec cx
jmp @for
@end: mov s,ax
end;
writeln('s=',s);
readln;
readln;
end.
Пример2. 1. Дано натуральное n. Написать программу вычисления x в степени n.
var