栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

宏汇编以及浮点程序设计实验,求(1+2+3+4+5+6+7+8+9)*[1/(2*PI*Sqrt(L*C))]的和,查看内存写出其值

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

宏汇编以及浮点程序设计实验,求(1+2+3+4+5+6+7+8+9)*[1/(2*PI*Sqrt(L*C))]的和,查看内存写出其值

具体实现函数,注释已经给出。

.686
.387
.model flat, stdcall
option casemap : none

include windows.inc
include kernel32.inc
include user32.inc

includelib kernel32.lib
includelib user32.lib


.data
	Table EQU  THIS BYTE;//宏定义 定义了9个初值分别为1,2,3,4...9的字节单元,Table为这些字节单元的首地址
	COUNT = 1
	REPT 9
	DB COUNT
	COUNT = COUNT + 1
	ENDM

	F     REAL4 ?
	T     DW ? ; //临时变量Temp,用于存放1+2+3...+9的值,并从整形转换成实数类型的跳板
	L1    REAL4 0.000001
	C1    REAL4 0.000001
	TWO   REAL4 2.0
	ONE   REAL4 1.0
	ZERO  REAL4 0.0
	_size DW 80

.code
start:
	MOV CX, 9;//设置循环次数
	FLD ZERO;//给栈顶置零
	LEA ESI, Table;//把DS:Table的偏移地址给ESI,用于寄存器间接寻址
sum:
	CMP CX, 0
	JE calculation;//如果CX为零则跳转到calculation段
	MOV AX, 0
	MOV AL, [ESI]
	MOV T, AX
	FILD T;//FILD指令将16位 32位或者64位有符号整数源操作数转换为双精度浮点数,并加载到ST(0)。源操作数符号保留。FILD支持的内存操作数类型和MOV一致
	FADD
	ADD ESI, 1
	LOOP sum;//本来这句是CX为零就不执行跳转的语句,但是不知道为什么没有实现????
calculation:
	FSTP ST(2)
	FLD  L1; //将L1入栈
	FMUL C1; //ST < -(C1) * (ST)
	FSQRT; //ST < -sqrt(ST)
	FMUL TWO; //ST < -(TWO) * (ST)
	FLDPI; //ST < -PI
	FMUL;//ST<-ST(1)*ST
	FLD ONE;//ST <- 1
	FDIVR;//ST <- ST/ST(1)
	FLD ST(2)
	FMUL 
	FSTP F;//F<-ST
	invoke ExitProcess,NULL
end start

调试结果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/311723.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号