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


       кинза |   

Команда MOV


Общий вид команды:

[Метка:]        MOV   Операнд1, Операнд2 [; Комментарий]

Требования к операндам:

длины операндов должны быть одинаковы и равны (1, 2, 4) байтов;

в качестве операндов можно использовать регистры всех типов (использование управляющих и отладочных регистров не рассматривается в этом курсе), адреса памяти и непосредственные данные (для исходных данных). Разрешенные и неразрешенные типы операндов команды MOV представлены в табл. 4.2

Таблица 4.2. Разрешенные и неразрешенные операнды команды MOV

2 операнд

1 операнд

РОН

СР

Адрес памяти

Непо-средственное данное

РОН

+

+

+

+

СР

+

-

+

-

Адрес памяти

+

+

-

+

Как видно из таблицы, если первый операнд регистр общего назначения, то второй операнд может быть любым, для сегментного регистра запрещено использование другого сегментного регистра или непосредственного данного, запрещено использование двух адресов памяти.

Примеры команд:

Реализовать на ассемблере операторы присваивания для переменных и массивов, определенных выше.

c2 = c1; c3[1] = c1;

swap (s2[0], s2[2]); s2[1] = s3;

i1[3] = i1[0]

i1[1] = i1[2];

f2 = f1;

d2 = d1;

q = &i1[3]; *p = *q;

Реализация на ассемблере


;c2 = c1; c3[1] = c1;

MOV   AL,[ c1]

MOV   [c2], AL

MOV   [c3+1], AL

;swap (s2[0],s2[2]); s2[1] = s3;

MOV   AX, [s2+4]

MOV   BX, [s2]

MOV   [s2+4], BX

MOV   [s2], AX

MOV   AX, [s3]

MOV   [s2+2], AX

;i1[3] = i1[0]; i1[1] = i1[2];

MOV   EAX, [i1]

MOV   [i1+12], EAX

MOV   EAX, [i1+8]

MOV   [i1+4], EAX

;f2 = f1;

MOV   EAX, [f1]

MOV   [f2], EAX

;d2 = d1;

MOV   EAX, [d1]

MOV   [d2], EAX

MOV   EAX, [d1+4]

MOV   [d2+4], EAX



Содержание  Назад  Вперед