Тема
«Первые и последующие шаги в ассемблере x86/x64» напомнила мне очень бородатый анекдот конца 80-х. (Это не критика изложения в теме, не подумайте!)
Идёт зачет. Долго не получая решение задачи, преподаватель не выдерживает и просит решить студента следующее тривиальное упражнение: возвести число в вершине стека в степень 5/2.
«Понял. — отвечает студент. — загружаю 1 в вершину, загружаю 1 в вершину, складываю число в вершине с самим собой. Делю st(1) на st(0). Прибавляю к st(1) вершину с извлечением верхушки из стека. Выполняю обмен st(0) и st(1). Вызываю макрос mfxpy. Этот макрос состоит из fyl2x и макроса m2x. Ну, мы на лабораторных его писали и у меня с собой есть. И Вы разрешили ими пользоваться на зачёте. Текст
fld1
fld st
fadd st, st
fdiv st(1), st
faddp st(1), st
fxch
mfxpy»
«Плохо,— говорит преподаватель. — Если следующее упражнение выполните так же, то приходите на пересдачу. Итак, нужно умножить на три лежащее в вершине стека число. Ваши действия?»
«Загружаю 1, загружаю в вершину стека значение вершины, складываю вершину саму с собой. Прибавляю к st(1) вершину с выталкиванием вершины из стека. Умножаю st на st(1) с извлечением верхушки из стека. Утроенное исходное число в вершине стека. Текст:
fld1
fld st
fadd st, st
faddp st(1), st
fmulp st(1), st»
«Приходите на пересдачу».