Online Compiler Nasm

extern io_print_dec, io_get_dec, io_print_char global main section .text main: call io_get_dec mov ebx, eax call io_get_dec mov edx, eax call io_get_dec mov esi, eax call io_get_dec mov edi, eax call io_get_dec mov ecx, eax mov eax, ebx imul ecx mov ebx, eax mov eax, esi add eax, eax imul ecx imul ecx sar eax, 1 add eax, ebx push eax mov eax, edx imul ecx mov ebx, eax mov eax, edi add eax, eax imul ecx imul ecx sar eax, 1 add eax, ebx mov ebx, eax pop eax call io_print_dec mov eax, 32 call io_print_char mov eax, ebx call io_print_dec xor eax, eax ret
1) Этот код считывает пять целых чисел, выполняет с ними арифметические вычисления (включая умножение, сложение и сдвиги) и выводит два результата через пробел.

2) Обрати внимание на порядок сохранения введённых значений в регистрах и на то, как используются регистры при вычислениях.  
Проверь, правильно ли понимаешь операции `imul` и `sar` — особенно когда результат умножения может быть двойной разрядности.