У этих языков совсем разное предназначение.
Язык PHP используется для создания сайтов, то есть управляющих сайтом скриптов.
А язык Ассемблер используется для клиентских программ, то есть находящихся на компьютере пользователя (скачиваемых). Ассемблер применяется редко, то есть тогда, когда более простым языкам программирования не хватает быстродействия. В ассемблере можно продумать каждую машинную команду, в результате чего придумать максимально быстрый алгоритм. Программировать на Ассемблере очень интересно, разрабатывая хитрые алгоритмы.
Судя по приведенному фрагменту кода это язык скриптов для игры в покемонов (подробнее здесь).
Структура языка похожа на ассеблер: команда пробел параметры.
Можно ли запрограммировать что нибудь кроме игровых ситуаций - наверное нет, но можно попробовать выводить в интернет доступную в игре информацию.
Мнемоника (легко запоминающееся символьное название) ассемблерной команды LEA говорит сама за себя. Эта аббревиатура, составленная из английских слов "Load Effective Address", по-русски означает "Загрузить эффективный адрес".
Данные команда LEA записывает в регистры. Но, в отличие от команды MOV ("Move" — переместить, переслать), она не копирует в регистр значение (содержимое ячейки с адресом), она заносит в регистр исполнительный адрес своего второго операнда, предварительно его вычисляя. Вообще, первым операндом этой команды может быть любой регистр общего назначения, а вторым — также любое адресное выражение, без или с модификаторами. При этом флаги не изменяются.
LEA использует механизм блока адресации процессора, а MOV — арифметико-логический блок.
Где применяется команда LEA:
- При выводе строк по операции OUTSTR;
- При пересылке в регистр значения регистра-модификатора, +/— какое-то число;
- Для получения адреса процедур по ссылке;
- Для передачи параметров по ссылке.
Вот всё, что удалось вспомнить.
Целую часть квадратного корня можно вычислить простым способом. Для этого вычитаем из исходного числа все нечетные числа до тех пор, пока остаток не будет меньше следующего вычитаемого числа или не станет равен нулю. Число вычитаний будет равно целому числу квадратного корня.
Пример. Есть исходное число 16.
16-1=15
15-3=12
12-5=7
7-7=0
Вычитаний было 4, значит целая часть корня квадратного исходного числа будет равна 4.
С дробными числами несколько сложнее, но тоже можно решать простыми операциями. Например, если составить уравнение
то его можно решить одним из известных алгоритмов, например, методом деления отрезка пополам. Задаем начальное значение, например 100 (которое заведомо больше искомого числа), считаем значение уравнения. Если значение уравнения получилось больше 0, то подставляем значение 100/2=50 (у нас был отрезок [0;100]). Опять считаем значение уравнения. Если теперь получилось меньше нуля, то подставляем значение середины отрезка [50;100] 75, опять считаем значение и т.д. Вычисления заканчиваем, когда будет достигнута необходимая точность результата. В итоге получим корень квадратный числа с заданной точностью.
Умножение и деление можно свести к операциям сложения и вычитания. В нашем алгоритме будут использоваться операции деления и умножения на 2. В вычислительной технике это делается вообще элементарно. Поскольку используется двоичная система счисления, то для умножения числа на 2 надо просто сделать сдвиг числа влево на один разряд (приписать справа нолик), а при делении на 2 - сдвинуть число на один разряд вправо. Операции сдвига - это одни из базовых команд любых, даже самых примитивных, процессоров.
Это сделать можно. Но лучше не нужно. Ибо обвязка (оболочка) по любому паскалевской будет. А сие означает, что далеко не полностью будет ясна "физика" этой программы. То есть, распределение памяти по адресам, подгружаемые оверлейные модули, адреса сегментов областей памяти (CS, SS, DS и ES), смена этих адресов... в результате будут трудности с отладкой.
Для написания программ на ассемблере хорошей идеей являются IDE для ассемблера (как это сказал Python, судя по НИК - линуксоид).