浮点数汇编指令集

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

IEEE浮点标准用V=(-1)s*Me的形式来表示一个数:
符号(sign)s决定数是负数(s=1)还是正数(s=),对于数值0的符号位解释作为特殊情况处理。
有效数(significand)M是一个二进制小数,它的范围在1~2-E之间,或者在0~1-E之间。
指数(exponent)e是2的幂(可能是负数),它的作用是对浮点数加权。
浮点数的位表示被划分为三个域,以编码这些值:
一个单位的符号位s直接编码符号s。
n位小数域frac=fn-1...f1f0编码有效位M,但是被编码的值也依赖于指域的值是否等于零。
k位的指数域exp=ek-1...e1e0编码指数e。
在单精度浮点格式中,s.frac和exp域分别为1位.n=32位.k=8位,产生一个32位的表示。在双精度浮点格式中,s.frac.exp域分别为1位.n=52位.k=11位,产生一个64位的表示。


汇编语言浮点数指令集


;////////////////////////////////////////////////////////////////////////////////
;//// 浮点数载入指令
;///////////////////////////////////////////////////////////////////////////////

;助记符 操作数 功能

fld memory(real) ; 将存储器中的实型压人堆栈

fild memory(integer) ;将存储器的整型数值转化为浮点数并压人堆栈

fbld memory(BCD) ;将存储器的BCD码转化为浮点数并压人堆栈

fld st(num) ;将浮点型寄存器中的数值压入堆栈

fld1 (none) ;1.0压人堆栈

fldz (none) ;0.0压人堆栈

fldpi (none) ;Π(pi) 压人堆栈

fldl2e (none) ;log2(e)压人堆栈

fldl2t (none) ;log2(10)压人堆栈

fldlg2 (none) ;log10(2)压人堆栈

fldln2 (none) ;loge(2)压人堆栈

finit (none) ; 初始化浮点型单元,并清空8个寄存器的内容



;////////////////////////////////////////////////////////////////////////////////

;//// 浮点数数据存储指令

;///////////////////////////////////////////////////////////////////////////////

;助记符 操作数 功能

fst st(num) ;复制st的值来替换st(num)的内容;只有st(num)是受到影响

fstp st(num) ;复制st的值来替换st(num)的内容;st出栈

fst memory(real) ;复制st的值为实型数,存入存储器;堆栈不受影响

fstp memory(real) ;复制st的值为实型数,存入存储器;st出栈

fist memory(integer) ;复制st的值,并转换为整型数存入存储器

fistp memory(integer) ;复制st的值,并转换为整型数存入存储器;st出栈

fbstp memory(BCD) ;复制st的值,并转换为BCD码存入存储器;st出栈

fxch (none) ;互换st和st(1)

fxch st(num) ;互换st和st(num)



;///////////////////////////////////////////////////////////////////////////////

;///

浮点型加法指令

;//////////////////////////////////////////////////////////////////////////////

;助记符 操作数 功能

fadd (none) ; 将st和st(1)出栈;将两个值相加;并将它们的和入栈

fadd st(num),st ;将st(num)和st相加;用和替换st(num)

fadd st,st(num) ;将st和st(num)相加;用和替换st

fadd memory(real) ; 将st和存储器中的实型数相加;用和替换st

fiadd memory(integer) ;将st和存储器中的整型数相加,用和替换st

faddp st(num),st ;将st(num)和st相加,用和来替换st(num),将st出栈





;//////////////////////////////////////////////////////////////////////////////

;/// 浮点型 乘法指令

;//////////////////////////////////////////////////////////////////////////////



; 助记符 操作数 功能

fmul (none) ;将st和st(1)出栈;并将它们的值相乘;乘积人栈

fmul st(num),st ;将st(num)和st相乘;用乘积来替换st(num)

fmul st,st(num) ;将st和st(num)相乘;用乘积来替换st

fmul memory(real) ;将st和存储器中的实型数相乘;用乘积来替换st

fimul memory(integer) ;将st和存储器中的整型数相乘,用乘积来替换st

fmulp st(num),st ;将st(num)和st相乘;乘积来替换st(num);并将st出栈





;助记符 操作数 功能

fsub (none) ;将st和st(1)出栈,计算st(1)减st的值;将差入栈

fsub st(num),st ;计算st(num)减st的值;用差值替换st(num)

fsub st,st(num) ;计算st减st(num)的值;用差值来替换st

fsub memory(real) ;计算st减存储器中的实型数的值;用差值来替换st

fisub memory(integer) ;计算st减存储器中的整型数的值;用差值替换st

fsubp st(num),st ; 计算st(num)减st的值;用差值替换st(num);将st出栈

fsubr (none) ;将st和st(1)出栈;计算st减st(1)的 值;将差值入栈

fsubr st(num),st ; 计算st减st(num)的值,用差值替换st(num)

fsubr st,st(num) ; 计算st(num)减st的值,用差值来替换st

fsubr memory(real) ; 计算存储器中的实型数值减st的值,用差值替换st

fisubr memory(integer) ;计算存储器中的整型数值减st的值;用差值替换st

fsubrp st(num),st ;计算st减st(num)的值,用差值替换st(num);将st出栈



;//////////////////////////////////////////////////////////////////////////////

;/// 浮点型除法指令

;//////////////////////////////////////////////////////////////////////////////

;助记符 操作数 功能

fdiv (none) ;将st和st(1)出栈;计算st(1)/st的值;并将商入栈

fdiv st(num),st ;计算st(num)/st的值;用商来替换st(num)

fdiv st,st(num) ;计

算st/st(num)的值;用商来替换st

fdiv memory(real) ;计算st/存储器中的实型数;用商来替换st

fidiv memory(integer);计算st/存储器中的整型数;用商来替换st

fdivp st(num),st ;计算st(num)/st的值;用商来替换st(num);并将st出栈

fdivr (none) ;将st和st(1)出栈;计算st/st(1)的值;并将商入栈

fdivr st(num),st ;计算st/st(num)的值;用商来替换st(num)

fdivr st,st(num) ;计算st(num)/st的值;用商来替换st

fdivr memory(real) ;计算存储器中的实型数/st;商来替换st

fidivr memory(integer);计算存储器中的整型数/st;用商来替换st

fdivrp st(num),st ;计算st/st(num)的值,用商来替换st(num);并将st出栈



;//////////////////////////////////////////////////////////////////////////////

;/// 附 加的浮点型指令

;/////////////////////////////////////////////////////////////////////////////

; 助记符 操作数 功能

fabs (none) ;st := |st|(绝对值)

fchs (none) ;st := -st(相反数)

frndint (none) ;对st取整

fsqrt (none) ;用st的平方根来替换st



;/////////////////////////////////////////////////////////////////////////////

;/// 浮点型比较指令

;////////////////////////////////////////////////////////////////////////////

;助记符 操作数 功能

fcom (none) ;比较st和st(1)

fcom st(num) ;比较st和st(num)

fcom memory(real) ;比较st和存储器中的实型数

ficom memory(integer) ;比较st和存储器中的整型数

ftst (none) ;比较st和0.0

fcomp (none) ;比较st和st(1);然后出栈

fcomp st(num) ;比较st和st(num);然后出栈

fcomp memory(real) ;比较st和存储器中的实型数;然后出栈

fcomp memory(integer) ;比较st和存储器中的整型数;然后出栈

fcompp (none) ;比较st和st(1);然后两次出栈



;////////////////////////////////////////////////////////////////////////////

;/// 混 合浮点型指令

;////////////////////////////////////////////////////////////////////////////

;助记符 操作数 功能

fstsw memory WORD ;复制状态寄存器到存储器字

fstsw ax ;复制状态寄存器到ax寄存器

fstcw memory WORD ;复制控制字寄存器到存储器

fldcw memory WORD ;复制存储器字到控制字寄存器

相关文档
最新文档