中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 看雪学院专区 > Win32/Win64编程
浮点运算指令一例(用海伦公式计算三角形的面积)
作者:佚名 时间:2006-12-15 14:07 出处:pediy.com 责编:月夜寒箫
              摘要:浮点运算指令一例(用海伦公式计算三角形的面积)
下面是关于浮点运算指令方面的一例,程序对三角形的面积和周长进行了计算!!!
.386
.model flat, stdcall  ;32 bit memory model
option casemap :none  ;case sensitive

include m1.inc

.code

start:

  invoke GetModuleHandle,NULL
  mov    hInstance,eax

    invoke InitCommonControls
  invoke DialogBoxParam,hInstance,IDD_DIALOG1,NULL,addr DlgProc,NULL
  invoke ExitProcess,0

;########################################################################

DlgProc proc hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM

  mov    eax,uMsg
  .if eax==WM_INITDIALOG

  .elseif eax==WM_COMMAND
             .if wParam==IDC_OK
               invoke GetDlgItemText,hWin,IDC_A,addr lpA,sizeof lpA ;得到边长a
               invoke FpuAtoFL,addr lpA,0,DEST_FPU;转化为数值
               invoke GetDlgItemText,hWin,IDC_B,addr lpB,sizeof lpB
               invoke FpuAtoFL,addr lpB,0,DEST_FPU
               invoke GetDlgItemText,hWin,IDC_C,addr lpC,sizeof lpC
               invoke FpuAtoFL,addr lpC,0,DEST_FPU
                fld st(0)    ;判定所输入数据是否是三角形
                fld st(2)
                fadd
                fcomp st(3)
                fstsw  ax       ; 将状态字保存
                and eax,100000000B  ;;测试状态字的第9位,若为1则说明两边之和小于了第三边
                jnz ErrorHandle                  fld st(0)
                fld st(3)
                fadd
                fcomp st(2)
                fstsw  ax
                and eax,100000000B
                jnz ErrorHandle  
                fld st(1)
                fld st(3)
                fadd
                fcomp st(1)
                fstsw  ax
                and eax,100000000B
                jnz ErrorHandle     ;判定结束
                fadd ;边长相加
               fadd ;边长相加
               invoke FpuFLtoA,0,4,addr lpL,SRC1_FPU or SRC2_DIMM
               invoke SetDlgItemText,hWin,IDC_L,addr lpL
               fild LTWO
               fdiv
               fld st(0)
               invoke FpuAtoFL,addr lpA,0,DEST_FPU
               fsub
               fld st(1)
               invoke FpuAtoFL,addr lpB,0,DEST_FPU
               fsub
               fld st(2)
               invoke FpuAtoFL,addr lpC,0,DEST_FPU
               fsub
               fmul
               fmul
               fmul
               fsqrt
               invoke FpuFLtoA,0,4,addr lpS,SRC1_FPU or SRC2_DIMM
               invoke SetDlgItemText,hWin,IDC_S,addr lpS
               ret
               ErrorHandle:
               invoke MessageBox,hWin,addr lpMessage,NULL,MB_OK and MB_ICONERROR
               ret




             .endif
  .elseif eax==WM_CLOSE
    invoke EndDialog,hWin,0
  .else
    mov    eax,FALSE
    ret
  .endif
  mov    eax,TRUE
  ret

DlgProc endp

end start

下面是inc文件的内容;


include windows.inc
include kernel32.inc
include user32.inc
include Comctl32.inc
include shell32.inc
include fpu.inc
includelib fpu.lib
includelib kernel32.lib
includelib user32.lib
includelib Comctl32.lib
includelib shell32.lib

DlgProc      PROTO  :HWND,:UINT,:WPARAM,:LPARAM

.const

IDD_DIALOG1      equ 101
IDC_A        equ 1003
IDC_B        equ 1004
IDC_OK        equ 1005
IDC_C        equ 1006
IDC_S        equ 1008
IDC_L        equ 1010
LTWO dw 2
lpMessage db "不是三角形",0
;#########################################################################
.data?
hInstance      dd ?
lpA db 10 dup(?)
lpB db 10 dup(?)
;#########################################################################
lpC db 10 dup(?)
lpL db 10 dup(?)
lpS db 10 dup(?)
附件是全部的源程序!!!
所上传文件
m1.rar (上传时间2006-03-11,08:42,6.5 KB,39 次点击)
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有