Эквивал. и присваивание
EQU |
<имя> EQU <операнд> Возможны три основных способа задания операнда: 1) Операнд - константное выражение; 2) Операнд - имя. В данном случае эти имена являются синонимами; 3) Операнд - произвольный текст, не являющийся именем или константным выражением. |
= |
<имя> = <константное выражение> В отличие от констант, определенных в EQU, данная константа может изменять значение. Также с помощью = можно определить только числовую константу. |
Если переменные описываются директивами DB, DW, DD, то константы - с помощью директивы EQU
Задание массива
a DB 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Может использоваться при создании массивов. В данном случае a хранит адрес первого из 10-ти байт.
Эту директиву можно записать иначе:
a DB 10 DUP (0)
Данная конструкция в общем случае имеет вид:
n DUP (P1, P2, .., Pk)
, например
a DB 4 DUP (1, 2)
создаст последовательность 1, 2, 1, 2, 1, 2, 1, 2
|
Метки
Существует несколько способов задания метки. На данный момент рассмотрим один из них: <имя метки>:
Например, для создания метки my_label нужно прописать my_label:
и команды, выполняемые после перехода по данной метке. |
|
|
Арифметические команды
ADD |
ADD a, b Прибавляет к значению a значение b. Результат хранится в a. |
SUB |
SUB a, b Вычитает из значения a значение b. Результат хранится в a. |
MUL |
MUL a Данная команда умножает содержимое регистра ax на a. |
DIV |
DIV a Аналогично MUL, использует один операнд. После выполнения деления, частное хранится в ax, а остаток - в dx. |
Примечание
Для ADD и SUB доступны следующие формы:
Регистр - Регистр; Регистр - Память; Регистр - Значение; Память - Значение; Память - Регистр.
Для MUL и DIV операнд должен находиться в регистре или в памяти.
Условный переход
CMP |
CMP a, b Сравнивает a и b, но не записывает результат. Вместо этого изменяются значения флагов. |
JG |
JG lbl Jump Greater Флаговые условия: ZF=0 и SF=OF |
JGE |
JGE lbl Jump Greater or Equal Флаговые условия: SF=OF |
JL |
JL lbl Jump Less Флаговые условия: SF≠OF |
JLE |
JLE lbl Jump Less or Equal Флаговые условия: ZF=1 или SF≠OF |
JE |
JE lbl Jump Equal Флаговые условия: ZF=1 |
JNE |
JNE lbl Jump Not Equal Флаговые условия: ZF=0 |
Примечание
CMP расставляет указанные флаги автоматически.
|
|
Определение данных
DB |
Define Byte <имя> DB <операнд> {, <операнд>} В памяти выделяется один байт (для каждого операнда). Константное выражение может иметь значение в диапазоне -128..255 |
DW |
Define Word <имя> DW <операнд> {, <операнд>} В памяти выделяется два байта (для каждого операнда). Константное выражение может иметь значение в диапазоне -32768..65535 |
DD |
Define Double <имя> DB <операнд> {, <операнд>} В памяти выделяется четыре байта (для каждого операнда) |
Первому из операндов присваивается имя, по которому можно ссылаться на этот(-и) байт(ы). Существует два основных способа задания операндов:
1) Константное выражение
2) ? - неопределенное значение
Безусловный переход
Безусловный переход — это переход, который выполняется всегда. Безусловный переход осуществляется с помощью команды JMP. У этой команды один операнд, который может быть непосредственным адресом (меткой), регистром или ячейкой памяти, содержащей адрес.
JMP label
- осуществлеие безусловного перехода к метке label |
|
Created By
Metadata
Comments
No comments yet. Add yours below!
Add a Comment
Related Cheat Sheets