Цитата(mmor @ Dec 9 2013, 15:14)

Ну и еще вопрос по умножению целого на целое.
скажем 0A0Bh x 000Ch = 7884h.
При этом дизасемблер показывает, что умножение происходит по такому алгоритму:
(00x0B)+(0Cx0A) - это младший байт
(0Сx0B) - старший байт результата умножения.
Может кто объяснить откуда такой алгоритм взялся?
Вы попутали младший и старший байты результата.
пусть a=0x0A, b=0x0B, c=0x00, d=0x0C
тогда 0x0A0B = (a * 256 + b ), 0x000C = (c * 256 + d)
0x0A0B * 0x000C = (a * 256+b ) * (c * 256 + d) =
a * 256 * c * 256 + b * c * 256 + a * 256 * d + b * d =
(a * c) * 256^2 + (b * c + a * d) * 256 + b * d
-----------------
(a*c)*256^2 вылезло за разрядную сетку int, его нужно отбрасывать и можнго не считать
(b*c+a*d)*256 - дают старший байт (b*c+a*d), или 0x0B*0x00 + 0x0A*0x0C
b*d - младший байт, или 0x0B * 0x0C
Никакого мошенничества.