문자열 형식을 int로 구문 분석해야하지만 코드를 변경해야하는 코드가 있습니다. 0에서 658688까지 나는 그것을 어떻게 처리해야할지 모른다. lodsd 명령이 올바른지 확인하십시오.어셈블리에서 정수로 구문 분석 할 문자열
toparse DB 128 dup(?)
mov toparse, "0"
atoi proc uses esi edx inputBuff:DWORD
mov esi, inputBuff
xor edx, edx
.Repeat
lodsd
.Break .if !eax
imul edx, edx, 10
sub eax, "0"
add edx, eax
.Until 0
mov EAX, EDX
ret
atoi endp
그것은 당신이 (가) call
보내고 atoi 함수 전에 오프셋 아스키의 옵셋 메모리 또는 push
와 하나 invoke
atoi 함수의 PROC 필요 658,688
http://x86.renejeschke.de/html/file_module_x86_id_160.html ... 'lodsd'는 정확한 수있다. 아마도 'mov toparse'와 마찬가지로 0이 아닌 것입니다. 디버거에서 체크인 했습니까? 소스를 읽는 것은 어렵습니다. 순수한 어셈블리가 아니기 때문에 일부 매크로 또는 무언가가 있다고 생각하거나 그 "todo"코멘트 일 수도 있습니다. – Ped7g
@ped 이것은 주석이 아닙니다. 이 코드는 MASM의 상위 어셈블리 구문을 사용합니다. 매크로처럼 보이지만 어셈블러에 내장되어 있습니다. –
'lodsd'가 잘못되었습니다. 더블 워드 (DWORD)를로드하지만 'DB' (Declare Byte)를 사용하여 문자열 배열을 선언 했으므로 문자의 크기는 분명 바이트 크기입니다. 아마도'lodsb '를 원할 것입니다. –