Online Compiler Nasm

BITS 32 section .data fin db "%u %u", 0 fout db "%u", 10, 0 section .bss a resd 1 b resd 1 section .text extern scanf extern printf global main main: push ebp mov ebp, esp lea eax, [b] push eax lea eax, [a] push eax lea eax, [fin] push eax call scanf add esp, 12 mov ebx, [a] dec ebx imul eax, ebx, 41 shr ebx, 1 add eax, ebx add eax, [b] push eax lea eax, [fout] push eax call printf add esp, 8 xor eax, eax leave ret
1) Этот код считывает два беззнаковых целых числа, выполняет с ними математические операции (включая умножение, сдвиг и сложение) и выводит результат.

2) Обрати внимание, что инструкция `shr ebx, 1` эквивалентна целочисленному делению на 2.  
   Убедись, что понимаешь, почему адреса переменных `a` и `b` передаются в `scanf` в обратном порядке (сначала `b`, потом `a`).