这些公式都可以计算出来:
行字节数 = (宽度 * (位深/8) + 3) & ~3
位与 (宽度 × 位深 ÷ 8 + 3, 位取反 (3))
左移 (右移 (宽度 × 位深 + 31, 5), 2)
易代码
.版本 2
.子程序 对齐, 整数型
.参数 待对齐数, 整数型
.参数 对齐长度, 整数型, , 1 2 4 8 16 32 64 ...
对齐长度 = 逆向位扫描 (对齐长度)
.如果真 (对齐长度 > 0)
对齐长度 = 左移 (1, 对齐长度) - 1
返回 (位与 (待对齐数 + 对齐长度, 位取反 (对齐长度)))
.如果真结束
返回 (待对齐数)
.子程序 逆向位扫描, 整数型
.参数 待扫描数, 整数型
置入代码 ({ 15, 189, 69, 8, 201, 194, 4, 0 })
' 十六进制:0F BD 45 08 C9 C2 04 00
' bsr eax, dword ptr [ebp+08h]
' leave
' retn 4
返回 (0)