首页 > 试题

汇编inc

更新时间:2022-12-08 06:06:05 阅读: 评论:0

考试冲刺海报-rounddown


2022年12月8日发(作者:儿科医院医生一般不说的秘密)

汇编编写正弦函数思路

⽂章⽬录

⼀、⽤C语⾔写正弦函数代码

#include

#include

voidmain()

{

floatx,sum,a,b;//sum代表和,a为分⼦,b为分母

chars;

printf("pleainputx");

scanf("%f",&x);

s=1;

sum=0;

a=x;//分⼦赋初值

b=1;//分母赋初值

for(inti=1;a/b>=1e-6;i++)//精确到0.000001

{

sum=sum+s*a/b;//累加⼀项

a=a*x*x;//求下⼀项分⼦x的3,5,7次⽅

b=b*2*i*(2*i+1);//求下⼀项分母1*2*3,1*2*3*4*5,1*2*3*4*5*6*7

s*=-1;

}

printf("sum=%fn",sum);

}

⼆、再翻译为汇编

.data

;定义变量

.code

mainPROC

movecx,6;循环6次,循环越多,越准确

fldcyy118

L1:

;sum=sum+s*a/b

callgetfenzi;获得分⼦

callgetfenmu;获得分母

callFan;乘除-1

loopL1

fldsum

callWriteFloat

getfenziproc

;a=a*x*x;;获得分⼦

getfenziendp

getfenmuproc

;b=b*2*i*(2*i+1);获得分母

getfenmuendp

Fanproc

;s*=-1;乘除-1

Fanendp

mainENDP

ENDmain

其他整形例⼦

;shl乘法4*36=4*2^5+4*2^2

.data

.code

mainPROC

moveax,4

movebx,eax

shleax,5

shlebx,2

addeax,ebx

callWriteInt

mainENDP

ENDmain

;mul乘法⽆符号化3*3

.data

cyy1181DWORD3h

cyy1182DWORD3h

.code

mainPROC

moveax,cyy1181

movebx,cyy1182

mulebx

callWriteInt

mainENDP

ENDmain

;imul乘法有符号化2*-3乘ebx放⼊eax中

.data

cyy1181DWORD2h

cyy1182DWORD-3h

.code

mainPROC

moveax,cyy1181

movebx,cyy1182

imulebx

callWriteInt

mainENDP

ENDmain

;div除法⽆符号化4/2

.data

cyy1181QWORD8h

cyy1182DWORD2h

.code

mainPROC

movedx,DWORDPTRcyy1181+4

moveax,DWORDPTRcyy1181

divcyy1182

callWriteInt

mainENDP

ENDmain

;idiv除法有符号化4/2

.data

cyy1181SDWORD100

cyy1182DWORD-2

.code

mainPROC

moveax,cyy1181

cdq

movebx,cyy1182

idivebx

callWriteInt

mainENDP

ENDmain

其他浮点型例⼦

.data

mainENDP

ENDmain

;32位浮点数I/O测试()

.data

firstREAL8123.456

condREAL810.0

thirdREAL8?

.code

mainPROC

finit;初始化FPU

;两个浮点数⼊栈,并显⽰FPU堆栈.

fldfirst

fldcond

callShowFPUStack

;输⼊两个浮点数,并显⽰它们的乘机

mWrite"Pleaenterarealnumber:"

callReadFloat

mWrite"Pleaenterarealnumber:"

callReadFloat

fmulST(0),ST(1);相乘

mWrite"Theirproductis:"

callWriteFloat

callCrlf

exit

mainENDP

ENDmain

.code

mainPROC

其他浮点型例⼦

.data

var1real83.0;

var2real80.0;

.code

mainPROC

fldvar1;⼊栈st(0)=var1

fldvar2;⼊栈st(0)=var2,st(1)=var1

fmulst(1),st(0);st(0)=var1*var2,st(1)=var1

;减法、乘法、除法将fmul换成fsub、fadd、fdiv.

callWriteFloat;打印

callShowFPUStack;打印

mainENDP

ENDmain

.data

var1real83.0;输⼊

var2real80.0;分⼦

.code

mainPROC

fldvar1;⼊栈st(0)=var1

fldvar2;⼊栈st(0)=var2,st(1)=var1

fmulpst(1),st(0);st(0)=var1*var2

;减法、乘法、除法将fmulp换成fsubp、faddp、fdivp.

callWriteFloat;打印

callShowFPUStack;打印

mainENDP

ENDmain

.data

var1real83.0;输⼊

var2real80.0;分⼦

.code

mainPROC

fldvar1;⼊栈st(0)=var1

fstpvar2;去浮点数ST(0)到var2,var2=var1,执⾏出栈操作st()为空

callWriteFloat;打印

callShowFPUStack;打印

mainENDP

ENDmain

本文发布于:2022-12-08 06:06:05,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/88/64249.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:高斯单位
下一篇:斋读音
标签:汇编inc
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图