BENCHLNG.EXE.a2 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. LMOD@ PROC FAR
  2. 000 001EEB B90200 MOV cx, 2
  3. 002 001EF3 55 PUSH bp
  4. 003 001EF4 56 PUSH si
  5. 004 001EF5 57 PUSH di
  6. 005 001EF6 8BEC MOV bp, sp
  7. 006 001EF8 8BF9 MOV di, cx
  8. 007 001EFA 8B460A MOV ax, [bp+0Ah]
  9. 008 001EFD 8B560C MOV dx, [bp+0Ch]
  10. 009 001F00 8B5E0E MOV bx, [bp+0Eh]
  11. 010 001F03 8B4E10 MOV cx, [bp+10h]
  12. 011 001F06 0BC9 OR cx, cx
  13. 012 001F08 7508 JNE L1
  14. 013 001F0A 0BD2 OR dx, dx
  15. 014 001F0C 7469 JE L2
  16. 015 001F0E 0BDB OR bx, bx
  17. 016 001F10 7465 JE L2
  18. 017 001F12 F7C70100 L1: TEST di, 1
  19. 018 001F16 751C JNE L3
  20. 019 001F18 0BD2 OR dx, dx
  21. 020 001F1A 790A JNS L4
  22. 021 001F1C F7DA NEG dx
  23. 022 001F1E F7D8 NEG ax
  24. 023 001F20 83DA00 SBB dx, 0
  25. 024 001F23 83CF0C OR di, 0Ch
  26. 025 001F26 0BC9 L4: OR cx, cx
  27. 026 001F28 790A JNS L3
  28. 027 001F2A F7D9 NEG cx
  29. 028 001F2C F7DB NEG bx
  30. 029 001F2E 83D900 SBB cx, 0
  31. 030 001F31 83F704 XOR di, 4
  32. 031 001F34 8BE9 L3: MOV bp, cx
  33. 032 001F36 B92000 MOV cx, 20h
  34. 033 001F39 57 PUSH di
  35. 034 001F3A 33FF XOR di, di
  36. 035 001F3C 33F6 XOR si, si
  37. 036 001F3E D1E0 L5: SHL ax, 1
  38. 037 001F40 D1D2 RCL dx, 1
  39. 038 001F42 D1D6 RCL si, 1
  40. 039 001F44 D1D7 RCL di, 1
  41. 040 001F46 3BFD CMP di, bp
  42. 041 001F48 720B JB L6
  43. 042 001F4A 7704 JA L7
  44. 043 001F4C 3BF3 CMP si, bx
  45. 044 001F4E 7205 JB L6
  46. 045 001F50 2BF3 L7: SUB si, bx
  47. 046 001F52 1BFD SBB di, bp
  48. 047 001F54 40 INC ax
  49. 048 001F55 E2E7 L6: LOOP L5
  50. 049 001F57 5B POP bx
  51. 050 001F58 F7C30200 TEST bx, 2
  52. 051 001F5C 7406 JE L8
  53. 052 001F5E 8BC6 MOV ax, si
  54. 053 001F60 8BD7 MOV dx, di
  55. 054 001F62 D1EB SHR bx, 1
  56. 055 001F64 F7C30400 L8: TEST bx, 4
  57. 056 001F68 7407 JE L9
  58. 057 001F6A F7DA NEG dx
  59. 058 001F6C F7D8 NEG ax
  60. 059 001F6E 83DA00 SBB dx, 0
  61. 060 001F71 5F L9: POP di
  62. 061 001F72 5E POP si
  63. 062 001F73 5D POP bp
  64. 063 001F74 CA0800 RETF 8
  65. 064 L2: MOV tmp, dx:ax ;Synthetic inst
  66. 065 001F77 F7F3 DIV bx
  67. 066 MOD bx ;Synthetic inst
  68. 067 001F79 F7C70200 TEST di, 2
  69. 068 001F7D 7402 JE L10
  70. 069 001F7F 8BC2 MOV ax, dx
  71. 070 001F81 33D2 L10: XOR dx, dx
  72. 071 001F83 EBEC JMP L9
  73. LMOD@ ENDP
  74. main PROC NEAR
  75. 000 0002FA 55 PUSH bp
  76. 001 0002FB 8BEC MOV bp, sp
  77. 002 0002FD 83EC14 SUB sp, 14h
  78. 003 000300 8D46FC LEA ax, [bp-4]
  79. 004 000303 50 PUSH ax
  80. 005 000304 B89401 MOV ax, 194h
  81. 006 000307 50 PUSH ax
  82. 007 000308 E85D15 CALL near ptr scanf
  83. 008 00030B 59 POP cx
  84. 009 00030C 59 POP cx
  85. 010 00030D FF76FE PUSH word ptr [bp-2]
  86. 011 000310 FF76FC PUSH word ptr [bp-4]
  87. 012 000313 B89801 MOV ax, 198h
  88. 013 000316 50 PUSH ax
  89. 014 000317 E8C50C CALL near ptr printf
  90. 015 00031A 83C406 ADD sp, 6
  91. 016 00031D 8D46EC LEA ax, [bp-14h]
  92. 017 000320 50 PUSH ax
  93. 018 000321 B8B201 MOV ax, 1B2h
  94. 019 000324 50 PUSH ax
  95. 020 000325 E84015 CALL near ptr scanf
  96. 021 000328 59 POP cx
  97. 022 000329 59 POP cx
  98. 023 00032A 8D46F0 LEA ax, [bp-10h]
  99. 024 00032D 50 PUSH ax
  100. 025 00032E B8B601 MOV ax, 1B6h
  101. 026 000331 50 PUSH ax
  102. 027 000332 E83315 CALL near ptr scanf
  103. 028 000335 59 POP cx
  104. 029 000336 59 POP cx
  105. 030 000337 C746FA0000 MOV word ptr [bp-6], 0
  106. 031 00033C C746F80100 MOV word ptr [bp-8], 1
  107. 033 00042D 8B56FA L11: MOV dx, [bp-6]
  108. 034 000430 8B46F8 MOV ax, [bp-8]
  109. 035 000433 3B56FE CMP dx, [bp-2]
  110. 036 000436 7D03 JGE L12
  111. 038 000344 C746F60000 L13: MOV word ptr [bp-0Ah], 0
  112. 039 000349 C746F40100 MOV word ptr [bp-0Ch], 1
  113. 041 000411 837EF600 L14: CMP word ptr [bp-0Ah], 0
  114. 042 000415 7D03 JGE L15
  115. 044 000351 8B56EE L16: MOV dx, [bp-12h]
  116. 045 000354 8B46EC MOV ax, [bp-14h]
  117. 046 000357 0346F0 ADD ax, [bp-10h]
  118. 047 00035A 1356F2 ADC dx, [bp-0Eh]
  119. 048 00035D 0346F4 ADD ax, [bp-0Ch]
  120. 049 000360 1356F6 ADC dx, [bp-0Ah]
  121. 050 000363 8956EE MOV [bp-12h], dx
  122. 051 000366 8946EC MOV [bp-14h], ax
  123. 052 000369 8B56EE MOV dx, [bp-12h]
  124. 053 00036C 8B46EC MOV ax, [bp-14h]
  125. 054 00036F D1FA SAR dx, 1
  126. 055 000371 D1D8 RCR ax, 1
  127. 056 000373 8956F2 MOV [bp-0Eh], dx
  128. 057 000376 8946F0 MOV [bp-10h], ax
  129. 058 000379 33D2 XOR dx, dx
  130. 059 00037B B80A00 MOV ax, 0Ah
  131. 060 00037E 52 PUSH dx
  132. 061 00037F 50 PUSH ax
  133. 062 000380 FF76F2 PUSH word ptr [bp-0Eh]
  134. 063 000383 FF76F0 PUSH word ptr [bp-10h]
  135. 064 000386 9AEB1D1000 CALL far ptr LMOD@
  136. 065 00038B 8956EE MOV [bp-12h], dx
  137. 066 00038E 8946EC MOV [bp-14h], ax
  138. 067 000391 8B56F2 MOV dx, [bp-0Eh]
  139. 068 000394 8B46F0 MOV ax, [bp-10h]
  140. 069 000397 3B56F6 CMP dx, [bp-0Ah]
  141. 070 00039A 750A JNE L17
  142. 071 00039C 3B46F4 CMP ax, [bp-0Ch]
  143. 072 00039F 7505 JNE L17
  144. 073 0003A1 B80100 MOV ax, 1
  145. 075 0003A8 99 L18: CWD
  146. 076 0003A9 8956EE MOV [bp-12h], dx
  147. 077 0003AC 8946EC MOV [bp-14h], ax
  148. 078 0003AF 8B56EE MOV dx, [bp-12h]
  149. 079 0003B2 8B46EC MOV ax, [bp-14h]
  150. 080 0003B5 0B46F4 OR ax, [bp-0Ch]
  151. 081 0003B8 0B56F6 OR dx, [bp-0Ah]
  152. 082 0003BB 8956F2 MOV [bp-0Eh], dx
  153. 083 0003BE 8946F0 MOV [bp-10h], ax
  154. 084 0003C1 8B46F0 MOV ax, [bp-10h]
  155. 085 0003C4 0B46F2 OR ax, [bp-0Eh]
  156. 086 0003C7 7505 JNE L19
  157. 087 0003C9 B80100 MOV ax, 1
  158. 089 0003D0 99 L20: CWD
  159. 090 0003D1 8956EE MOV [bp-12h], dx
  160. 091 0003D4 8946EC MOV [bp-14h], ax
  161. 092 0003D7 8B56EE MOV dx, [bp-12h]
  162. 093 0003DA 8B46EC MOV ax, [bp-14h]
  163. 094 0003DD 0346F4 ADD ax, [bp-0Ch]
  164. 095 0003E0 1356F6 ADC dx, [bp-0Ah]
  165. 096 0003E3 8956F2 MOV [bp-0Eh], dx
  166. 097 0003E6 8946F0 MOV [bp-10h], ax
  167. 098 0003E9 8B56F2 MOV dx, [bp-0Eh]
  168. 099 0003EC 8B46F0 MOV ax, [bp-10h]
  169. 100 0003EF 3B56F6 CMP dx, [bp-0Ah]
  170. 101 0003F2 7C0C JL L21
  171. 102 0003F4 7F05 JG L22
  172. 103 0003F6 3B46F4 CMP ax, [bp-0Ch]
  173. 104 0003F9 7605 JBE L21
  174. 105 0003FB B80100 L22: MOV ax, 1
  175. 107 000402 99 L23: CWD
  176. 108 000403 8956EE MOV [bp-12h], dx
  177. 109 000406 8946EC MOV [bp-14h], ax
  178. 110 000409 8346F401 ADD word ptr [bp-0Ch], 1
  179. 111 00040D 8356F600 ADC word ptr [bp-0Ah], 0
  180. 112 JMP L14 ;Synthetic inst
  181. 113 000400 33C0 L21: XOR ax, ax
  182. 114 JMP L23 ;Synthetic inst
  183. 115 0003CE 33C0 L19: XOR ax, ax
  184. 116 JMP L20 ;Synthetic inst
  185. 117 0003A6 33C0 L17: XOR ax, ax
  186. 118 JMP L18 ;Synthetic inst
  187. 119 00041A 7F09 L15: JG L24
  188. 120 00041C 837EF428 CMP word ptr [bp-0Ch], 28h
  189. 121 000420 7703 JA L24
  190. 123 000425 8346F801 L24: ADD word ptr [bp-8], 1
  191. 124 000429 8356FA00 ADC word ptr [bp-6], 0
  192. 125 JMP L11 ;Synthetic inst
  193. 126 00043B 7F08 L12: JG L25
  194. 127 00043D 3B46FC CMP ax, [bp-4]
  195. 128 000440 7703 JA L25
  196. 130 000445 FF76EE L25: PUSH word ptr [bp-12h]
  197. 131 000448 FF76EC PUSH word ptr [bp-14h]
  198. 132 00044B B8BA01 MOV ax, 1BAh
  199. 133 00044E 50 PUSH ax
  200. 134 00044F E88D0B CALL near ptr printf
  201. 135 000452 83C406 ADD sp, 6
  202. 136 000455 8BE5 MOV sp, bp
  203. 137 000457 5D POP bp
  204. 138 000458 C3 RET
  205. main ENDP