设为首页收藏本站帮助中心
查看: 116|回复: 0
收起左侧

易语言MASM置入代码交换替换整数型/小数型/子程序指针数组中的两个指定值 (无返回值)

[复制链接]
发表于 2020-9-24 17:31:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?加入我们

x
1.png

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

  3. .程序集 程序集1

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


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

  7. .子程序 _临时子程序
  8. .局部变量 A, 整数型, , "0"

  9. A = { 1234567, 123, -2345678, 6, 1 }
  10. 调试输出 (A)
  11. 整数型数组_交换数值 (A, 1234567, -2345678)
  12. 调试输出 (A)



  13. .子程序 整数型数组_交换数值, , 公开, 被交换值=1 交换值=2 检测到2则写入1,检测到1则写入2,不能相同否则不转换
  14. .参数 数组, 整数型, 数组
  15. .参数 被交换值, 整数型
  16. .参数 交换值, 整数型

  17. 置入代码 ({ 80, 83, 81, 82, 86, 87, 139, 69, 8, 139, 117, 12, 139, 125, 16, 11, 192, 116, 4, 59, 247, 117, 2, 235, 48, 139, 0, 11, 192, 117, 2, 235, 40, 139, 88, 4, 11, 219, 117, 2, 235, 31, 131, 192, 8, 51, 201, 235, 20, 139, 20, 136, 59, 214, 117, 5, 137, 60, 136, 235, 7, 59, 215, 117, 3, 137, 52, 136, 65, 59, 203, 114, 232, 95, 94, 90, 89, 91, 88, 201, 194, 12, 0 })
  18. ' push eax
  19. ' push ebx
  20. ' push ecx
  21. ' push edx
  22. ' push esi
  23. ' push edi
  24. ' mov eax,[ebp+8]
  25. ' mov esi,[ebp+12]
  26. ' mov edi,[ebp+16]
  27. ' .if !eax || esi == edi
  28. ' jmp ASM_END
  29. ' .endif
  30. ' mov eax,[eax]
  31. ' .if !eax
  32. ' jmp ASM_END
  33. ' .endif
  34. ' mov ebx,[eax+4]
  35. ' .if !ebx
  36. ' jmp ASM_END
  37. ' .endif
  38. ' add eax,8
  39. ' xor ecx,ecx
  40. ' .while ecx < ebx
  41. ' mov edx,[eax+ecx*4]
  42. ' .if edx == esi
  43. ' mov [eax+ecx*4],edi
  44. ' .elseif edx == edi
  45. ' mov [eax+ecx*4],esi
  46. ' .endif
  47. ' inc ecx
  48. ' .endw
  49. ' ASM_END:
  50. ' pop edi
  51. ' pop esi
  52. ' pop edx
  53. ' pop ecx
  54. ' pop ebx
  55. ' pop eax
  56. ' leave
  57. ' retn 12


  58. .子程序 小数型数组_交换数值, , 公开, 见 整数型数组_交换数值
  59. .参数 数组, 小数型, 数组
  60. .参数 被交换值, 小数型
  61. .参数 交换值, 小数型

  62. 置入代码 ({ 80, 83, 81, 82, 86, 87, 139, 69, 8, 139, 117, 12, 139, 125, 16, 11, 192, 116, 4, 59, 247, 117, 2, 235, 48, 139, 0, 11, 192, 117, 2, 235, 40, 139, 88, 4, 11, 219, 117, 2, 235, 31, 131, 192, 8, 51, 201, 235, 20, 139, 20, 136, 59, 214, 117, 5, 137, 60, 136, 235, 7, 59, 215, 117, 3, 137, 52, 136, 65, 59, 203, 114, 232, 95, 94, 90, 89, 91, 88, 201, 194, 12, 0 })
  63. ' push eax
  64. ' push ebx
  65. ' push ecx
  66. ' push edx
  67. ' push esi
  68. ' push edi
  69. ' mov eax,[ebp+8]
  70. ' mov esi,[ebp+12]
  71. ' mov edi,[ebp+16]
  72. ' .if !eax || esi == edi
  73. ' jmp ASM_END
  74. ' .endif
  75. ' mov eax,[eax]
  76. ' .if !eax
  77. ' jmp ASM_END
  78. ' .endif
  79. ' mov ebx,[eax+4]
  80. ' .if !ebx
  81. ' jmp ASM_END
  82. ' .endif
  83. ' add eax,8
  84. ' xor ecx,ecx
  85. ' .while ecx < ebx
  86. ' mov edx,[eax+ecx*4]
  87. ' .if edx == esi
  88. ' mov [eax+ecx*4],edi
  89. ' .elseif edx == edi
  90. ' mov [eax+ecx*4],esi
  91. ' .endif
  92. ' inc ecx
  93. ' .endw
  94. ' ASM_END:
  95. ' pop edi
  96. ' pop esi
  97. ' pop edx
  98. ' pop ecx
  99. ' pop ebx
  100. ' pop eax
  101. ' leave
  102. ' retn 12


  103. .子程序 子程序指针数组_交换数值, , 公开, 见 整数型数组_交换数值
  104. .参数 数组, 子程序指针, 数组
  105. .参数 被交换值, 子程序指针
  106. .参数 交换值, 子程序指针

  107. 置入代码 ({ 80, 83, 81, 82, 86, 87, 139, 69, 8, 139, 117, 12, 139, 125, 16, 11, 192, 116, 4, 59, 247, 117, 2, 235, 48, 139, 0, 11, 192, 117, 2, 235, 40, 139, 88, 4, 11, 219, 117, 2, 235, 31, 131, 192, 8, 51, 201, 235, 20, 139, 20, 136, 59, 214, 117, 5, 137, 60, 136, 235, 7, 59, 215, 117, 3, 137, 52, 136, 65, 59, 203, 114, 232, 95, 94, 90, 89, 91, 88, 201, 194, 12, 0 })
  108. ' push eax
  109. ' push ebx
  110. ' push ecx
  111. ' push edx
  112. ' push esi
  113. ' push edi
  114. ' mov eax,[ebp+8]
  115. ' mov esi,[ebp+12]
  116. ' mov edi,[ebp+16]
  117. ' .if !eax || esi == edi
  118. ' jmp ASM_END
  119. ' .endif
  120. ' mov eax,[eax]
  121. ' .if !eax
  122. ' jmp ASM_END
  123. ' .endif
  124. ' mov ebx,[eax+4]
  125. ' .if !ebx
  126. ' jmp ASM_END
  127. ' .endif
  128. ' add eax,8
  129. ' xor ecx,ecx
  130. ' .while ecx < ebx
  131. ' mov edx,[eax+ecx*4]
  132. ' .if edx == esi
  133. ' mov [eax+ecx*4],edi
  134. ' .elseif edx == edi
  135. ' mov [eax+ecx*4],esi
  136. ' .endif
  137. ' inc ecx
  138. ' .endw
  139. ' ASM_END:
  140. ' pop edi
  141. ' pop esi
  142. ' pop edx
  143. ' pop ecx
  144. ' pop ebx
  145. ' pop eax
  146. ' leave
  147. ' retn 12

复制代码

相关帖子

这个小可爱很神秘,什么都没留下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则