Top.Mail.Ru
Ответы

Нужен код программы на ассемблере, для решения уравнения

Нужен код программы на ассемблере, для решения вот такого уравнения: (x+y)*l
Желательно в развернутом виде.

Дополнен

Опечатка, не уравнение а простая программа на ассемблере

Дополнен

Операционная система windows, процессор - intel x86, ассемблер masm 6.14
В паскале сделал, а в ассемблере не пойму как.
var x, y, l, c:integer;
begin
writeln ('Введите первое число');
readln (x);
writeln ('Введите второе число');
readln (y);
writeln ('Введите третье число');
readln (l);
c:=l*x+l*y;
writeln ('Сумма равна ',c);
end.

Дополнен

includelib E:\asm\IMPORT32.Lib
extrn ExitProcess:near
.386
.model flat, stdcall
.data
x db 4
y db 3
s db ?
.code
_start:
mov al,x
mov bl,y
add al,bl
mov s,al

call ExitProcess,0
end _start

не пойму как умножить на L

По дате
По рейтингу
Аватар пользователя
Новичок

Т.к. в комменте ответ был не мне а в вопрос - уже набросал оконное.
Ссылка на проект в облаке:
https://cloud.mail.ru/public/okXx/jvYvjbFp4

Через неделю удалю.
Переполнение не проверяется. Если сильно надо - добавлю проверку.

Аватар пользователя
Гений

Инлайновый x86 ассемблер gcc. -> на макроассемблер самостоятельно.

#include <stdio.h>

int main() {
int x = 10, y = 20, l = 33, res = 0;
asm (
"movl %[x], %%eax \n\t"
"addl %[y], %%eax \n\t"
"movl %[l], %%ebx \n\t"
"imul %%ebx, %%eax \n\t"
"mov %%eax, %[res] \n\t"
: [res] "=m" (res)
: [x] "m" (x), [y] "m"(y), [l] "m"(l)
: "eax", "ebx");
printf("(%i + %i) * %i = %i\n", x, y, l, res);
return 0;
}

Аватар пользователя
Просветленный

В вопросе нет уравнения