Napisałem wg. http://compilers.iecc.com/comparch/article/99-10-056, ale nie działa dobrze. Wyświetla 0 dla np. 5.
Pierwsza część kodu to reszta z dzielenia przez 4,
var
liczba : integer;
begin
readln(liczba);
asm
mov ax, liczba
and ax, 0000000000000011b
mov liczba, ax
end;
writeln(liczba);
readln(liczba);
asm
xor eax, eax
xor ebx, ebx
xor ecx, ecx
xor edx, edx
mov ax, liczba
and ax, 33333333h
mov bx, liczba
and bx, 0cccccccch
shr bx, 2
mov ecx, eax //wynik
add ecx, ebx
mov edx, ecx //przesuniete
shr edx, 2
add ecx, edx
and ecx, 33333333h
mov ecx, edx
shr edx, 4
add ecx, edx
mov edx, ecx
shr edx, 2
add ecx, edx
and ecx, 33333333h
mov edx, ecx
shr edx, 8
add ecx, edx
mov edx, ecx
shr edx, 2
add ecx, edx
and ecx, 33333333h
mov edx, ecx
shr edx, 16
add ecx, edx
mov edx, ecx
shr edx, 2
add ecx, edx
and ecx, 3h
mov liczba, cx
end;
writeln(liczba);
readln();
end.