У меня есть буфер, который содержит: «B» «а» «с» «\ п» и я пытаюсь поменять буквы «б» и «в» ...x86 Сборка, синтаксис Своп
Проверил отладчик, напечатанная 4 байта EBP: 'B' 'а' 'с' '\ п' ....
- EBP - адрес буфера
- EAX - смещение (в настоящее время 0), так что Ebp + eax указывает на «b» в буфере
- Ebx - содержит 'b'
- Edi - содержит 'a'
Проблема заключается в том, когда я запускаю команду, которая должна перезаписать «B» в буфере с «а»:
mov [ebp + eax] , edi
... Я печатаю буфер и теперь он содержит: 'a' 'c' '\ n' ... Куда делся «b»? Если я запускаю следующую команду, которая, как предполагается, перезаписать «а» в Буфф с «Ъ», завершая обмен:
mov [ebp + eax + 1], ebx
... Я печатаю буфер и теперь он содержит: «а» ' b '' a '' c '... вместо' a '' b '' c '' \ n '... Может ли кто-нибудь объяснить, что здесь происходит?
Вам нужно переместить только один байт, а не весь регистр (4 байта). –