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

易语言MASM置入代码实现整数型数组与子程序指针数组的互相赋值转换操作 (返回逻辑型)

[复制链接]
发表于 2023-4-3 18:40:21 | 显示全部楼层 |阅读模式
1.png
  1. .版本 2
  2. .支持库 spec

  3. .程序集 程序集1

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


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

  7. .子程序 _临时子程序
  8. .局部变量 子程序指针数组, 子程序指针, , "2"
  9. .局部变量 整数型数组, 整数型, , "0"

  10. 整数型数组 = { 1, 2, 3, 4, 5, 6, 7 }
  11. 输出调试文本 (整数型数组_赋值到子程序指针数组 (子程序指针数组, 整数型数组))
  12. 调试输出 (子程序指针数组)
  13. 子程序指针数组 = { &_启动子程序, &_临时子程序 }
  14. 调试输出 (子程序指针数组)
  15. 输出调试文本 (子程序指针数组_赋值到整数型数组 (整数型数组, 子程序指针数组))
  16. 调试输出 (整数型数组)

  17. .子程序 子程序指针数组_赋值到整数型数组, 逻辑型, 公开, 整数型数组 = 子程序指针数组
  18. .参数 被赋值的变量或变量数组, 整数型, 参考 数组
  19. .参数 用作赋于的值或资源, 子程序指针, 数组
  20. .局部变量 成员数, 整数型

  21. 置入代码 ({ 80, 139, 69, 12, 139, 0, 139, 64, 4, 137, 69, 252, 88 })
  22. ' push eax
  23. ' mov eax,[ebp+12]
  24. ' mov eax,[eax]
  25. ' mov eax,[eax+4]
  26. ' mov [ebp-4],eax
  27. ' pop eax
  28. .如果真 (成员数 ≤ 0)
  29.     清除数组 (被赋值的变量或变量数组)
  30.     返回 (假)
  31. .如果真结束
  32. 重定义数组 (被赋值的变量或变量数组, 真, 成员数)
  33. 置入代码 ({ 80, 83, 81, 82, 86, 139, 69, 8, 139, 0, 131, 192, 8, 139, 117, 12, 139, 54, 131, 198, 8, 139, 93, 252, 51, 201, 235, 7, 139, 20, 142, 137, 20, 136, 65, 59, 203, 114, 245, 94, 90, 89, 91, 88 })
  34. ' push eax
  35. ' push ebx
  36. ' push ecx
  37. ' push edx
  38. ' push esi
  39. ' mov eax,[ebp+8]
  40. ' mov eax,[eax]
  41. ' add eax,8
  42. ' mov esi,[ebp+12]
  43. ' mov esi,[esi]
  44. ' add esi,8
  45. ' mov ebx,[ebp-4]
  46. ' xor ecx,ecx
  47. ' .while ecx < ebx
  48. ' mov edx,[esi+ecx*4]
  49. ' mov [eax+ecx*4],edx
  50. ' inc ecx
  51. ' .endw
  52. ' pop esi
  53. ' pop edx
  54. ' pop ecx
  55. ' pop ebx
  56. ' pop eax
  57. 返回 (真)

  58. .子程序 整数型数组_赋值到子程序指针数组, 逻辑型, 公开, 子程序指针数组 = 整数型数组
  59. .参数 被赋值的变量或变量数组, 子程序指针, 参考 数组
  60. .参数 用作赋于的值或资源, 整数型, 数组
  61. .局部变量 成员数, 整数型

  62. 置入代码 ({ 80, 139, 69, 12, 139, 0, 139, 64, 4, 137, 69, 252, 88 })
  63. ' push eax
  64. ' mov eax,[ebp+12]
  65. ' mov eax,[eax]
  66. ' mov eax,[eax+4]
  67. ' mov [ebp-4],eax
  68. ' pop eax
  69. .如果真 (成员数 ≤ 0)
  70.     清除数组 (被赋值的变量或变量数组)
  71.     返回 (假)
  72. .如果真结束
  73. 重定义数组 (被赋值的变量或变量数组, 真, 成员数)
  74. 置入代码 ({ 80, 83, 81, 82, 86, 139, 69, 8, 139, 0, 131, 192, 8, 139, 117, 12, 139, 54, 131, 198, 8, 139, 93, 252, 51, 201, 235, 7, 139, 20, 142, 137, 20, 136, 65, 59, 203, 114, 245, 94, 90, 89, 91, 88 })
  75. ' push eax
  76. ' push ebx
  77. ' push ecx
  78. ' push edx
  79. ' push esi
  80. ' mov eax,[ebp+8]
  81. ' mov eax,[eax]
  82. ' add eax,8
  83. ' mov esi,[ebp+12]
  84. ' mov esi,[esi]
  85. ' add esi,8
  86. ' mov ebx,[ebp-4]
  87. ' xor ecx,ecx
  88. ' .while ecx < ebx
  89. ' mov edx,[esi+ecx*4]
  90. ' mov [eax+ecx*4],edx
  91. ' inc ecx
  92. ' .endw
  93. ' pop esi
  94. ' pop edx
  95. ' pop ecx
  96. ' pop ebx
  97. ' pop eax
  98. 返回 (真)
复制代码

相关帖子

回复

使用道具 举报

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

本版积分规则