С
Mov eax, 0 - 5 байт, а xor eax, eax - всего 2 байта.
А вот этого не знал:
Test eax, 8 - 5 байт,
Test ebx, 8 - 6 байт
Size: a a a
С
С
D
s
executable
для начала. А потом содержимое equ
вычисляется в месте использования, а не в месте определения, это обычная текстовая замена, и у тебя получается совсем не тот $
, что ты хотел. Тебе нужно =
, оно сразу вычислит и запомнит. Ещё cl
мало для loop
, ну и так далее.A
format pe64 console
mov rax,qword[number]
bswap rax
mov rbx,3030303030303030h
sub rax,rbx
mov rcx,8
xor rdx,rdx
@@:
shl rdx,4
or dl,al
shr rax,8
loop @b
ret
number db '12397632'
у мя вот так получилось, вот только не пойму почему из х64 регистра нельзя вычесть х64 непосредственное число. где то читал что нельзя, а вот почему нет. зделал через 2 ролаA
A
A
D
s
CS:0005 9AEEFE
1D
F0 CALL F01D:FEEE
Ты вместо длины читаешь вот это 1D, оно больше 8, так что выглядит всё, как будто всё работает. Но в BCD преобразуется и строка, и кусок кода заодно. Зачем тебе квадратные скобки вокруг длины, зачем?!DF
С