您的位置:首页 > 其它

CDQ+乘除指令: MUL、IMUL、DIV、IDIV

2012-06-08 11:06 316 查看
CDQ:双字扩展,把EAX中的符号位扩展到EDX中去,

MUL: 无符号乘

;影响 OF、CF 标志位

;指令格式:

;MUL r/m ;参数是乘数

;如果参数是 r8/m8, 将把 AL 做乘数, 结果放在 AX

;如果参数是 r16/m16, 将把 AX 做乘数, 结果放在 EAX

;如果参数是 r32/m32, 将把 EAX 做乘数, 结果放在 EDX:EAX

IMUL: 有符号乘

;影响 OF、CF 标志位

;第一种指令格式:

;IMUL r/m ;单操作数

;如果参数是 r8/m8, 将把 AL 做乘数, 结果放在 AX

;如果参数是 r16/m16, 将把 AX 做乘数, 结果放在 EAX

;如果参数是 r32/m32, 将把 EAX 做乘数, 结果放在 EDX:EAX

;以上这些都是和 MUL 一样的, 只是运算结果有时一样、有时不一样.

;IMUL 还有另外两种指令格式:

;IMUL r16/r32, r16/r32/m16/m32/ ;双操作数, (1)*(2) -> (1)

;IMUL r16/r32, r16/r32/m16/m32, i ;三操作数, (2)*(3) -> (1)

;其中常数 i 的位数可以 <= 但不能 > 其他操作数

DIV、IDIV: 无符号除、有符号除

;它们没有定义对 EFLAGS 的影响

;它们的指令格式:

;DIV r/m ;参数是除数

;如果参数是 r8/m8, 将把 AX 做被除数; 商 -> AL, 余数 -> AH

;如果参数是 r16/m16, 将把 DX:AX 做被除数; 商 -> AX, 余数 -> DX

;如果参数是 r32/m32, 将把 EDX:EAX 做被除数; 商 -> EAX, 余数 -> EDX

IDiV:带进位除法。被除数是:EDX:EAX,除数是ECX
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: