Если бы было 256, 65536, то всё было бы понятно для 65536 Код (Text): mov ebx, 0; mov eax, in; mov bx,ax; mov out,ebx; А вот это три байта, как их "вытащить" из четырёхбайтного регистра?
Код (Text): #include <stdio.h> int main() { int input,output; scanf("%i", &input); __asm { mov output,0; mov eax,[input] mov word ptr [output],ax mov al, byte ptr [input+2] mov byte ptr [output+2],al } printf("%i",output); return 0; }
Antolflash - и что? Или тебе не нравится что старший байт не обнуляется? Замени на Код (Text): mov eax,[input] mov [output],ax mov ax,0 mov al,[input+2] mov [output+2],ax И откуда вообще требование использовать только mov? С использованием and можно гораздо лучше сделать.
mov eax, 0 mov ax,[input] mov [output],eax mov al,[input+2] mov [output+2],al тогда уж так. так хот только две задержки возникнет (при использовании префикса и обращении к младшей части расширенного регистра), а не 5