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

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 — метка с адресом перехода, если х >= у.

Задание. Написать программу на языке Паскаль с использованием Ассемблерной вставки для произведения вычислений.

  1. Дано квадратное уравнение a*x*x +b*x +c=0. Определить есть ли у него действительные корни.

  2. Если x попадает в интервал (3..7), увеличить его в два раза иначе, уменьшить в два раза.

  3. Дано квадратное уравнение a*x*x +b*x +c=0. Определить сколько у него действительных корней.

  4. Даны три отрезка. Надо выяснит, можно ли из них построить треугольник.

  5. Даны три числа. Найти наибольшее из них.

  6. Дано двузначное число. Необходимо определить различны ли в нем цифры.

  7. Дано трехзначное число. Необходимо определить все ли цифры в нем различны.

  8. Дано четыре отрезка. Необходимо определить можно ли построить из них четырехугольник.

  9. Дано четыре отрезка. Необходимо определить можно ли построить из них прямоугольный четырехугольник.

  10. Дано три отрезка. Необходимо определить можно ли из них построить прямоугольный треугольник.

  11. Даны три числа. Необходимо отсортировать их по возрастанию.

Лабораторная работа №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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]