Online Compiler Nasm

extern io_get_udec extern io_print_udec extern io_print_char section .bss a11: resd 1 a12: resd 1 a21: resd 1 a22: resd 1 b1: resd 1 b2: resd 1 key1: resd 1 key2: resd 1 andmask1: resd 1 section .text global main main: ; Scanning data call io_get_udec mov [a11], eax call io_get_udec mov [a12], eax call io_get_udec mov [a21], eax call io_get_udec mov [a22], eax call io_get_udec mov [b1], eax call io_get_udec mov [b2], eax ; Computing key1 mov eax, dword [a12] not eax and eax, dword [a11] mov ebx, eax mov eax, dword [a22] not eax and eax, dword [a21] or eax, ebx mov [key1], eax ; Computing key2 (copy + paste) mov eax, dword [a11] not eax and eax, dword [a12] mov ebx, eax mov eax, dword [a21] not eax and eax, dword [a22] or eax, ebx mov [key2], eax ; Computing andmask1 (copy + paste again) mov eax, dword [a11] and eax, dword [a12] and eax, dword [b1] mov [andmask1], eax mov eax, dword [a21] and eax, dword [a22] and eax, dword [b2] or eax, dword [andmask1] and eax, dword [key1] ;mov [andmask1], eax ; Computing andmask2 (in ebx) not eax xor ebx, eax ; PRINT DATA mov eax, dword [key1] and eax, dword [b1] ;or eax, dword [andmask1] call io_print_udec mov eax, ' ' call io_print_char mov eax, dword [key2] and eax, dword [b2] ;or eax, ebx call io_print_udec xor eax, eax ret
1) Этот код считывает шесть беззнаковых 32-битных чисел (a11, a12, a21, a22, b1, b2), выполняет над ними битовые операции (NOT, AND, OR, XOR) и выводит два результата.

2) Подсказки:
- Обрати внимание, что некоторые строки закомментированы (с `;`), что меняет логику работы. Подумай, как это влияет на вычисление `andmask1` и финальный вывод.
- Для понимания алгоритма проследи, как вычисляются `key1` и `key2` — это поможет разобраться в последующих операциях с `andmask1` и `ebx`.