关于罗云彬第7章时钟程序坐标计算的分析

原创 2008年10月03日 09:50:00
 

本来我已进行到第八章,可是有些问题还要向前查找,这一查就发现了很多问题,如第203页程序的子程序计算时钟圆周上某个角度对应的X坐标  X=圆心X+Sin(角度)*半径

_dwPara180       dw   180

 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

_CalcX           proc       _dwDegree,_dwRadius

       local       @dwReturn

       fild       dwCenterX

       fild       _dwDegree

       fldpi

       fmul

       fild       _dwPara180

       fdivp       st(1),st

       fsin

       fild       _dwRadius

       fmul

       fadd

       fistp       @dwReturn

       mov       eax,@dwReturn

       ret

_CalcX           endp

 

发现问题了,现在我把FPR八个通用数据寄存器中的内容演示一下:

 

 

 

从这时算的结果就不一样了fadd的结果是st(0)的内容是dwRadius*sin(PI*_dwDegree/180)+sin(PI*_dwDegree/180),不和书上一样了。

我把书上的程序用OllyDBG编译了一下,结果发现

 

 

发灰的地方就是程序_CalcX程序的内容,这和源程序不一样。fmul变成了fmulp st(1),st

fadd变成了faddp st(1),st  ,其它都一样。

接着在一本国外的教材上看到了对无参数浮点运算的如下解释:fmul (none) ; pops ST and ST(1), multiplies them and pushes to stack.

fdiv (none) ; pop ST and ST(1), calculates ST(1)/ST pushes quotient onto th estack

fsub (none) ; pops ST and ST(1), calculates ST(1)-ST; and pushes the difference into the stack

fadd (none)       ;pops both ST and ST(1), adds these values and pushes the sum onto the stack top

这样来说fadd可以解释为faddp st(1),st

fmul可解释为fmulp st(1),st

这下就全明白了。

所以这段程序栈内的内容可以演示如下:

 

 

 

 

@dwReturtn中存dwCenterX+_dwRadius*sin(PI*_dwDegree/180)值。

 

10个小故事(转自罗云彬的编程乐园)

1、陈阿土    陈阿土是台湾的农民,从来没有出过远门。攒了半辈子的钱,终于参加一个旅游团出了国。国外的一切都是非常新鲜的,关键是,陈阿土参加的是豪华团,一个人住一个标准间。这让他新奇不已。早晨,服...
  • u014717036
  • u014717036
  • 2014年10月14日 19:28
  • 1143

Win32汇编学习笔记(罗云彬)(一)

1.80x86处理器的3种工作模式:实模式、保护模式和虚86模式 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ;待整理 ;>>>>>>...
  • kisbuddy
  • kisbuddy
  • 2011年08月09日 14:09
  • 1870

欢迎来到罗云彬的编程乐园!

http://211.90.225.98:22366/index.asp
  • chaome712
  • chaome712
  • 2005年03月29日 09:42
  • 5469

罗云彬Win32汇编

今天看了下罗老师的Win32汇编,感觉跟DOS下汇编的确差别比较大。         感觉Win32汇编好像有高级语言的味道,实现方式是通过加载Windows的DLL库,程序书写方式也跟C语言比较相...
  • yyjbluesword
  • yyjbluesword
  • 2012年07月14日 17:30
  • 2248

《Windows环境下32位汇编语言程序设计(罗云彬)》下载地址

《Windows环境下32位汇编语言程序设计(罗云彬)》  电子书PDF+光盘内容 下载地址...
  • n0noper
  • n0noper
  • 2016年04月19日 16:35
  • 803

我是如何从汇编语言脑残粉转变的

我最早接触汇编语言可以追溯到裕兴学习机那一阵。当时裕兴在推出了浮点BASIC和游戏BASIC之后还不过瘾,觉得还能更深一步挖掘机器的潜力,结果推出了6502汇编语言的磁碟。我当时第一时间买了,磁碟还附...
  • mydo
  • mydo
  • 2014年08月31日 11:03
  • 8960

水波效果(非DLL调用)

水波效果(非DLL调用)。
  • all77889900
  • all77889900
  • 2010年08月23日 16:35
  • 570

看的一篇关于汇编学习建议的文章

一.16位汇编语言 王爽 汇编语言 《80x86汇编语言程序设计教程》杨季文编著,清华黑皮本。本书可以当作进一步深入学习的教材 《The Art of Assembly Language》...
  • zhb_51666
  • zhb_51666
  • 2014年10月16日 17:33
  • 639

很牛逼的计算机书籍

1、Java   Java编程语言(第三版)---Java四大名著----James Gosling(Java之父)  Java编程思想(第2版)----Java四大名著----Bruce Eckel...
  • houjinfeng210
  • houjinfeng210
  • 2010年10月08日 19:59
  • 5233

70后游戏辅助开发程序猿的人生路(二)

回到家乡省会后一个做通信设备代理商的朋友,通过社会关系结识了省移动公司管理设备采购招标的高层,和移动公司签署了3年供货合同。于是我就去他公司上班了,主要工作内容就是负责带领公司技术团队,在全省移动公司...
  • u010154462
  • u010154462
  • 2017年02月14日 23:43
  • 302
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于罗云彬第7章时钟程序坐标计算的分析
举报原因:
原因补充:

(最多只允许输入30个字)