Show Menu
Cheatography

Эквивал. и присва­ивание

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_la­bel: и команды, выполн­яемые после перехода по данной метке.
 

Арифме­тич­еские команды

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 Gr­eater
Флаговые условия: ZF=0 и SF=OF
JGE
JGE lbl
Jump Gr­eater 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
       

Help Us Go Positive!

We offset our carbon usage with Ecologi. Click the link below to help us!

We offset our carbon footprint via Ecologi
 

Comments

No comments yet. Add yours below!

Add a Comment

Your Comment

Please enter your name.

    Please enter your email address

      Please enter your Comment.

          Related Cheat Sheets

          Linux Assembler Cheat Sheet