Цитата(zltigo @ Oct 22 2008, 20:18)

1) в ASM ничего бить вообще не надо - все и так доступно, ибо система адресации
позволяет произвольный доступ.
2)написанная ASM вставка есть вещь в себе и использовать ее из С вообще нельзя.
3) Это не для x86 а для 386, как минимум
4) int вообще-то на 386 не двухбайтовый
5) разбили не по байтам а по 32bit
6)movzx не эффективная по производительности команда, посему и насчет быстрый это не так.
1) То что ASM тут не любят я уже понял,
2) В теме нигде не написанно какой компилятор используется.
3) x86 для меня линейка процессоров, про < 386 я даже и не вспоминал,
4) Какого размера int зависит от компилятора и того как её задекларировать,
Например VS C++ иногда использует int для храния 2 байт(16 бит), а long для 4 байт(32 бит),
5) Я тоже разбивал по 32 битным регистрам (ecx, edx).
6) А с этим я могу поспорить,,,
movzx занимает 3 такта, значит
Код
movzx ecx,al
movzx edx,ah
займёт 6 тактов,
Возьмём код который предложил Палыч.
Код
b= A&0xFF;
c= A>>8;
теперь переведём его в asm, получается следующее:
Код
mov ecx,eax; 1 такт
and ecx.0xff; 1 такт
mov edx,eax; 1 такт
shl edx,8 ; 3 такт
По сути получается одно и тоже, но у меня 2 команды, а тут 4, и не нужно забывать что процессору нужно на 2 команды больше обработать,
Инофрмацию я брал от сюда
http://www3.itu.edu.tr/~kesgin/mul06/intel/index.htmlЗа базу я брал 486,
p.s. А вообще, давайте жить дружно!