一.加减—— add / sub
add %eac,%eax
eac 和 eax 寄存器的值相加,结果存到 eax 寄存器中
二.乘 —— imul / mul (带符号/无符号)
Ps:i —— integer 整数包括正负数,故表示带符号数的乘法
1. 单操作数:mulb %BL
BL (8位)寄存器和AL (8位)寄存器的值相乘,结果保存在 AX (16位)寄存器
单操作数时,隐藏了操作数和保存结果的地方
当 16 位 乘 16 位 时 , 结 果 的 高 16 位 保 存 在 D X 寄 存 器 , 低 16 位 保 存 在 A X 寄 存 器 \color{green}{ 当16位乘16位时,结果的高16位保存在DX寄存器,低16位保存在AX寄存器} 当16位乘16位时,结果的高16位保存在DX寄存器,低16位保存在AX寄存器
当 32 位 乘 32 位 时 , 结 果 的 高 32 位 保 存 在 E D X 寄 存 器 , 低 32 位 保 存 在 E A X 寄 存 器 \color{green}{ 当32位乘32位时,结果的高32位保存在EDX寄存器,低32位保存在EAX寄存器} 当32位乘32位时,结果的高32位保存在EDX寄存器,低32位保存在EAX寄存器
2. 双操作数:mull $16,%ecx
立即数16和ecx寄存器相乘,结果保存在ecx寄存器中(保存结果的寄存器可自行指定)
3. 三操作数:mull $16,$15,%ecx
立即数16乘立即数15,结果保存在ecx寄存器中
Ps:Intel的汇编格式与AT&T的有所不同,Intel保存结果的寄存器在最左边而AT&T是在最右边
三:除——DIV / IDIV
和乘法是一致的规则,隐藏的寄存器也是一样~