Можно также использовать регистр как
Можно также использовать регистр как ячейку памяти (он должен быть 32-разрядным в 32-разрядных программах):
mov eax, 403045h ; пишет в eax значение 403045 шестнадцатиричное.
mov cx, [eax] ; помещает в регистр CX значение (размера word) из памяти указанной в EAX (403045)
В mov cx, [eax], процессор сначала смотрит, какое значение (= ячейке памяти) содержит eax, затем какое значение находится в той ячейке памяти, и помещает это значение (word, 16 бит, потому что приемник, cx, является 16-разрядным регистром) в CX.
Многие опкоды делают вычисления. Вы можете узнать многие из них по их названиям: add (addition - добавление), sub (substraction - вычитание), mul (multiply - умножение), div (divide - деление) и т.д.
Опкод add-имеет следующий синтаксис:
add приемник, источник
Выполняет вычисление: приемник = приемник + источник.
Имеются также другие формы:
приемник |
источник |
пример |
регистр |
регистр |
add ecx, edx |
регистр |
память |
add ecx, dword ptr [104h] / add ecx, [edx] |
регистр |
значение |
add eax, 102 |
память |
значение |
add dword ptr [401231h], 80 |
память |
регистр |
add dword ptr [401231h], edx |
Эта команда очень проста. Она добавляет значение источника к значение приемника и помещает результат в приемник.
Другие математические команды:
sub приемник, источник (приемник = приемник - источник)
mul множимое, множитель (множимое = множимое * множитель)
div делитель (eax = eax / делитель, edx = остаток)
Поскольку регистры могут содержать только целочисленные значения (то есть числа, не, с плавающей запятой), результат деления разбит на частное и остаток. Например:
28 /6 --> частное = 4, остаток = 4
30 /9 --> частное = 3, остаток = 3
97 / 10 --> частное = 9, остаток = 7
18 /6 --> частное = 3, остаток = 0
Теперь, в зависимости от размера источника, частное сохраняется в eax, а остаток в edx:
размер источника |
деление |
частное в... |
остаток в... |
BYTE (8-bits) |
ax / делитель |
AL |
AH |
WORD (16-bits) |
dx:ax* / делитель |
AX |
DX |
DWORD (32-bits) |
edx:eax* / делитель |
EAX |
EDX |
<
Содержание Назад Вперед