汇编语言中的乘法与除法操作详解
1. decToUInt 函数的汇编语言实现
decToUInt 函数的汇编语言与 hexToInt 函数的汇编语言类似。主要区别在于:一是使用 imul 指令将累加结果乘以要转换的基数(十进制为 10);二是在将新值添加到累加结果之前,将其类型转换为 32 位整数。
x86 - 64 指令集包含无符号乘法指令 mul 和有符号乘法指令 imul。编译器使用有符号乘法指令将数字文本字符串转换为无符号整数,这看似奇怪,下面我们来详细了解这两条指令。
2. 乘法指令
2.1 imul - 有符号乘法
imul 指令可以有一、二或三个操作数:
- imul reg :将 al、ax、eax 或 rax 中的整数与 reg 中的整数相乘,结果分别存于 ax、dx:ax、edx:eax 或 rdx:rax 中。
- imul mem :将 al、ax、eax 或 rax 中的整数与 mem 中的整数相乘,结果分别存于 ax、dx:ax、edx:eax 或 rdx:rax 中。
- imul reg1, reg2 :将 reg1 中的整数与 reg2 中的整数相乘,结果存于 reg1 中,reg1 和 reg2 可以是同一寄存器。
- imul reg, mem :将 reg 中的整数与 mem 中的整数相乘,结果存于 reg 中。
- imul reg1, reg2, imm :将 reg2 中的整数与立即数 im
超级会员免费看
订阅专栏 解锁全文
4030

被折叠的 条评论
为什么被折叠?



