Эквивал. и присваивание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