Пожалуйста, помогите написать программу на ассемблере (FASM)

Добрые люди, очень нужна ваша помощь)))
Дано вот такое вот заданьице:
Вычислить арифметические выражения a∗b∗(−1) и c^2+d^3−100 . Переменные a,b,c,d в начале выполнения программы должны быть расположены в регистрах EAX, EBX, ECX и EDX соответственно. Численные значения можно взять произвольными.
Создать глобальную переменную размером в 16 байт и программно инициализировать ее таким образом, чтобы в окне дампа можно было бы увидеть значения вида 01 00 01 00 …

Заранее благодарствую :slight_smile: :upside_down_face: :v:

Так а проблема в чем именно? Что пробовали? Что не получается?

  • EAX / AX / AH / AL ( accumulator register ) – аккумулятор;
  • EBX / BX / BH / BL ( base register ) –регистр базы;
  • ECX / CX / CH / CL ( counter register ) – счётчик;
  • EDX / DX / DH / DL ( data register ) – регистр данных;

И в методичках как правило есть примеры подсказки…

Дело в том, что я в ассемблере пока полный ноль, а в методичке нет никакой инфы))
Я не пойму, например, в какой регистр после умножения (mul) попадает значение :slight_smile:
Мне просто очень нужен пример, и тогда я разберусь

Вот как раз этих самых примеров и нету (((

“Архитектура ЭВМ и язык ассемблера” Учебно-методическое пособие Часть 1
Смотрите Арифметика и целочисленные типы данных стр.23

P. S.
На всякий случай:
“Архитектура ЭВМ и язык ассемблера” Учебно-методическое пособие Часть 2

Спасибо за материал, почитаю)

Сделала что-то такое, это для 1 части, исправьте, пожалуйста, что не так)
format PE GUI
entry start
start:
mov eax, 2
mov ebx, 3
mov ecx, 4
mov edx, 5
mov esi, eax
mov eax, ecx
mul eax
mov edi,eax
mov eax,edx
mul eax
mul eax
add edi,eax
sub edi,100
mov eax,esi
neg ebx
mul ebx
ret

Здесь похоже не подойдут регистры: eax ecx edx ebx. Их размер составляет 32 бита.
16 байт это регистры тип SSE: xmm0 xmm1 xmm2 xmm3
1.2.1 Синтаксис инструкций

хм, возможно