Я думаю, что ваша проблема в том, что существует два разных способа написания сборки на x86.Одним из них является обозначение AT & T, а другим - обозначение Intel.Порядок аргументов в инструкции полностью изменен в нотации Intel в противоположность AT & T.Ваша версия сборки, по-видимому, записана в Intel, что означает, что mov esp, ebp
фактически переводит значение в ebp
в esp
.В более логичной (на мой взгляд) нотации AT & T это будет mov %ebp, %esp
.