Программирование на Ассемблере


Выражения


Выражения строятся из:

·        констант;

·        переменных;

·        знаков арифметических операций (+, -, *, /, MOD[6]);

·        знаков отношений (LT[7]

- меньше, LE – меньше равно, EQ - равно, NE – не равно, GT - больше, GE-больше равно);

·        операций побитовой обработки (AND- логическое умножение, OR- логическое сложение, NOT - инверсия, XOR-сложение по модулю 2);

·        операций сдвига (SHL, SHR);

·        дополнительных операций, например, size – размер данного в байтах; length – коэффициент повторения для первого элемента списка, type – значение определяется типом данного и равно длине данного в байтах;

·        зарезервированных символов и идентификаторов.

В табл. 3.2 представлены зарезервированные символы и слова, а также значения, соответствующие этим словам

Таблица 3.2.  Значения для зарезервированных символов и слов



Слово (символ)

Значение

$

Текущее значение адреса

NOTHING

0

?

0

UNKNOWN

0

BYTE

1

WORD

2

DWORD

4

PWORD

6

FWORD

6

QWORD

8

TBYTE

10

PROC

4

CODEPTR

4

DATAPTR

4

 Правила вычисления выражений:

·        Все выражения вычисляются на этапе трансляции.

·        Если в выражении встречается имя переменной, подставляется ее адрес, например в участке программы

X          DD      5

DD      3

MOV   EAX, [X+4]

в регистр EAX запишется значение, которое находится по адресу X+4,

т.е. число 3.

·        При вычислении значения выражения учитывается только целая часть результата, дробная часть отбрасывается.

·        Вычисления проводятся с точностью до 232, если промежуточный или окончательный результат сложения или вычитания превосходит это значение, он усекается (отбрасываются старшие цифры результата), при этом формируется предупреждение. Если результат умножения выходит за пределы, формируется ошибка, связанная с выходом за пределы.


¬        +ёыш фхышЄхы№ Ёртхэ 0, ЇюЁьшЁєхЄё  ю°шсър л-хыхэшх эр 0¬.
¬        LёЄшэр ш ыюц№ ъюфшЁєхЄё  ёююЄтхЄёЄтхээю 0xFFFFFFFF ш 0.
=шцх яЁхфёЄртыхэ яЁшьхЁ ЇЁруьхэЄр яЁюуЁрььv ё тvЁрцхэш ьш. +яЁхфхышЄх Ёхчєы№ЄрЄ ЄЁрэёы Ўшша тvЁрцхэш  т ърцфюь ёыєўрх ш яЁютхЁ№Єх яюыєўхээvх Ёхчєы№ЄрЄv яю ышёЄшэує яЁюуЁрььv.
ideal
p586
extrn ExitProcess:proc
model flat
dataseg
x ddааааааа 1, 2 dup (1),
ааааааааааа ddаааааааааа 0.53, 53., 1.57
аа ddааааааа 1.E-3
аа ddааааааа 5.3E27
аа dbааааааа 5.3E27
аа dwаааааа 5.3E27
аа dqааааааа 5.3E27
аа dtаааааааа 5.3E27
codeseg
begin:
a =аааааааа 1 SHRа 5
b =аааааааа -1 SHL 5
c =а -1 SHL 3
movааааааа eax, size x
movааааааа ebx, length x
movааааааа edx, [ecx+4]
movааааааа esi,7/4
movааааааа edi, 0ffffffffh+2
movааааааа edi, 0ffffffffh/0ffffffffh
movааааааа edi, 1/0
movааааааа edi, 1 lt 0
movааааааа edi, 1 gt 0
callаааааааа ExitProcess
Содержание раздела