Условие: x=2*b-1+4*(a-3*c): не могу найти ошибку - Assembler
Формулировка задачи:
условие: x=2*b-1+4*(a-3*c) Выводит какой-то непонятный результат, причём при любых переменных
кто-нибудь откликнетесь...
Решение задачи: «Условие: x=2*b-1+4*(a-3*c): не могу найти ошибку»
textual
Листинг программы
data segment str1 dw " vvedite chislo A $",0 str2 dw " vvedite chislo B $",0 str3 dw " vvedite chislo C $",0 a dw ? b dw ? c dw ? x dw ? ends stack segment dw 256 dup(0) ends code segment include "emu8086.inc" start: mov ax, data mov ds, ax mov es, ax print "x=2*b-1+4*(a-3*c)" printn " " lea dx, str2 mov ah, 9 int 21h call scan_num sal cx, 1 sub cx, 1 mov b, cx printn " " lea dx, str3 mov ah, 9 int 21h call scan_num mov c, cx sal cx, 1 add cx, c mov c, cx printn " " lea dx, str1 mov ah, 9 int 21h call scan_num mov ax, c sub cx, ax sal cx, 2 mov a, cx printn " " print "Otvet : " mov ax, b mov bx, a add ax, bx mov x, ax js gon call print_num_uns jmp tor gon: print "-" neg x call print_num_uns tor: mov ax, 4c00h ; exit to operating system. int 21h ends define_scan_num define_print_num_uns end start ; set entry point and stop the assembler.
Объяснение кода листинга программы
Список действий в коде:
- Загрузить сегменты данных и стека.
- Вывести на экран формулу расчета x.
- Прочитать значение переменной b с помощью функции scan_num и добавить его в конец строки.
- Прочитать значение переменной c с помощью функции scan_num и добавить его в конец строки.
- Прочитать значение переменной a с помощью функции scan_num и добавить его в конец строки.
- Вычислить значение выражения 2b-1+4(a-3*c) и сохранить его в переменной x.
- Если результат вычисления отрицательный, то вывести на экран знак
-
и отрицательное значение выражения. - Вывести на экран значение переменной x с помощью функции print_num_uns.
- Выполнить выход из программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д