我有一個包含一個緩衝區:「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個字節)。 –