汇编 浮点指令FLD,FSTP,FADD与FPU寄存器

知识点:
? 浮点数的存放方式
? st0至st7
? FLD,FST,FADD指令

一、浮点数的存放方式
00401000  /$  55            PUSH EBP
00401001  |.  8BEC          MOV EBP,ESP
00401003  |.  51            PUSH ECX                                 ;  float f;
00401004  |.  D905 F0204000 FLD DWORD PTR DS:[4020F0]                ;  8.765
0040100A  |.  D95D FC       FSTP DWORD PTR SS:[EBP-4]
0040100D  |.  D945 FC       FLD DWORD PTR SS:[EBP-4]
00401010  |.  DC05 E8204000  FADD QWORD PTR DS:[4020E8]               ;  1.0
00401016  |.  D95D FC       FSTP DWORD PTR SS:[EBP-4]                ;  f=9.765
00401019  |.  33C0          XOR EAX,EAX
0040101B  |.  8BE5          MOV ESP,EBP
0040101D  |.  5D            POP EBP
0040101E  \.  C3            RETN

 二、st0至st7 浮点寄存器

 三 FLD,FSTP,FADD指令
FLD类似于   PUSH指令
FSTP类似于  POP指令
FADD类似于  ADD指令
时间: 2024-11-04 19:00:47

汇编 浮点指令FLD,FSTP,FADD与FPU寄存器的相关文章

汇编浮点指令

浮点数如何存储 浮点寄存器 浮点数指令 浮点计算例子 浮点高级运算 CMOV移动指令 浮点数如何存储 浮点数的运算完全不同于整数,从寄存器到指令,都有一套独特的处理流程,浮点单元也称作x87 FPU. 现在看浮点数的表示方式,我们所知道的,计算机使用二进制存储数据,所表示的数字都具有确定性,那是如何表示浮点这种具有近似效果的数据呢,答案是通过科学计数,科学计数由符号,尾数和指数表示,这三部分都是一个整数值,具体来看一下IEEE二进制浮点标准: 格式 说明 单精度 32位:符号占1位,指数占8位,

【汇编指令】arm指令集之但寄存器数据load/store (加载存储)

数据的传送: LDR              STR                   .WORD LDRB            STRB              .BYTE LDRH             STRH            .HALFWORD LDR 和STR 加载/存储字和无符号字节指令.使用单一数据传送指令(STR 和LDR)来装载和存储单一字节或字的数据从/到内存.LDR指令用于从内存中读取数据放入寄存器中:STR 指令用于将寄存器中的数据保存到内存.指令格式如下

汇编入门学习笔记 (十)—— 标志寄存器

疯狂的暑假学习之  汇编入门学习笔记 (十)--  标志寄存器 参考: <汇编语言> 王爽 第11章 CPU内部有一种特殊的寄存器叫标志寄存器(flag),它与ax,bx,cx等其他寄存器不同,它不是用来存放数据的,而是用来存放状态的.flag寄存器是按位器作用的,即只有0和1. flag寄存器的结构: 15     14    13    12     11     10     9     8     7     6     5     4     3     2     1     0

浮点指令 FADD FSUB FMUL FDIV

1. FADD memvar   //st0 = st0 + memvar;例:   fadd dword ptr ds:[3120fe]   // st0 = st0 + dword ptr ds:[3120fe]; 1. FSUB memvar     // st0 = st0 - memvar;例:   fsub qword ptr ds:[3120fe]   //st0 = st0 - qword ptr ds:[3120fe]; 2. FMUL memvar    //st0 = st

汇编-MOV指令

知识点: ? MOV指令 ? 基址 ? 内联汇编 ? 把OD附加到资源管理器右键菜单 一.MOV指令 aaa=0x889977;//MOV DWORD PTR DS:[0x403018],0x889977 //dword 双字 就是四个字节 ptr pointer缩写 即指针 []里的数据是一个地址值 二.内联汇编 _asm aaa=0x889977;// __asm MOV DWORD PTR DS:[0x403018],0x889977 //不安全的写法 __asm mov aaa,0x88

汇编 LEA 指令

知识点: ? LEA指令 ? &与LEA ? OD里修改汇编代码 一.LEA指令格式 有效地址传送指令 LEA 格式: LEA 操作数A, 操作数B 功能: 将操作数B的有效地址传送到指定的的某个寄存器,操作数A必须是寄存器.(32位系统上就是32位寄存器) 二.C++代码测试 int i; int *p=&i; 三.OD里修改汇编代码 按下空格后 直接输入汇编代码 四.汇编代码测试 int i=0: char a[4]={0}; __asm { lea ebx,i // ebx=&

第六篇:汇编基础指令讲解

目录 基础汇编代码 LDR(load) STR(store) B MOV(move) LDR(注意跟读内存的LDR不一样,格式不同) add(加) sub(减) BL(branch and Link) ldm 和 stm ldmia 和 stmdb CPU,R0~R15图解 基础汇编代码 LDR(load) 读内存 LDR R0,[R1] 假设R1的值=x,读取地址x的数据(4字节)保存到R0中 STR(store) 写内存命令 STR R0,[R1] ? 假设R1的值=x,把R0的值写入到地址

汇编Lea 指令与 Mov 指令

比如你用local在栈上定义了一个局部变量LocalVar,你知道实际的指令是什么么?一般都差不多像下面的样子:     push   ebp     mov   esp,   ebp     sub   esp,   4     现在栈上就有了4各字节的空间,这就是你的局部变量.     接下来,你执行mov   LocalVar,   4,那么实际的指令又是什么?是这样:     mov   dword   ptr   [ebp-4],   4     于是,这个局部变量的“地址”就是ebp

汇编语言:协处理器浮点指令:FILD

协处理器:浮点运算指令: FILD 类型:整数传送指令 指令格式:FILD MemInt             ;ST(0)=MemInt 其中:MemInt是定义为整型数据类型的内存单元,但不能是用BYTE定义的存储单元.下同,不再叙述.