Протабулировать функцию в emu8086 - Assembler
Формулировка задачи:
Табулирование функции
— это вычисление значений функции при изменении аргумента от некоторого начального значения до некоторого конечного значения с определённым шагом. В общем нужно протабулировать на asm'е функцию которая указана на картинке Нужно чтобы работало в emu8086. На лабораторной работе мы делали что-то подобное, только там, по-моему, выводятся сразу только y и всё в одну строчку. Вот как мы делали (функция тут другая):name "Lab 2.2" INCLUDE 'emu8086.inc' ORG 100h LEA SI, msg2 CALL print_string .code f DW ? x DW ? y DW ? MOV AX, @data MOV x, 1 MOV y, 1 MOV f, 0 a1: MOV x, 1 IMUL x MOV BX, 3 XCHG AX, BX IMUL y ADD AX, BX SUB AX, 3 MOV CX, x XCHG CX, AX IMUL y MOV f, AX ; OUTPUT MOV AX, f CALL print_num PRINT ' '; ADD y, 2 ADD x, 4 CMP y, 20 JB a1 MOV AH, 0 INT 16h RET msg1 DB '', 0 msg2 DB 'Tabul funkzii ', 0 DEFINE_SCAN_NUM DEFINE_PRINT_STRING DEFINE_PRINT_NUM DEFINE_PRINT_NUM_UNS DEFINE_PTHIS END
#include <iostream> #include <Math> using namespace std; int main() { int y = 2; //любое значение cout << "x\tf" << endl; for(int x = 10; x >= 5; x--) cout << x << "\t" << (7 * pow(x, 2) - 3 * pow(y, 2) + y) << endl; system("PAUSE"); return 0; }
y
задаётся в программе программистом. Думаю, задача понятна.. За правильное решение заплачу 100 рублей на Webmoney кошелёк.Решение задачи: «Протабулировать функцию в emu8086»
textual
Листинг программы
name "for_vovka" include 'emu8086.inc' org 100h lea si, msg2 call print_string; .code x dw ? y dw ? f dw ? mov ax, @data mov dx, ax mov bx, ax mov cx, ax mov x, 10 mov y, 1 mov f, 0 a1: mov ax, x mul ax aam mov bx, 7 mul bx aam mov bx, ax ; bx = 7x^2 mov ax, y mul ax aam mov cx, 3 mul cx aam mov cx, ax ; cx = 3x^2 mov dx, y add dx, bx aaa add dx, cx aaa ; dx = f() mov f, dx ; printn ' ' mov ax, x call print_num lea si, msg1 call print_string mov ax, y call print_num call print_string mov ax, f call print_num ; sub x, 1 aas cmp x, 5 jge a1 ; mov ah, 0 int 16h ret; msg1 db ' ', 0 msg2 db 'x y f', 0 ; DEFINE_SCAN_NUM DEFINE_PRINT_STRING DEFINE_PRINT_NUM DEFINE_PRINT_NUM_UNS DEFINE_PTHIS END
Объяснение кода листинга программы
Вот что получилось:
- Переменные: — x — счётчик, используется в основном цикле — y — переменная для хранения результата вычисления — f — переменная для хранения результата вычисления
- Выполняемые действия: — Вычисление значения f() — в этом коде оно вычисляется как (7x^2 + 3x^2 + 3) — Вывод на экран значений переменных x, y, f — Уменьшение значения переменной x на единицу — Проверка значения переменной x: если оно равно 5, то выполнение программы завершается — Вывод на экран сообщения об ошибке (если таковая произошла) Этот код выполняет следующие действия:
- Задаёт начальное значение для переменных x, y, f.
- Переходит к основному циклу.
- Вычисляет значение f() — оно равно (7x^2 + 3x^2 + 3).
- Выводит на экран значения переменных x, y, f.
- Уменьшает значение переменной x на единицу.
- Проверяет значение переменной x: если оно равно 5, то выполнение программы завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д