Вычислить значение выражения

Низкоуровневое программирование портов, микроконтроллеров и т.д.

Модератор: Andy

Ответить
Anbore
Сообщения: 4
Зарегистрирован: 14 апр 2014, 21:35

Вычислить значение выражения

Сообщение Anbore » 14 апр 2014, 21:40

Помогите найти ошибку. Требуется разработать программу на ассемблере (masm) для вычисления значения выражения y=(x+3)2-4x.
include io.asm ;подключение операций ввода-вывода
stack segment stack
dw 128 dup (?)
stack ends
data segment
x equ 2
y dw ?
T db 'ответ=$'

data ends

code segment 'code'
assume ss:stack, ds:data, cs:code
start:
mov ax, x
sub ax, 3
imul ax
mov bx, x
imul bx, 4
sub ax,bx
mov dx,offset T
outstr
newline-
fin: finish
Code ends

Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 16:14
Откуда: 71 RUS
Контактная информация:

Re: Вычислить значение выражения

Сообщение somewhere » 14 апр 2014, 22:42

* программа вычисляет (x-3)^2 - 4x, то есть достаточно заменить sub ax, 3 на add ax, 3
* нет присвоения Y-ку результата
* outstr наверное выводит "ответ=", а где же вывод результата вычисления?
* все таки по хорошему Х должен быть переменной, а не константой
* при Х > 181 результат возведения в квадрат со знаком выйдет за границы 16 битного целого числа со знаком и вычисления будут ошибочны
It's a long way to the top if you wanna rock'n'roll

Ответить