어셈블리에서 코딩하는 것이 좋지 않습니다. 어쨌든 여기에 어셈블리로 작성해야합니다. 각 문자를 볼 수 또는 바이트가 널 바이트로 구분되기 때문에, 단지, "1"한 바이트를 표시 할 수 있습니다 대신 "123"16 진수를 문자열로 읽는 것
경우에만
.data
Msg db 31h, 00h, 32h, 00h, 33h ;convert this to string which "123"
.code
start:
invoke MessageBox, 0, addr Msg, 0, 0
call ExitProcess
end start
(I는 MASM32 사용하고 있습니다) 문자열의 끝에 도달 할 때까지 각 읽을 수있는 바이트를 연결할 수 있습니다.
mov ebx, offset Msg
mov ecx, ebx
add ebx, 2
invoke lstrcat, ebx, ecx
는 어쩌면 난 그냥 코딩 할 수있는 더 좋은 방법을 모르거나 당신이 더 나은 솔루션이 있다면 당신은 공유 할 수 있습니다, 또한 루프를 추가 할 수 있습니다.
유니 코드처럼 보였 겠지만 홀수 개의 바이트가 있습니다 (마지막 바이트에는 '00'이 없음). 그게 전사 오류인가요? – lurker
어셈블리에서 Windows 프로그래밍을하는 이유는 무엇입니까? [Steve Gibson] (https://www.grc.com/smgassembly.htm)과 통화 했습니까? –