私はx86アーキテクチャを使用してアセンブリを学習しようとしています。 add、sub、mul、imul、div、idivのような基本的な計算ができます。しかし、結果を印刷しようとすると、文字列にいくつかのスペースがあります。これらの余分なスペースを削除する方法はありますか?私は現在、文字列をループし、空白以外の文字を2番目の文字列に送ることによってそれらを削除しようとしています。これを行う方法であれば、なぜ私のコードは機能しませんか?私は交換(xchg)についてどこかを読んだが、私はそれをどのように使用するか完全にはわかっていない。これはもっと効率的な方法でしょうか?アセンブリx86 Win32
dtoa product, eax ; convert to ASCII characters
dtoa xStart, x
dtoa yContinue, y
lea edi, product
mov ecx, 20h ; mov hex value of space into ecx
forStart: cmp [edi], ecx ; compare edi to space
jne addToString
add edi, 4 ; get address of next array element
cmp [edi], 00h ; cmp value of edi to null
je printResult
jmp forStart ; loop through for next element
addToString: mov ecx, [edi] ; mov value of edi into ecx
add edi, 4 ; get address of next array element
cmp [edi], 00h ; cmp value of edi to null
je printResult
jmp forStart ; loop through for next element
printResult: output resultLbl, xStart ; output result