关于浮点数的 fld、fadd、fstp 汇编指令介绍

文章目录

FLD, FADDFSTP 常在一起出现,用于 float 运算。组合实现浮点数的加载、加法运算和保存

FLD

FLD 指令用于将 浮点数 从内存加载到浮点寄存器栈(FPU Stack)中。它的使用方式如下:

FLD <源内存地址>

<源内存地址> 是包含浮点数的内存地址。
FLD 指令会将该浮点数加载到 FPU Stack 的顶部。

FADD

FADD 指令用于执行两个浮点数的加法运算,并将结果存储在 FPU Stack 的顶部。它有多种使用方式,其中之一是:

FADD <目标内存地址>

<目标内存地址> 是一个包含另一个浮点数的内存地址。
FADD 指令会将 FPU Stack 顶部的浮点数与该内存地址中的浮点数相加,并将结果存储在 FPU Stack 顶部。

FSTP

FSTP 指令用于将 FPU Stack 顶部的浮点数弹出,并将其存储到指定的内存地址中。它的使用方式如下:

FSTP <目标内存地址>

<目标内存地址> 是一个内存地址,用于存储弹出的浮点数。

通过这些指令的组合,可以在 FPU Stack 中加载浮点数、执行加法运算,并将结果保存到内存中。以下是一个示例代码片段,展示了这些指令的使用:

section .data
    num1 dd 3.14
    num2 dd 2.71
    result dd 0.0

section .text
    global _start

_start:
    ; 将 num1 加载到 FPU Stack
    FLD dword [num1]
    ; 将 num2 加载到 FPU Stack
    FLD dword [num2]
    ; 执行加法运算
    FADD
    ; 将结果保存到 result 变量
    FSTP dword [result]

    ; 程序退出
    mov eax, 1
    xor ebx, ebx
    int 0x80

num1num2 是待加的两个浮点数,result 是保存结果的变量。

首先,FLD 指令将 num1num2 加载到 FPU Stack 中

然后 FADD 执行加法运算,最后 FSTP 将结果保存到 result 中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值