polevl.asm 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. ; Static Name Aliases
  2. ;
  3. TITLE polevl
  4. _TEXT SEGMENT BYTE PUBLIC 'CODE'
  5. _TEXT ENDS
  6. CONST SEGMENT WORD PUBLIC 'CONST'
  7. CONST ENDS
  8. _BSS SEGMENT WORD PUBLIC 'BSS'
  9. _BSS ENDS
  10. _DATA SEGMENT WORD PUBLIC 'DATA'
  11. _DATA ENDS
  12. DGROUP GROUP CONST, _BSS, _DATA
  13. ASSUME CS: _TEXT, DS: DGROUP, SS: DGROUP, ES: DGROUP
  14. PUBLIC _polevl
  15. PUBLIC _p1evl
  16. _DATA SEGMENT
  17. EXTRN __chkstk:NEAR
  18. EXTRN __fac:NEAR
  19. EXTRN __fltused:NEAR
  20. $T20001 DQ 0000000000H ; .0000000000000000
  21. ans DQ 0
  22. ctrlw DW 0
  23. _DATA ENDS
  24. _TEXT SEGMENT
  25. PUBLIC _polevl
  26. _polevl PROC NEAR
  27. push bp
  28. mov bp,sp
  29. mov ax,12
  30. call __chkstk
  31. push si
  32. mov si,[bp+12]
  33. ; fstcw ctrlw
  34. ; fwait
  35. ; mov ax,ctrlw
  36. ; or ax,00100h
  37. ; mov ctrlw,ax
  38. ; fldcw ctrlw
  39. fldz
  40. fwait
  41. mov ax,[bp+14]
  42. inc ax
  43. mov [bp-12],ax
  44. $D15:
  45. fmul QWORD PTR [bp+4]
  46. add si,8
  47. fwait
  48. fadd QWORD PTR [si-8]
  49. fwait
  50. dec WORD PTR [bp-12]
  51. jne $D15
  52. fstp ans
  53. ; fstcw ctrlw
  54. ; fwait
  55. ; mov ax,ctrlw
  56. ; and ax,0feffh
  57. ; mov ctrlw,ax
  58. ; fldcw ctrlw
  59. lea ax, ans
  60. fwait
  61. pop si
  62. mov sp,bp
  63. pop bp
  64. ret
  65. _polevl ENDP
  66. PUBLIC _p1evl
  67. _p1evl PROC NEAR
  68. push bp
  69. mov bp,sp
  70. mov ax,12
  71. call __chkstk
  72. push si
  73. ; fstcw ctrlw
  74. ; fwait
  75. ; mov ax,ctrlw
  76. ; or ax,00100h
  77. ; mov ctrlw,ax
  78. ; fldcw ctrlw
  79. mov si,[bp+12]
  80. fld QWORD PTR [bp+4]
  81. add si,8
  82. fadd QWORD PTR [si-8]
  83. fwait
  84. mov ax,[bp+14]
  85. dec ax
  86. mov [bp-12],ax
  87. $D26:
  88. fmul QWORD PTR [bp+4]
  89. add si,8
  90. fadd QWORD PTR [si-8]
  91. fwait
  92. dec WORD PTR [bp-12]
  93. jne $D26
  94. fstp ans
  95. lea ax, ans
  96. ; fstcw ctrlw
  97. ; fwait
  98. ; mov ax,ctrlw
  99. ; and ax,0feffh
  100. ; mov ctrlw,ax
  101. ; fldcw ctrlw
  102. fwait
  103. pop si
  104. mov sp,bp
  105. pop bp
  106. ret
  107. _p1evl ENDP
  108. _TEXT ENDS
  109. END