Size: a a a

Ассемблер

2021 February 17

I

Inferno in Ассемблер
:3
источник

I

Inferno in Ассемблер
😁
источник

楽園松本 in Ассемблер
f z
я не уверен троллинг это или нет, но на всякий случай отвечу. sub - вычитание, add - сложение. Если я правильно помню
Ты не поверишь, но обе операции почти одно и то же.
источник

fz

f z in Ассемблер
https://www.cyberforum.ru/fasm/thread2339820.html пытаюсь осознать статью. В разделе "Динамический вызов процедур и функций" возникли проблемы с пониманием кода. Конкретно интересуют 2 вопроса. После вызова функции Invoke что будет в регистре eax? Я не совсем понимаю какая инструкция выполнится после "push @next" на 15 строке?
источник

DP

Denis Paukaev in Ассемблер
f z
https://www.cyberforum.ru/fasm/thread2339820.html пытаюсь осознать статью. В разделе "Динамический вызов процедур и функций" возникли проблемы с пониманием кода. Конкретно интересуют 2 вопроса. После вызова функции Invoke что будет в регистре eax? Я не совсем понимаю какая инструкция выполнится после "push @next" на 15 строке?
в eax результат вызова функции, т.е. то, что она вернула
источник

DP

Denis Paukaev in Ассемблер
после push    @next выполнится инструкция на 16 строке, обычное линейное выполнение
источник

fz

f z in Ассемблер
Denis Paukaev
в eax результат вызова функции, т.е. то, что она вернула
ок, я просто тут немного экспериментировал. и если в eax поместить указатель на строку, например, а потом:
Invoke MessageBox, 0, eax, Caption, 0
Invoke MessageBox, 0, eax, Caption, 0

то 1 раз все ок, второй раз мессадж бокса я не вижу
источник

DP

Denis Paukaev in Ассемблер
потому что первый инвок перетёр то, что было в eax
источник

DP

Denis Paukaev in Ассемблер
и при вызове второго там уже какой-то мусор будет
источник

fz

f z in Ассемблер
Denis Paukaev
потому что первый инвок перетёр то, что было в eax
ок, спасибо
источник

DP

Denis Paukaev in Ассемблер
ну не мусор вернее, а возврат функции MessageBox
источник

DP

Denis Paukaev in Ассемблер
источник

fz

f z in Ассемблер
Denis Paukaev
потому что первый инвок перетёр то, что было в eax
после 1 вызова он положил в eax результат выполнения функции MessageBox?
источник

fz

f z in Ассемблер
ну да. ок.
источник

fz

f z in Ассемблер
Denis Paukaev
после push    @next выполнится инструкция на 16 строке, обычное линейное выполнение
в какой момент программа начнет исполнять инструкции на 18 строке?
источник

DP

Denis Paukaev in Ассемблер
f z
в какой момент программа начнет исполнять инструкции на 18 строке?
почитай что каждая asm команда делает в этом листинге. Мы затолкали в стек 2 адреса, 18 строки и следом функции Hello, дальше ret снимает со стека верхний адрес (это будет адрес функции Hello), и передаёт туда управление, в стеке у нас соответственно остался адрес 18 строки (pop eax)
источник

DP

Denis Paukaev in Ассемблер
функция Hello в конце сделает ret, и снимет этот адрес 18 строки со стека, и передаст на него управление, и начнёт выполняться код pop eax и т п
источник

fz

f z in Ассемблер
о, я вроде понял, спасибо
источник

VV

Vyacheslav Vasin in Ассемблер
Здравствуйте
источник

DB

Dima Bat in Ассемблер
источник