Протабулировать функцию с заданным шагом - Assembler

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

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

. Протабулировать функцию у = а(х+b) а=3; b=1; 1 < x < 10; Шаг изменения x=1

Решение задачи: «Протабулировать функцию с заданным шагом»

textual
Листинг программы
  1.     .model flat
  2.     .data
  3. a   db 3
  4. b   db 1
  5. y   db ? ; у = а*(х+b), 1 < x < 10 ->  3*(2+1) = 9 <= y <= 30 = 3*(9+1) -> байта для y хватит
  6.     .code
  7. public main
  8. main proc
  9.     ;1 < x < 10 (Шаг изменения al=x=1)
  10.     mov ecx, 8
  11. l:  mov al, cl
  12.     neg al
  13.     add al, 10
  14.    
  15.     = а*(х+b)
  16.     add al, b
  17.     cbw  ; (число теперь в ax) 
  18.     mul a
  19.  
  20.     mov y, al ; отбросили старший байт, т.к. мы знаем, что он нулевой  
  21.     loop l
  22. quit:
  23.     xor ax, ax
  24.     ret
  25. main endp
  26. end

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

  1. Объявлены переменные a, b, y (см. комментарии в коде).
  2. Переменная a равна 3.
  3. Переменная b равна 1.
  4. Переменная y не определена на старте (отображается как ?).
  5. Шаг изменения переменной al равен 1.
  6. Переменная cl равна 8.
  7. В цикле от 1 до 8 (включительно) переменная al принимает значения от 1 до 8.
  8. На каждой итерации цикла к переменной al добавляется значение переменной b.
  9. Результат каждой итерации цикла (без старшего байта) сохраняется в переменной y.
  10. Старший байт результата отбрасывается, так как он всегда равен 0.
  11. После завершения цикла программа завершается.
  12. Переменная ax обнуляется.
  13. Возврат в вызывающую программу.

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


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

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

12   голосов , оценка 4.25 из 5

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

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

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