理解这个反汇编

时间:2015-04-29 21:50:37

标签: assembly x86

我在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]的内容。

非常感谢任何帮助。

谢谢!

1 个答案:

答案 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"