Занести в BL наименьшее число из отрезка от 2 до K на которое не делится число N - Assembler
Формулировка задачи:
Занести в BL наименьшее число из отрезка от 2 до K на которое не делится число N, при условии что2k> N
Решение задачи: «Занести в BL наименьшее число из отрезка от 2 до K на которое не делится число N»
textual
Листинг программы
program PasAndAsm;
var
N, K: byte;
begin
repeat
Write('N: ');
readln(N);
Write('K:');
readln(K);
if not ((2 * K) > N) then
writeln('2K>N:', 2 * k, '>', n, ' Ne verno');
until 2 * K > N;
asm
MOV CL,1
@@For:
INC CL
MOV AL,N
MOV AH,0
DIV CL
CMP AH,0
JE @@For
MOV BL,CL
end;
end.
Объяснение кода листинга программы
- Объявление переменных:
N: переменная типа byteK: переменная типа byte
- Ввод значений переменных:
- Вывод на экран сообщения
N: - Считывание значения и сохранение в переменную
N - Вывод на экран сообщения
K: - Считывание значения и сохранение в переменную
K
- Вывод на экран сообщения
- Проверка условия:
- Повторять следующее до тех пор, пока 2 * K больше N:
- Если условие не выполняется, то выводится сообщение
2K>N:, значение 2 * K,>, значение N,Ne verno
- Если условие не выполняется, то выводится сообщение
- Повторять следующее до тех пор, пока 2 * K больше N:
- Начало вставки кода на языке Assembler:
- Перемещение значения 1 в регистр CL
- Цикл на языке Assembler:
- Метка цикла @@For
- Увеличение значения регистра CL на единицу
- Загрузка значения N в регистр AL
- Очистка регистра AH
- Деление AL на CL, результат сохраняется в AL, остаток в AH
- Сравнение значения в AH с 0
- Если остаток равен 0, переход к метке @@For
- Завершение вставки кода на языке Assembler:
- Перемещение значения из регистра CL в регистр BL
- Конец программы. Данный фрагмент кода предположительно решает задачу нахождения наименьшего числа из отрезка от 2 до K, на которое не делится число N, с использованием языка Assembler внутри программы на Pascal.