Проверка трёх введённых чисел на кратность 7 - Assembler
Формулировка задачи:
Здравствуйте. Помогите пожалуйста сократить программу, направьте в нужное русло
Задание: являются ли три введённые числа кратными семи
Текст:
Пытаюсь сделать через цикл, но не получается. Не знаю как заменить итерации на переменные a,b,c
var o,l,g:byte; a,b,c:word; begin o:=0; writeln ('vvedite a'); readln (a); asm mov ax,a mov cl,7 div cl test ah,ah jnz @k mov o,1 @k: nop end; writeln ('o=',o); begin l:=0; writeln ('vvedite b'); readln (b); asm mov ax,b mov cl,7 div cl test ah,ah jnz @k mov l,1 @k:nop end; writeln ('l='l); end; begin g:=0; writeln ('vvedite c'); readln (c); asm mov ax,c mov cl,7 div cl test ah,ah jnz @k mov g,1 @k: nop end; writeln ('g='g); end; end.
Решение задачи: «Проверка трёх введённых чисел на кратность 7»
textual
Листинг программы
var a:array [0..2] of word; begin readln(a[0],a[1],a[2]); asm lea si,a mov bx,7 mov cx,3 @Cycle: lodsw xor dx,dx div bx cmp dx,0 mov ah,2 mov dl,'N' jnz @No mov dl,'Y' @No: int 21h mov dl,' ' int 21h loop @Cycle end; readln; end.
Объяснение кода листинга программы
- Объявление переменной
a
типаarray [0..2] of word
- Ввод трех чисел с помощью функции
readln(a[0],a[1],a[2])
- Начинается ассемблерный блок
- Переменная
si
ссылается на первый элемент массиваa
- Переменная
bx
содержит число 7 - Переменная
cx
содержит число 3 - Начинается цикл
Cycle
- Чтение двух байтов из массива
a
в регистрdx
- Регистр
dx
делится на число 7 - Если результат деления равен нулю, то выполняется блок кода до инструкции
jnz @No
- Если результат деления не равен нулю, то выполняется блок кода после инструкции
jnz @No
- Вывод символа 'N' или 'Y' с помощью функции
int 21h
- Вывод символа пробела с помощью функции
int 21h
- Цикл повторяется до тех пор, пока не будет выполнено условие
jnz @Cycle
- Код на ассемблере завершается
- Вывод символа 'N' или 'Y' с помощью функции
readln
- Код на языке Pascal завершается
- Программа завершается
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д