Суффиксы размера
Ассемблер Intel пытается определить размер инструкции пересылки анализируя размеры операндов. Таким образом, код:
mov ax, 10 |
будет пересылать 16-битное слово в регистр ax.
Ассемблер as, как правило, отказывается "играть в догадки".
Вместо этого, при написании имени инструкции необходимо использовать суффикс явной символьной индикации размеров операндов:
movw $10, %ax |
где допустимыми символами являются b, w и l:
b - byte (8-бит) [movb $10, %al]
w - word (16-бит) [movw $10, %ax]
l - long (32-бит) [movl $10, %eax]
Можно встретить и другие случаи использования модификаторов размера, подобно тому как pushfd становиться pushfl.
Чаще всего использование модификаторов размера очевидно, а в случае ошибки - ассемблер обязательно подскажет.