Протабулировать функцию с заданным шагом - Assembler
Формулировка задачи:
. Протабулировать функцию у = а(х+b) а=3; b=1; 1 < x < 10; Шаг изменения x=1
Решение задачи: «Протабулировать функцию с заданным шагом»
textual
Листинг программы
.model flat .data a db 3 b db 1 y db ? ; у = а*(х+b), 1 < x < 10 -> 3*(2+1) = 9 <= y <= 30 = 3*(9+1) -> байта для y хватит .code public main main proc ;1 < x < 10 (Шаг изменения al=x=1) mov ecx, 8 l: mov al, cl neg al add al, 10 ;у = а*(х+b) add al, b cbw ; (число теперь в ax) mul a mov y, al ; отбросили старший байт, т.к. мы знаем, что он нулевой loop l quit: xor ax, ax ret main endp end
Объяснение кода листинга программы
- Объявлены переменные a, b, y (см. комментарии в коде).
- Переменная a равна 3.
- Переменная b равна 1.
- Переменная y не определена на старте (отображается как ?).
- Шаг изменения переменной al равен 1.
- Переменная cl равна 8.
- В цикле от 1 до 8 (включительно) переменная al принимает значения от 1 до 8.
- На каждой итерации цикла к переменной al добавляется значение переменной b.
- Результат каждой итерации цикла (без старшего байта) сохраняется в переменной y.
- Старший байт результата отбрасывается, так как он всегда равен 0.
- После завершения цикла программа завершается.
- Переменная ax обнуляется.
- Возврат в вызывающую программу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д