Microedition Разницы нет. Скорее разница в синтаксисе разных ассемблеров так в masm если переменная abc описана как dword тогда размер не указывается mov abc,xxx а если вы обращаетесь к одной из частей abc тогда mov byte ptr abc+3,xxx
Для mov разницы нет (если abc - переменная типа dword или не имеет своего типа, как в [eax]), но вот между Код (Text): add dword [abc],0 add [abc],dword 0 разница существенная - первая команда занимает три байта, вторая - шесть.
1) только в 16-битном режиме 2) про 3 байта ты наверно чтото путаешь - меньше 6 никак нельзя. А про Код (Text): add dword [abc],0 add [abc],dword 0 разница есть в машкоде. Но результат работы - один и тот же.
Ra!N 8 команд (основной код команды 0x80, 0x81, 0x82, 0x83, дополнительный код команды находится в поле reg байта MODRM) с непосредственным операндом имеют короткую форму, в которой непосредственный операнд расширяется (или не расширяется) со знаком до размера операнда получателся. Второй (начиная с единицы) бит в коде команды отвечает за размножение знака. 'add eax, 0x1', например, кодируется как '83 C0 01'.
Mika0x65 Вроде (я могу ошибаться) короткие формы существуют только при обращении к регистрам и то не ко всем (eax точно, остальные не знаю, например: "mov dword [eax],0" будет короткой), а с памятью вроде коротких нет. Можно пример 3-хбайтовой "add dword [mem],0"? (16 бит)
Раз речь идёт про dword, по умолчанию подразумевается 32-битный режим. В 16-битном режиме всюду добавляется префикс 66h, а кое-где и 67h. Имелось в виду сравнение двух команд - получается разница в 3 байта за счёт того, что в первом случае непосредственное значение 0 кодируется как байт, а во втором - как dword. Если abc = регистр, отличный от ebp и esp (типа add dword [eax],0), тогда действительно 3 байта против 6. Если abc = адрес переменной в памяти, то в обоих случаях добавляется 4 байта (2 в 16-битном режиме) на хранение этого адреса и получается 7 байт против 10.
Ra!N, речь идет о коротком и длинном непосредственных операндах в инструкциях, отличных от инструкции загрузки константы (mov reg/mem, CONST), например, add mem, SHORT CONST (-128...127) может занимать на 3 байта меньше, чем аналогичная add mem, CONST, где CONST не попадает в указанный диапазон.
...Но ты, видимо, об этом не знал, потому что, например, add reg, SHORT CONST обычно занимает именно 3 байта!
...Зы, а даймонд показал пример обращения к памяти с прямой адресацией, но говорил о 3 байтах, подразумевая обращение к регистрам или к памяти с использованием косвенной регистровой адресации без дополнительных смещений.