我有一个包含一个缓冲区:“B”“A”“C”“\ n”和我想换字母“B”和“A” ......x86汇编,交换语法
检查调试器,印刷的4个字节的EBP: 'b' 'A' 'C' '\ N' ....
- EBP - 缓冲区
- EAX的地址 - 偏移量(当前为0 ),以便Ebp + eax指向缓冲区中的'b'
- Ebx - 包含'b'
- Edi - 包含'a'
问题是,当我运行应该覆盖在缓冲区中的“B”与“一”的命令:
mov [ebp + eax] , edi
...我打印缓冲区,它现在包含: 'a''c''\ n'...'b'去了哪里?如果我跑这应该覆盖的“a”中的Buff与“B”的下一个命令,完成交换:
mov [ebp + eax + 1], ebx
...我打印缓冲区,它现在包含:“A”' b''a''c'...而不是'a''b''c''\ n'...任何人都可以解释这里发生了什么吗?
您只需要移动一个字节,而不是整个寄存器(4个字节)。 –