Assembly 在emu8086中有没有办法计算x^y?(x是整数,y是浮点)

Assembly 在emu8086中有没有办法计算x^y?(x是整数,y是浮点),assembly,floating-point,emu8086,Assembly,Floating Point,Emu8086,我有一个家庭作业,这将是计算PCB跟踪宽度。如何在emu8086中计算此公式?(对不起,我的英语不好) k是一个浮点数,温升是一个整数,b是一个浮点数,c是一个浮点数 您通常会使用f2xm1和fyl2x说明。糟糕的 fld y fild x fyl2x // compute y*log2(x) f2xm1 // compute 2**(y*log2(x)) - 1 (which is x**y - 1) fld1 faddp // top of stack is now

我有一个家庭作业,这将是计算PCB跟踪宽度。如何在emu8086中计算此公式?(对不起,我的英语不好)

k是一个浮点数,温升是一个整数,b是一个浮点数,c是一个浮点数


您通常会使用
f2xm1
fyl2x
说明。糟糕的

fld   y
fild  x
fyl2x    // compute y*log2(x)
f2xm1    // compute 2**(y*log2(x)) - 1 (which is x**y - 1)
fld1
faddp    // top of stack is now x**y
fstp  result

您通常会使用
f2xm1
fyl2x
指令。糟糕的

fld   y
fild  x
fyl2x    // compute y*log2(x)
f2xm1    // compute 2**(y*log2(x)) - 1 (which is x**y - 1)
fld1
faddp    // top of stack is now x**y
fstp  result

Peter Cordes用标签标记了您的问题,但是,根据对此的评论,只能使用8086(无FPU)说明。你的老师允许你使用FPU(8087)指令吗?@PeterCordes我不知道“emu8086”。但根据您自己的回答,“emu8086”模拟的是一台有8086 CPU但没有8087 FPU的机器。所以标签应该是错的…@MartinRosenau:哦,我忘了,我的标签部分是基于答案和问题标题询问如何处理一般的
浮点数
指数这一事实。但是如果
c
是一个整数,那么不需要模拟软件浮点运算,就可以使用整数数学来计算第n个根。似乎初学者emu8086的家庭作业不太可能期望编写软FP例程。@MartinRosenau:我对emu8086也不太了解。我想我曾经在WIINE下加载过一次,但基本上我所知道的关于它的一切都来自于关于它的问答。我一点印象都没有;e、 g.一些奇怪的东西,比如让
mov[si]、1234
以一些默认操作数大小进行汇编,而不是以不明确为由拒绝它,以及其他糟糕的设计选择或内置汇编程序中的错误。而且它是封闭源代码,AFAIK没有被维护/更新。首先感谢你们所有人。我编辑了我的帖子,因为你是对的x87标签对我的问题是错误的。我还用x87指令在互联网上做了一些研究。但是我需要用emu8086做这些计算,没有FPU我怎么处理这个我仍然不知道。但再次感谢。Peter Cordes用标签标记了您的问题,然而,根据对此的评论,只能使用8086(不带FPU)说明。你的老师允许你使用FPU(8087)指令吗?@PeterCordes我不知道“emu8086”。但根据您自己的回答,“emu8086”模拟的是一台有8086 CPU但没有8087 FPU的机器。所以标签应该是错的…@MartinRosenau:哦,我忘了,我的标签部分是基于答案和问题标题询问如何处理一般的
浮点数
指数这一事实。但是如果
c
是一个整数,那么不需要模拟软件浮点运算,就可以使用整数数学来计算第n个根。似乎初学者emu8086的家庭作业不太可能期望编写软FP例程。@MartinRosenau:我对emu8086也不太了解。我想我曾经在WIINE下加载过一次,但基本上我所知道的关于它的一切都来自于关于它的问答。我一点印象都没有;e、 g.一些奇怪的东西,比如让
mov[si]、1234
以一些默认操作数大小进行汇编,而不是以不明确为由拒绝它,以及其他糟糕的设计选择或内置汇编程序中的错误。而且它是封闭源代码,AFAIK没有被维护/更新。首先感谢你们所有人。我编辑了我的帖子,因为你是对的x87标签对我的问题是错误的。我还用x87指令在互联网上做了一些研究。但是我需要用emu8086做这些计算,没有FPU我怎么处理这个我仍然不知道。但再次感谢你。