当前位置:网站首页>gnu汇编-基本数学方程-乘法

gnu汇编-基本数学方程-乘法

2020-11-10 08:45:34 osc_uie90flw

简介

乘法运算是整数运算中很重要的一种运算。和加法和减法运算不一样的是,乘法运算对于有符号整数和无符号整数运算符是不一样的。

使用mul进行无符号运算

MUL命令用于将两个无符号的整数相乘。MUL乘法如下所示:

mul source

其中source可以是8位的,也可以是16位的,也可以是32位的。
这里source是被乘数,而乘数的值来源于EAX寄存器。

实例:

.code32
.section .data
data1:
    .int 10
data2:
    .int 20
answer:
    .quad 0
output:
    .asciz "The result is %qd\n"
.section .text
.globl _start
_start:
    nop
    movl data1,%eax
    mull data2
    movl %eax, answer
    movl %edx,answer+4
    pushl %edx
    pushl %eax
    pushl $output
    call printf
    add $12,%esp
    pushl $0
    call exit
as -o multest.o multest.s -gstabs --32
ld -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o multest -L/lib -lc multest.o

结果最终放在了EDX和EAX组合起来的8字节内容,其中EDX是存放结果的高位,EAX存放结果的低位。

使用imul进行有符号运算

版权声明
本文为[osc_uie90flw]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/4274857/blog/4710496