设为首页收藏本站淘宝杂货铺

从F到0 - From F to 0

 找回密码
 注册已关闭
搜索
查看: 480|回复: 0
收起左侧

易语言MASM置入代码实现长整数型的大于/小于/大于等于/小于等于/等于比较(返回逻辑型)

[复制链接]
发表于 2022-12-4 08:09:04 | 显示全部楼层 |阅读模式
1.png
  1. .版本 2

  2. .程序集 程序集1

  3. .子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码

  4. 置随机数种子 ()

  5. _临时子程序 ()  ' 在初始化代码执行完毕后调用测试代码
  6. 返回 (0)  ' 可以根据您的需要返回任意数值

  7. .子程序 _临时子程序
  8. .局部变量 A, 长整数型
  9. .局部变量 B, 长整数型
  10. .局部变量 大于, 逻辑型
  11. .局部变量 小于, 逻辑型
  12. .局部变量 大于等于, 逻辑型
  13. .局部变量 小于等于, 逻辑型
  14. .局部变量 等于, 逻辑型
  15. .局部变量 次数, 整数型
  16. .局部变量 时间, 整数型

  17. 时间 = 取启动时间 ()

  18. .判断循环首 (真)
  19.     A = 取随机长整数 ()
  20.     B = 取随机长整数 ()
  21.     大于 = A > B
  22.     小于 = A < B
  23.     大于等于 = A ≥ B
  24.     小于等于 = A ≤ B
  25.     等于 = A = B
  26.     .如果真 (长整数型_大于 (A, B) ≠ 大于)
  27.         输出调试文本 (“错误:大于”)
  28.         跳出循环 ()
  29.     .如果真结束
  30.     .如果真 (长整数型_小于 (A, B) ≠ 小于)
  31.         输出调试文本 (“错误:小于”)
  32.         跳出循环 ()
  33.     .如果真结束
  34.     .如果真 (长整数型_大于等于 (A, B) ≠ 大于等于)
  35.         输出调试文本 (“错误:大于等于”)
  36.         跳出循环 ()
  37.     .如果真结束
  38.     .如果真 (长整数型_小于等于 (A, B) ≠ 小于等于)
  39.         输出调试文本 (“错误:小于等于”)
  40.         跳出循环 ()
  41.     .如果真结束
  42.     .如果真 (长整数型_等于 (A, B) ≠ 等于)
  43.         输出调试文本 (“错误:等于”)
  44.         跳出循环 ()
  45.     .如果真结束
  46.     次数 = 次数 + 1
  47.     .如果真 (次数 ≤ 0)
  48.         输出调试文本 (“正确”)
  49.         跳出循环 ()
  50.     .如果真结束
  51.     .如果真 (次数 % 1000000 = 0)
  52.         输出调试文本 (次数)
  53.     .如果真结束

  54. .判断循环尾 ()
  55. 输出调试文本 (“耗时(秒):” + 到文本 ((取启动时间 () - 时间) ÷ 1000))


  56. .子程序 长整数型_大于, 逻辑型, 公开
  57. .参数 被比较值, 长整数型
  58. .参数 比较值, 长整数型

  59. 置入代码 ({ 83, 81, 82, 139, 69, 8, 139, 93, 12, 139, 77, 16, 139, 85, 20, 59, 218, 126, 9, 184, 1, 0, 0, 0, 235, 19, 235, 15, 59, 218, 117, 11, 59, 193, 118, 7, 184, 1, 0, 0, 0, 235, 2, 51, 192, 90, 89, 91, 201, 194, 16, 0 })
  60. ' push ebx
  61. ' push ecx
  62. ' push edx
  63. ' mov eax,[ebp+8]
  64. ' mov ebx,[ebp+12]
  65. ' mov ecx,[ebp+16]
  66. ' mov edx,[ebp+20]
  67. ' .if sdword ptr ebx > edx
  68. ' mov eax,1
  69. ' jmp ASM_END
  70. ' .elseif ebx == edx && eax > ecx
  71. ' mov eax,1
  72. ' jmp ASM_END
  73. ' .endif
  74. ' xor eax,eax
  75. ' ASM_END:
  76. ' pop edx
  77. ' pop ecx
  78. ' pop ebx
  79. ' leave
  80. ' retn 16
  81. 返回 (假)

  82. .子程序 长整数型_小于, 逻辑型, 公开
  83. .参数 被比较值, 长整数型
  84. .参数 比较值, 长整数型

  85. 置入代码 ({ 83, 81, 82, 139, 69, 8, 139, 93, 12, 139, 77, 16, 139, 85, 20, 59, 218, 125, 9, 184, 1, 0, 0, 0, 235, 19, 235, 15, 59, 218, 117, 11, 59, 193, 115, 7, 184, 1, 0, 0, 0, 235, 2, 51, 192, 90, 89, 91, 201, 194, 16, 0 })
  86. ' push ebx
  87. ' push ecx
  88. ' push edx
  89. ' mov eax,[ebp+8]
  90. ' mov ebx,[ebp+12]
  91. ' mov ecx,[ebp+16]
  92. ' mov edx,[ebp+20]
  93. ' .if sdword ptr ebx < edx
  94. ' mov eax,1
  95. ' jmp ASM_END
  96. ' .elseif ebx == edx && eax < ecx
  97. ' mov eax,1
  98. ' jmp ASM_END
  99. ' .endif
  100. ' xor eax,eax
  101. ' ASM_END:
  102. ' pop edx
  103. ' pop ecx
  104. ' pop ebx
  105. ' leave
  106. ' retn 16
  107. 返回 (假)

  108. .子程序 长整数型_大于等于, 逻辑型, 公开
  109. .参数 被比较值, 长整数型
  110. .参数 比较值, 长整数型

  111. 置入代码 ({ 83, 81, 82, 139, 69, 8, 139, 93, 12, 139, 77, 16, 139, 85, 20, 59, 218, 127, 8, 59, 193, 117, 13, 59, 218, 117, 9, 184, 1, 0, 0, 0, 235, 19, 235, 15, 59, 218, 117, 11, 59, 193, 118, 7, 184, 1, 0, 0, 0, 235, 2, 51, 192, 90, 89, 91, 201, 194, 16, 0 })
  112. ' push ebx
  113. ' push ecx
  114. ' push edx
  115. ' mov eax,[ebp+8]
  116. ' mov ebx,[ebp+12]
  117. ' mov ecx,[ebp+16]
  118. ' mov edx,[ebp+20]
  119. ' .if sdword ptr ebx > edx || (eax == ecx && ebx == edx)
  120. ' mov eax,1
  121. ' jmp ASM_END
  122. ' .elseif ebx == edx && eax > ecx
  123. ' mov eax,1
  124. ' jmp ASM_END
  125. ' .endif
  126. ' xor eax,eax
  127. ' ASM_END:
  128. ' pop edx
  129. ' pop ecx
  130. ' pop ebx
  131. ' leave
  132. ' retn 16

  133. 返回 (假)

  134. .子程序 长整数型_小于等于, 逻辑型, 公开
  135. .参数 被比较值, 长整数型
  136. .参数 比较值, 长整数型

  137. 置入代码 ({ 83, 81, 82, 139, 69, 8, 139, 93, 12, 139, 77, 16, 139, 85, 20, 59, 218, 124, 8, 59, 193, 117, 13, 59, 218, 117, 9, 184, 1, 0, 0, 0, 235, 19, 235, 15, 59, 218, 117, 11, 59, 193, 115, 7, 184, 1, 0, 0, 0, 235, 2, 51, 192, 90, 89, 91, 201, 194, 16, 0 })
  138. ' push ebx
  139. ' push ecx
  140. ' push edx
  141. ' mov eax,[ebp+8]
  142. ' mov ebx,[ebp+12]
  143. ' mov ecx,[ebp+16]
  144. ' mov edx,[ebp+20]
  145. ' .if sdword ptr ebx < edx || (eax == ecx && ebx == edx)
  146. ' mov eax,1
  147. ' jmp ASM_END
  148. ' .elseif ebx == edx && eax < ecx
  149. ' mov eax,1
  150. ' jmp ASM_END
  151. ' .endif
  152. ' xor eax,eax
  153. ' ASM_END:
  154. ' pop edx
  155. ' pop ecx
  156. ' pop ebx
  157. ' leave
  158. ' retn 16
  159. 返回 (假)

  160. .子程序 长整数型_等于, 逻辑型, 公开
  161. .参数 被比较值, 长整数型
  162. .参数 比较值, 长整数型

  163. 置入代码 ({ 83, 139, 69, 8, 139, 93, 12, 59, 69, 16, 117, 12, 59, 93, 20, 117, 7, 184, 1, 0, 0, 0, 235, 2, 51, 192, 91, 201, 194, 16, 0 })
  164. ' push ebx
  165. ' mov eax,[ebp+8]
  166. ' mov ebx,[ebp+12]
  167. ' .if eax == [ebp+16] && ebx == [ebp+20]
  168. ' mov eax,1
  169. ' .else
  170. ' xor eax,eax
  171. ' .endif
  172. ' pop ebx
  173. ' leave
  174. ' retn 16
  175. 返回 (假)

  176. .子程序 取随机长整数, 长整数型
  177. .局部变量 字节集, 字节集
  178. .局部变量 计数, 整数型

  179. 字节集 = 取空白字节集 (8)
  180. .计次循环首 (8, 计数)
  181.     字节集 [计数] = 取随机数 (, )
  182. .计次循环尾 ()
  183. 返回 (取字节集数据 (字节集, #长整数型, ))
复制代码

相关帖子

您需要登录后才可以回帖 登录 | 注册已关闭

本版积分规则

QQ|手机版|Archiver|从F到0 ( 蒙ICP备17002595号-1 )
蒙公网安备15010402000325号

腾讯云安全认证

GMT+8, 2024-4-20 20:31 , Processed in 0.463026 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表