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

易语言MASM置入代码实现交换替换短整数型数组中的两个指定值 (无返回值)

[复制链接]
发表于 2020-9-22 20:42:25 | 显示全部楼层 |阅读模式

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

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

x
1.png

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

  3. .程序集 程序集1

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


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

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

  9. A = { 1, 2, 3, 4, 5, 1, 5, 1, 5, 23456, 11111, 23456 }
  10. 短整数型数组_交换数值 (A, 23456, -12345)
  11. 调试输出 (A)
  12. 短整数型数组_交换数值 (A, 23456, -12345)
  13. 调试输出 (A)


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

  18. 置入代码 ({ 80, 83, 81, 82, 86, 87, 139, 69, 8, 102, 139, 93, 12, 102, 139, 85, 16, 11, 192, 116, 5, 102, 59, 218, 117, 4, 51, 192, 235, 53, 139, 0, 11, 192, 117, 2, 235, 45, 139, 112, 4, 11, 246, 117, 2, 235, 36, 131, 192, 8, 51, 255, 235, 25, 102, 139, 12, 120, 102, 59, 203, 117, 6, 102, 137, 20, 120, 235, 9, 102, 59, 202, 117, 4, 102, 137, 28, 120, 71, 59, 254, 114, 227, 95, 94, 90, 89, 91, 88, 201, 194, 12, 0 })
  19. ' push eax
  20. ' push ebx
  21. ' push ecx
  22. ' push edx
  23. ' push esi
  24. ' push edi
  25. ' mov eax,[ebp+8]
  26. ' mov bx,[ebp+12]
  27. ' mov dx,[ebp+16]
  28. ' .if !eax || bx == dx
  29. ' xor eax,eax
  30. ' jmp ASM_END
  31. ' .endif
  32. ' mov eax,[eax]
  33. ' .if !eax
  34. ' jmp ASM_END
  35. ' .endif
  36. ' mov esi,[eax+4]
  37. ' .if !esi
  38. ' jmp ASM_END
  39. ' .endif
  40. ' add eax,8
  41. ' xor edi,edi
  42. ' .while edi < esi
  43. ' mov cx,[eax+edi*2]
  44. ' .if cx == bx
  45. ' mov [eax+edi*2],dx
  46. ' .elseif cx == dx
  47. ' mov [eax+edi*2],bx
  48. ' .endif
  49. ' inc edi
  50. ' .endw
  51. ' ASM_END:
  52. ' pop edi
  53. ' pop esi
  54. ' pop edx
  55. ' pop ecx
  56. ' pop ebx
  57. ' pop eax
  58. ' leave
  59. ' retn 12

复制代码

相关帖子

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

使用道具 举报

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

本版积分规则