Так. Во-первых, mov - это команда, а не регистр. Регистр - это eax, ebx, ecx и
так далее. Если очень сильно упростить, то регистр - это просто маленькая
область в процессоре, где может храниться какое-то значение.Процессор -
универсальная штука, таким его проектируют. Допустим, нужно тебе сложить два
числа. Еще допустим, что выглядит это вот так:
ADD 2 5
В результате должно получиться число 7, тут, вроде бы, вопросов нет. Но
возникает множество других вопросов. Прочитав коротко историю создания
микропроцессоров можно выяснить, что все его инструкции выполнены "в железе" -
то есть за каждую команду, что процессор умеет делать, отвечает определенный
(реальный!) кусок его физического воплощения. Образно, в нем есть пять
транзисторов, которые умеют складывать два числа. Какие? Это им надо сообщить.
Таким образом, ассемблер - это способ через операционную систему (Windows,
Linux и т.д.) сообщить процессору, что нужно сделать. Сам по себе процессор
достаточно тупой и банально не умеет складывать 2 и 5, но умеет складывать
числа. Кстати, самые первые микропроцессоры не умели умножать, только
складывать.
Какой выход из этой ситуации? Регистры! Сделаем так, чтобы в процессоре было
место под пару цифр, а все операции (команды) он производил над этими цифрами.
Назовем их прикольным словом и впаяем в процессор команды, позволяющие класть в
регистры данные и вытаскивать их оттуда. Итак, в нашем воображаемом процессоре
аж два регистра:
A
B
И команда, позволяющая положить что-нибудь в регистр:
MOV A, 10 (положить куда, что)
Итого, если нам нужно сложить два числа, мы делаем так:
MOV A,2
MOV B,5
ADD A,B
Положили в один регистр первое число, в другой - второе, и вызвали команду
сложения этих двух регистров. Хитрость тут в том, что результат сложения будет
аккуратно положен в регистр A, потому что в команде "ADD A,B" он является первым
аргументом. Типа, будь оно "ADD B,A", положилось бы в B.
Такие вот дела. А "dword ptr" - это указатель размером в 4 байта. Так как в
32-разрядной модели памяти все указатели имеют размер в 4 байта, то указывать
они могут хоть на 1 байт, хоть на float.