アセンブリの学習を始めたばかりで、文字配列を変更しようとしています。
これは私のアセンブリコードです:
.data
data byte 'Five', 0
.code
Asm proc
lea rax, data
mov dword ptr[rax], 'Four'
ret
Asm endp
end
そして私のC++コード:
#include <stdio.h>
#include <conio.h>
// external function
extern "C" char* Asm();
// main function
int main()
{
printf(Asm());
_getch();
}
をコメントアウトするmov dword ptr[rax], 'Four'
と、結果としてコンソールに"Five"が出力されます。しかし、上記のコードのコメントを外すと、結果は"ruoF"になり、予想していたものではなく、明らかに"Four"になります。
なぜこうなった?次のような安価な回避策を実行せずに、テキストを正しい方向に出力するにはどうすればよいmov dword ptr[rax], 'ruoF'
ですか?