Основы fasma
"and", "or", "xor", "shl", "shr" и "not" - логические опирации.
Там где цифры - какие то переменные,регистры,значен ия и тд.
mov 1,2 - из 2 в 1.
push 1 - сохраняет значение в стек.Хранится оно кк кирпичики - один на один те:1 будет последним.
pop 1 - достает значение из стека сверху и записывает в переменную 1.
add 1,2 - 1=сумма переменных 1 и 2
inc 1 - прибавляет 1 к переменной(1)
sub 1,2 - 1=1-2
dec 1 - переменная(1)=переменная(1)-1
neg 1 - смена знака переменной(1)
mul 1 - Если операнд - байт, процессор умножает его на содержимое AL и возвращает 16-битный результат в AH и AL. Если операнд - слово, процессор умножает его на содержимое AX и возврщает 32-битный результат в DX и AX. Если же операнд - это двойное слово, процессор умножает его на содержимое EAX и возвращает 64-битный результат в EDX и EAX. "mul"устанавливает CF и OF, если верхняя половина результата ненулевая, иначе они очищаются.
imul - знаковое перемножение операндов. У этой инструкции есть три вариации. Первая имеет один операнд и работает так же, как инструкция "mul". Вторая имеет два операнда, и здесь операнд-адресат умножается на операнд-источник и результат заменяет операнд-адресат. Этоим операндом может быть регистр общего назначения, память или непосредственное значение. Третья форма инструкции имеет три операнда, операндом-адресатом должен быть регистр общего назначения, длиной в слово или в двойное слово, операндом-источником может быть регистр общего назначения или память, третьим операндом должно быть непосредственное значение. Источник умножается на непосредственное значение и результат помещается в регистр-адресат. Все три формы вычисляют результат размером в два раза больше размера операндов и ставят CF и OF, если верхняя часть результата ненулевая, но вторая и третья формы усекают результат до размера операндов. Так, их можно использовать для беззнаковых операндов, потому что нижняя половина результата одна и та же для знаковых и беззнаковых операндов.
not 1 инвертирует биты в заданном операнде(1) к форме обратного кода операнда.
and1,2 , or 1,2 и xor1,2 производят стандартные логические операции. Они изменяют флаги SF, ZF и PF.
test 1,2 - производит такое же действие, как инструкция "and", но не изменяет операнд-адресат, только обновляет флаги.
in al,20h переводит байт, слово или двойное слово из порта ввода в AL, AX или EAX.
Мнемоники:
o OF = 1 переполнение
no OF = 0 нет переполнения
c перенос
b CF = 1 меньше
nae не больше и не равно
nc нет переноса
ae CF = 0 выше или равно
nb не ниже
e равно
z ZF=1 ноль
ne не равно
nz не ноль
be ниже или равно
na не выше
a выше
nbe не ниже и не равно
s SF = 1 знаковое
ns SF=0 незнаковое
p Четное
np нечетное
l меньше
nge не больше и не равно
ge больше или равно
nl не меньше
le меньше или равно
ng не больше
g больше
nle не меньше и не равно.
Инструкции, образванные с помощью добавления условного мнемоника (смотрите таблицу) к мнемонику "set" присваивают байту единицу, если условие истинно, и ноль, если если условие не выполняется. Операндом должен быть 8-битный регистр общего назначения либо байт в памяти.
setne 1 - если флаг нуля пустой - в переменнную(1) записывает 1 иначе 0.
вместо ne любая мнемоника из таблицы.
nop занимает один бит, но ничего не значит, кроме как указатель инструкции. У неё нет операндов и она ничего не совершает.