Вычисление по формуле - Assembler (223023)

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

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

Здравствуйте, я написал программу вычисления по формуле: Но дело в том, что программа всегда выводит 'Y=0' независимо от того, какие данные А и В я ввожу. Подскажите, пожалуйста, в какой строке кода обнуляется АХ. Вот, что я написал:
Листинг программы
  1. program sfgjafnh;
  2. var a,b:byte;
  3. y:word;
  4. begin
  5. writeln('vvedite A,B');
  6. readln(A,B);
  7. asm
  8. mov AL,A
  9. mov BL,7
  10. mul BL
  11. mov BL,B
  12. mul BL
  13. sub BX,AX
  14. mov AL,A
  15. mul AL
  16. shl AX,4
  17. xor DX,DX
  18. div BX
  19. mov Y,AX
  20. end;
  21. writeln('Y=' ,Y);
  22. readln;
  23. end.

Решение задачи: «Вычисление по формуле»

textual
Листинг программы
  1. mov AL,A ;al=A
  2. mov BL,7 ;bl=7
  3. mul BL ;ax=7*A
  4. mov BL,B ;bl=B
  5. mul BL ;ax=al*B  -  уже непонятно что
  6. sub BX,AX тут уже нет смысла читать - ведь ранее пошло не так
  7. mov AL,A
  8. mul AL
  9. shl AX,4
  10. xor DX,DX
  11. div BX
  12. mov Y,AX

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

  1. Значение переменной A копируется в регистр AL: mov AL, A.
  2. Значение переменной 7 копируется в регистр BL: mov BL, 7.
  3. Значение, находящееся в регистре BL, умножается на значение, находящееся в регистре AL, и результат сохраняется в регистре AX (расширенный регистр): mul BL.
  4. Значение переменной B копируется в регистр BL: mov BL, B.
  5. Значение, находящееся в регистре BL, умножается на значение, находящееся в регистре AX, и результат сохраняется в регистре AX: mul BL.
  6. Значение, находящееся в регистре AX, вычитается из значения, находящегося в регистре BX, и результат сохраняется в регистре BX: sub BX, AX.
  7. Значение переменной A копируется в регистр AL: mov AL, A.
  8. Значение, находящееся в регистре AL, умножается на само себя, и результат сохраняется в регистре AX: mul AL.
  9. Значение, находящееся в регистре AX, сдвигается влево на 4 бита: shl AX, 4.
  10. Регистр DX обнуляется: xor DX, DX.
  11. Значение, состоящее из соединения значений, находящихся в регистрах AX и DX, делится на значение переменной B, и результат сохраняется в регистре AX: div BX.
  12. Значение, находящееся в регистре AX, копируется в переменную Y: mov Y, AX.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

7   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут