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

从F到0 - From F to 0

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

易语言MASM置入代码实现极速获取整数型数组中的最小值与最大值 (返回逻辑型)

[复制链接]
发表于 2021-8-28 20:13:27 | 显示全部楼层 |阅读模式
1.png

  1. .版本 2
  2. .支持库 spec

  3. .程序集 程序集1

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


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

  7. .子程序 _临时子程序
  8. .局部变量 Array, 整数型, , "0"
  9. .局部变量 min, 整数型
  10. .局部变量 max, 整数型
  11. .局部变量 min2, 整数型
  12. .局部变量 max2, 整数型
  13. .局部变量 计数, 整数型
  14. .局部变量 字节集, 字节集
  15. .局部变量 计数2, 整数型
  16. .局部变量 成员数, 整数型

  17. 置随机数种子 ()
  18. .判断循环首 (真)
  19.     重定义数组 (Array, 假, 取随机数 (1, 1000))
  20.     字节集 = 取空白字节集 (4)
  21.     成员数 = 取数组成员数 (Array)
  22.     .计次循环首 (成员数, 计数)
  23.         .计次循环首 (4, 计数2)
  24.             字节集 [计数2] = 取随机数 (, )
  25.         .计次循环尾 ()
  26.         Array [计数] = 取字节集数据 (字节集, #整数型, )
  27.     .计次循环尾 ()
  28.     检查 (置入代码_整数型数组_取最小值与最大值 (Array, min, max))
  29.     检查 (易源码_整数型数组_取最小值与最大值 (Array, min2, max2))
  30.     .如果真 (min ≠ min2 或 max ≠ max2)
  31.         暂停 ()
  32.     .如果真结束
  33.     .如果真 (取随机数 (0, 100) = 0)
  34.         调试输出 (成员数, min, max)
  35.     .如果真结束

  36. .判断循环尾 ()


  37. .子程序 置入代码_整数型数组_取最小值与最大值, 逻辑型, 公开
  38. .参数 数组, 整数型, 数组
  39. .参数 最小值, 整数型, 参考
  40. .参数 最大值, 整数型, 参考

  41. 置入代码 ({ 83, 81, 82, 86, 82, 139, 69, 8, 185, 255, 255, 255, 127, 139, 117, 12, 137, 14, 185, 0, 0, 0, 128, 139, 125, 16, 137, 15, 11, 192, 116, 8, 11, 246, 116, 4, 11, 255, 117, 4, 51, 192, 235, 93, 139, 0, 11, 192, 117, 2, 235, 85, 139, 88, 4, 131, 192, 8, 11, 219, 117, 6, 51, 192, 235, 71, 235, 18, 131, 251, 1, 117, 13, 139, 24, 137, 30, 137, 31, 184, 1, 0, 0, 0, 235, 51, 51, 201, 235, 38, 139, 20, 136, 59, 22, 125, 4, 137, 22, 235, 6, 59, 23, 126, 2, 137, 23, 186, 0, 0, 0, 128, 57, 22, 117, 11, 186, 255, 255, 255, 127, 57, 23, 117, 2, 235, 5, 65, 59, 203, 114, 214, 184, 1, 0, 0, 0, 95, 94, 90, 89, 91, 201, 194, 12, 0 })
  42. ' push ebx
  43. ' push ecx
  44. ' push edx
  45. ' push esi
  46. ' push edx
  47. ' mov eax,[ebp+8]
  48. ' mov ecx,2147483647
  49. ' mov esi,[ebp+12]
  50. ' mov [esi],ecx
  51. ' mov ecx,-2147483648
  52. ' mov edi,[ebp+16]
  53. ' mov [edi],ecx
  54. ' .if !eax || !esi || !edi
  55. ' xor eax,eax
  56. ' jmp ASM_END
  57. ' .endif
  58. ' mov eax,[eax]
  59. ' .if !eax
  60. ' jmp ASM_END
  61. ' .endif
  62. ' mov ebx,[eax+4]
  63. ' add eax,8
  64. ' .if !ebx
  65. ' xor eax,eax
  66. ' jmp ASM_END
  67. ' .elseif ebx == 1
  68. ' mov ebx,[eax]
  69. ' mov [esi],ebx
  70. ' mov [edi],ebx
  71. ' mov eax,1
  72. ' jmp ASM_END
  73. ' .endif
  74. ' xor ecx,ecx
  75. ' .while ecx < ebx
  76. ' mov edx,[eax+ecx*4]
  77. ' .if sdword ptr edx < [esi]
  78. ' mov [esi],edx
  79. ' .elseif sdword ptr edx > [edi]
  80. ' mov [edi],edx
  81. ' .endif
  82. ' mov edx,-2147483648
  83. ' .if [esi] == edx
  84. ' mov edx,2147483647
  85. ' .if [edi] == edx
  86. ' .break
  87. ' .endif
  88. ' .endif
  89. ' inc ecx
  90. ' .endw
  91. ' mov eax,1
  92. ' ASM_END:
  93. ' pop edi
  94. ' pop esi
  95. ' pop edx
  96. ' pop ecx
  97. ' pop ebx
  98. ' leave
  99. ' retn 12

  100. 返回 (假)


  101. .子程序 易源码_整数型数组_取最小值与最大值, 逻辑型
  102. .参数 数组, 整数型, 数组
  103. .参数 最小值, 整数型, 参考
  104. .参数 最大值, 整数型, 参考
  105. .局部变量 成员数, 整数型
  106. .局部变量 计数, 整数型

  107. 成员数 = 取数组成员数 (数组)
  108. .判断开始 (成员数 = 0)
  109.     返回 (假)
  110. .判断 (成员数 = 1)
  111.     最小值 = 数组 [1]
  112.     最大值 = 数组 [1]
  113.     返回 (真)
  114. .默认

  115. .判断结束
  116. 最小值 = 2147483647
  117. 最大值 = -2147483648
  118. .计次循环首 (成员数, 计数)
  119.     .判断开始 (数组 [计数] < 最小值)
  120.         最小值 = 数组 [计数]
  121.     .判断 (数组 [计数] > 最大值)
  122.         最大值 = 数组 [计数]
  123.     .默认

  124.     .判断结束
  125.     .如果真 (最小值 = -2147483648 且 最大值 = 2147483647)
  126.         跳出循环 ()
  127.     .如果真结束

  128. .计次循环尾 ()
  129. 返回 (真)
复制代码

相关帖子

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

本版积分规则

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

腾讯云安全认证

GMT+8, 2024-3-29 03:22 , Processed in 0.518030 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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