当前位置: 代码迷 >> 汇编语言 >> 关于罗云彬的例题时钟程序解决方法
  详细解决方案

关于罗云彬的例题时钟程序解决方法

热度:275   发布时间:2016-05-02 04:43:51.0
关于罗云彬的例题时钟程序
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 按照 _dwDegreeInc 的步进角度,画 _dwRadius 为半径的小圆点
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_DrawDot proc _hDC,_dwDegreeInc,_dwRadius
local @dwNowDegree,@dwR
local @dwX,@dwY

mov @dwNowDegree,0
mov eax,dwRadius
sub eax,10
mov @dwR,eax
.while @dwNowDegree <= 360
finit

      全文就这一处出现_dwDegreeInc ..这是什么意思..有什么具体的意义吗。。
------解决方案--------------------
看 _ShowTime 子程里的这两句,应该明白吧
	invoke	_DrawDot,_hDC,360/12,3	;画12个大圆点
invoke _DrawDot,_hDC,360/60,1 ;画60个小圆点

------解决方案--------------------
我也刚学到这里,这是定义函数的一种方法,_hDC和_dwDegreeInc还有_dwRadius就是函数的三个参数。就像C语言里定义函数后的零时变量一样,用到这个函数直接替换就行了。起这个名字容易记一些!可以看看第三章末匈牙利命名法!
_DrawDot    proc    _hDC,_dwDegreeInc,_dwRadius
        local    @dwNowDegree,@dwR
        local    @dwX,@dwY
 
        mov    @dwNowDegree,0
        mov    eax,dwRadius
        sub    eax,10
        mov    @dwR,eax
        .while    @dwNowDegree <=    360
            finit
;********************************************************************
; 计算小圆点的圆心坐标
;********************************************************************
            invoke    _CalcX,@dwNowDegree,@dwR
            mov    @dwX,eax
            invoke    _CalcY,@dwNowDegree,@dwR
            mov    @dwY,eax
 
            mov    eax,@dwX    ;画点
            mov    ebx,eax
            mov    ecx,@dwY
            mov    edx,ecx
            sub    eax,_dwRadius
            add    ebx,_dwRadius
            sub    ecx,_dwRadius
            add    edx,_dwRadius
            invoke    Ellipse,_hDC,eax,ecx,ebx,edx
 
            mov    eax,_dwDegreeInc
            add    @dwNowDegree,eax
        .endw
        ret
 
_DrawDot    endp
  相关解决方案