ルーチン長くなるんでマクロ風にまとめたけど、概略はわかるでしょ。ミソは sbb edx, edx / and edx, ecx ね。
ただし、レジスタリネームの障害になるような処理(シフトを1個にまとめた)してるんで、P4とかじゃ、
かなーリ遅いと思われ。Z80とか向けかなぁ。他のCPUで挑戦してみてちょ。