Изменения

Перейти к: навигация, поиск
Команды загрузки
== Команды загрузки ==
mov register|memory, register|memory|immediate ; команда загрузки.записать значение второго операнда в первый, размер данных должен совпадать
mov al, 5 ; загрузить в al 5
mov cx, di ; скопировать значения значение di в cx в di. Размер копируемых данных должен совпадать.
movzx register, register|memory ; копирование значений меньшей разрядности в регистр большей разрядности, недостающие биты заполняются нулями
movsx register, register|memory ; копирование значений меньшей разрядности в регистр большей разрядности, недостающие биты заполняются знаковым битом
cmov(cc) register, register|memory ; cc — условие. , команда выполняется только если cc, то mov, ничего otherwiseусловие верно
xchg register|memory, register|memory ; обмен значений
Обращаться можно и к памяти:
mov eax,[ebx] &mdash; загрузка в eax того, что находится по адресу ebx. (в C выглядело бы как eax = *ebx. ) [] - косвенная адресация. не более одних скобок за раз, ** недопустимы. может Может использоваться как для левого, так и правого аргумента mov. по правилам в В команде <= 1 может быть не больше одного обращения к памяти. сказать, что " <s>mov [eax],[ebx]" разрешено == всё равно, что выгнать себя с экзамена)</s> ; так делать нельзя! 
Оперативную память попортить нельзя, она разделена между процессами.
//Си &mdash; высокоуровневый ассемблер, многие вещи в Си пошли от ассемблера
В квадратных скобках при использовании 16-битных регистров можно писать три опциональные части:
bx (bp) si + si (di) +(/-) offset (16-битное число) bp di
В квадратных скобках при использовании 32-битных регистров позволено писать довольно много разных вещей:
любой из регистров общего назначения eax ebx eax ecx ebx 1 edx ecx 2 + (любой из регистров общего назначения, за исключением esp)edx *(1|2|4|8) +(/-) offset (32-битное число) ebp ebp 4 esp edi 8 edi esi esi
== Работа со стеком ==
Анонимный участник

Навигация