我在C ++中有一个简单的声明:
for (int i = 0; i < length; i++)
{
temp_char = OChars[i];
...
...
OChars[]
包含一串文字,最多6个字母
temp_char = OChars[i];
显示的反汇编是:
mov edx,dword ptr [ebp-8] //move i into EDX
mov al,byte ptr [edx+0B44448h] //move OChars[i] in to AL (lower 8bit of EAX)
mov byte ptr [temp_char],al
我知道mov al,byte ptr [edx+0B44448h]
正在将OChars[i]
中存储的字符移动到AL中。
我不明白[edx+0B44448h]
。我已检查了注册表0x00B44448h
,但它显示为空(尽管OChars[]
中存储的字符似乎从0x00B44440
开始)。
我正在尝试将原始C ++转换为内联ASM,但不知道如何在该特定行上找到我需要替换[edx+0B44448h]
的内容。
非常感谢任何帮助。
谢谢!
答案 0 :(得分:-1)
mov edx,dword ptr [ebp-8] //move i into EDX
mov al,byte ptr [edx+0B44448h] //move OChars[i] in to AL (lower 8bit of EAX)
mov byte ptr [temp_char],al ; <-- I guess, you should checked at "al"