Проверка трёх введённых чисел на кратность 7 - Assembler

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Помогите пожалуйста сократить программу, направьте в нужное русло Задание: являются ли три введённые числа кратными семи Текст:
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.
Пытаюсь сделать через цикл, но не получается. Не знаю как заменить итерации на переменные a,b,c

Решение задачи: «Проверка трёх введённых чисел на кратность 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.

Объяснение кода листинга программы

  1. Объявление переменной a типа array [0..2] of word
  2. Ввод трех чисел с помощью функции readln(a[0],a[1],a[2])
  3. Начинается ассемблерный блок
  4. Переменная si ссылается на первый элемент массива a
  5. Переменная bx содержит число 7
  6. Переменная cx содержит число 3
  7. Начинается цикл Cycle
  8. Чтение двух байтов из массива a в регистр dx
  9. Регистр dx делится на число 7
  10. Если результат деления равен нулю, то выполняется блок кода до инструкции jnz @No
  11. Если результат деления не равен нулю, то выполняется блок кода после инструкции jnz @No
  12. Вывод символа 'N' или 'Y' с помощью функции int 21h
  13. Вывод символа пробела с помощью функции int 21h
  14. Цикл повторяется до тех пор, пока не будет выполнено условие jnz @Cycle
  15. Код на ассемблере завершается
  16. Вывод символа 'N' или 'Y' с помощью функции readln
  17. Код на языке Pascal завершается
  18. Программа завершается

Оцени полезность:

7   голосов , оценка 3.714 из 5
Похожие ответы