Что это за цифры, это какие-то коды операций или функций? Не гуглится вообще.
Или те же команды ret 1 ret 2 ret 4, не могу найти таблицу, или вообще информацию о них.
Точно что в начале учебников этого нету. К примеру https://www.moon.ru/upload/1345186726-Rudol_f-Mare... вообще там нету. И не только в нем. mov ax, 4ch ;функция DOS для завершения программы
Просто встречается, что типа так, а почему не говорится. Что за функция, откуда, а что за функция тогда по коду 4dh и т д
Saboteur, а зачем это число нужно? К примеру цитата в учебнике я знаю
"mov ah, 0x4c ;эта функция завершает программу ". И ничего не сказано почему, откуда, что 4с, а что делает 0x4B тогда? И то что там Гугл показывает в первых 2 вкладок ссылок поиска там нету ответа на этот вопрос. Я проверял.
Даниил,
Это потому что цитату в учебнике следует дочитывать ДО КОНЦА, и задавать правильные вопросы.
Команда mov ah, 0x4c - это просто занести в регистр ah число 0x4c
А вот дальше за командой mov или eax уже будет собственно команда вызова функции или прерывания (call XXX или int XXX)
И читать нужно не про eax или mov, а именно про этот int или call - потому что именно они вызывают функцию.
В обычном языке программирования, вы вызываете функции примерно так:
circle (x,y,R)
например нарисовать круг на координатах x, y с радиусом R
В ассемблере нет возможности передать x y R в той же самой строчке, где вы вызываете функцию. Поэтому предварительно эти аргументы заносятся в разные регистры, и потом вызывается функция.
Читаешь документацию по функции и узнаешь в каких регистрах какие аргументы должны быть.
Еще пример. В математике есть куча функций с одним аргументм, например
COS (x), SIN (x), SQR(x), ABS(x)
И вот ты такой приходишь и говоришь, а что означает X=1, а то я гуглю а ничего не находит, а не находит потому что искать нужно не X, а имя функции (cos, sin, sqr, abs и так далее)
Поэтому никто не скажет тебе, что такое mov или eax, если ты не указал какую конкретно функцию ты затем вызываешь.
NB: "ret 4" не эквивалентно "add esp, 4" + "ret", потому что данные действия выполняются в обратном порядке - сначала выполняется возврат по адресу из стека, и только после этого к xSP добавляется 4.
Таким образом процедура снимает со стека собственные аргументы в процессе возврата (такая модель вызова/возврата используется в Паскале).