Я новичок в сборке и пытаюсь выполнить произвольную арифметику точности в сборке. Но я застрял в ошибке на целый день.
mov eax,[ebp+8] ; the first parameter of c function
mov edx,[ebp+12] ; the second parameter of c function
sub ecx,ecx
sub ebx,ebx
for_loop2:
cmp ecx,[noktadanSonraFark] ; [noktadanSonraFark] is a variable that contains the difference of the lenghts of the two parameters
je end_for2
mov ebx,[length2] ; the length of the second parameter "9"
sub ebx,1 ; if length is 9 the last chacter will be on 8. index
sub ebx,ecx
mov eax, [edx+ebx] ; must show the character at the 8.index
mov eax,ebx ; this 4 line returns thee value stored in eax to the
pop ebx ; c function. and the result is printed
pop ebp
ret
inc ecx
jmp for_loop2
Моя проблема в том, что на экран ничего не выводится. Но когда я комментирую эту строку mov eax, [edx+ebx]
, значение ebx выводится правильно "8", поэтому кажется, что эта строка mov eax, [edx+ebx]
меняет значение в ebx или удаляет его. Потому что ничего не выводится на экран. Есть идеи?