Win32asm обучение

Металлоконструкции изготовление металлических антенных опор Новосибирск и пригороде.

Урок 5 - Коды операции - часть 3


Можно также использовать регистр как ячейку памяти (он должен быть 32-разрядным в 32-разрядных программах):

mov eax, 403045h ; пишет в eax значение 403045 шестнадцатиричное.

mov cx, [eax] ; помещает в регистр CX значение (размера word) из памяти указанной в EAX (403045)

В mov cx, [eax], процессор сначала смотрит, какое значение (= ячейке памяти) содержит eax, затем какое значение находится в той ячейке памяти, и помещает это значение (word, 16 бит, потому что приемник, cx, является 16-разрядным регистром) в CX.

ADD, SUB, MUL, DIV

Многие опкоды делают вычисления. Вы можете узнать многие из них по их названиям: 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
<


- Начало -  - Назад -  - Вперед -



Книжный магазин