Online Compiler Nasm

%include "io.inc" section .text global main main: call io_get_dec mov ebx, eax ; a call io_get_dec mov ecx, eax ; b call io_get_dec mov ebp, eax ; c call io_get_dec ; d mov esi, eax mov eax, ebx sub eax, ecx mov edi, eax ; a - b mov eax, esi xor edx, edx div ebp ; d mod c mov eax, ebp ; eax = c sub eax, edx ; eax = c - r xor edx, edx div ebp ; edx = add mov eax, edi add eax, edx ; (a - b) + ((c - r) mod c) call io_print_dec call io_newline xor eax, eax ret
1) Этот код вычисляет выражение `(a - b) + ((c - (d % c)) % c)`, где a, b, c, d — целые числа, введённые с клавиатуры.

2) Обрати внимание, что операция `div` использует регистры `edx:eax` как делимое, а результат остатка сохраняется в `edx`. Убедись, что `edx` обнуляется перед каждым делением.  
Также учти, что при вычислении `(c - r) mod c`, где `r = d % c`, результат всегда будет равен `c - r`, если `r != 0`, и `0`, если `r = 0`.