免扫码快速登录设为首页收藏本站帮助中心
查看: 136|回复: 0
收起左侧

易语言MASM置入代码将字节集数据写入相同长度的字节集数组 (指定长度分割,返回逻辑型)

[复制链接]
发表于 2019-9-3 13:04:52 | 显示全部楼层 |阅读模式

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

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

x

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

  3. .程序集 程序集1

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


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

  7. .子程序 _临时子程序
  8. .局部变量 字节集, 字节集
  9. .局部变量 字节集数组, 字节集, , "10"

  10. ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
  11. 置随机数种子 ()
  12. 字节集 = 到字节集 (取现行时间 ()) + 到字节集 ([1000年1月1日]) + 到字节集 (“中文测试”) + 到字节集 (#pi) + 到字节集 (#e) + 到字节集 (取随机数 (, )) + 到字节集 (取随机数 (, ) × 取随机数 (, )) + { 1, 2, 3 }
  13. 调试输出 (字节集)
  14. 字节集数组 [1] = 取空白字节集 (1)
  15. 字节集数组 [2] = 取空白字节集 (2)
  16. 字节集数组 [3] = 取空白字节集 (3)
  17. 字节集数组 [4] = 取空白字节集 (4)
  18. 字节集数组 [5] = 取空白字节集 (5)
  19. 字节集数组 [6] = 取空白字节集 (6)
  20. 字节集数组 [7] = 取空白字节集 (7)
  21. 字节集数组 [8] = 取空白字节集 (8)
  22. 字节集数组 [9] = 取空白字节集 (9)
  23. 字节集数组 [10] = 取空白字节集 (10)
  24. 输出调试文本 (字节集写字节集数组 (字节集, 字节集数组))
  25. 调试输出 (字节集数组)


  26. .子程序 字节集写字节集数组, 逻辑型, 公开
  27. .参数 字节集, 字节集, , 字节集数组总长度必须等于字节集数据长度
  28. .参数 字节集数组, 字节集, 参考 数组, 数组中不能有零字节的字节集成员

  29. 置入代码 ({ 83, 81, 82, 86, 87, 139, 117, 12, 51, 192, 11, 246, 117, 5, 233, 173, 0, 0, 0, 139, 54, 11, 246, 117, 5, 233, 162, 0, 0, 0, 139, 126, 4, 11, 255, 116, 8, 129, 255, 0, 0, 0, 128, 114, 5, 233, 142, 0, 0, 0, 131, 198, 8, 51, 201, 235, 35, 139, 28, 134, 11, 219, 117, 4, 51, 192, 235, 124, 139, 91, 4, 11, 219, 116, 8, 129, 251, 0, 0, 0, 128, 114, 6, 51, 192, 235, 105, 235, 2, 3, 203, 64, 59, 199, 114, 217, 51, 192, 139, 117, 8, 11, 246, 117, 2, 235, 85, 139, 54, 11, 246, 117, 2, 235, 77, 139, 126, 4, 11, 255, 116, 12, 129, 255, 0, 0, 0, 128, 115, 4, 59, 249, 116, 2, 235, 56, 131, 198, 8, 139, 69, 12, 139, 0, 139, 88, 4, 131, 192, 8, 51, 201, 235, 29, 139, 60, 136, 139, 87, 4, 131, 199, 8, 81, 83, 51, 201, 235, 7, 138, 30, 136, 28, 57, 70, 65, 59, 202, 114, 245, 91, 89, 65, 59, 203, 114, 223, 184, 1, 0, 0, 0, 91, 89, 90, 94, 95, 201, 194, 8, 0 })
  30. ' push ebx
  31. ' push ecx
  32. ' push edx
  33. ' push esi
  34. ' push edi
  35. ' mov esi,[ebp+12]
  36. ' xor eax,eax
  37. ' .if esi == 0
  38. ' jmp ASM_END
  39. ' .endif
  40. ' mov esi,[esi]
  41. ' .if esi == 0
  42. ' jmp ASM_END
  43. ' .endif
  44. ' mov edi,[esi+4]
  45. ' .if edi == 0  || edi >= 80000000H
  46. ' jmp ASM_END
  47. ' .endif
  48. ' add esi,8
  49. ' xor ecx,ecx
  50. ' .while eax < edi
  51. ' mov ebx,[esi+eax*4]
  52. ' .if ebx == 0
  53. ' xor eax,eax
  54. ' jmp ASM_END
  55. ' .endif
  56. ' mov ebx,[ebx+4]
  57. ' .if ebx == 0 || ebx >= 80000000H
  58. ' xor eax,eax
  59. ' jmp ASM_END
  60. ' .else
  61. ' add ecx,ebx
  62. ' .endif
  63. ' inc eax
  64. ' .endw
  65. ' xor eax,eax
  66. ' mov esi,[ebp+8]
  67. ' .if esi == 0
  68. ' jmp ASM_END
  69. ' .endif
  70. ' mov esi,[esi]
  71. ' .if esi == 0
  72. ' jmp ASM_END
  73. ' .endif
  74. ' mov edi,[esi+4]
  75. ' .if edi == 0  || edi >= 80000000H || edi != ecx
  76. ' jmp ASM_END
  77. ' .endif
  78. ' add esi,8
  79. ' mov eax,[ebp+12]
  80. ' mov eax,[eax]
  81. ' mov ebx,[eax+4]
  82. ' add eax,8
  83. ' xor ecx,ecx
  84. ' .while ecx < ebx
  85. ' mov edi,[eax+ecx*4]
  86. ' mov edx,[edi+4]
  87. ' add edi,8
  88. ' push ecx
  89. ' push ebx
  90. ' xor ecx,ecx
  91. ' .while ecx < edx
  92. ' mov bl,[esi]
  93. ' mov [edi+ecx],bl
  94. ' inc esi
  95. ' inc ecx
  96. ' .endw
  97. ' pop ebx
  98. ' pop ecx
  99. ' inc ecx
  100. ' .endw
  101. ' mov eax,1
  102. ' ASM_END:
  103. ' pop ebx
  104. ' pop ecx
  105. ' pop edx
  106. ' pop esi
  107. ' pop edi
  108. ' leave
  109. ' retn 8

  110. 返回 (假)
复制代码

相关帖子

回复

使用道具 举报

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

本版积分规则