Microsoft Assembler, почему PTR не работает с регистрами (неправильное использование регистра) - PullRequest
0 голосов
/ 09 октября 2018

Почему следующий код не работает, я хочу переместить первые 2 байта eax в переменное слово

.data

variable word ? 

.code

mov eax, 010203040h 

mov variable, word ptr eax

1 Ответ

0 голосов
/ 09 октября 2018

Регистры имеют фиксированный размер, вы можете использовать спецификаторы размера только для операндов памяти.

Используйте имя подрегистра для чтения или записи только его части, например, AX или AL вместо EAX.

 mov [variable], ax

 mov word ptr [variable], ax

2-я форма нужна только с word ptr, если вы хотите быть явным, или если переменная не была объявлена ​​как word, и вам необходимо переопределить проверку размера операнда MASM для операндов памяти.

(Квадратные скобки не обязательны, но обычно рекомендуется подчеркнуть, что это операнд памяти.)

...