更改用户名CRC32解密回帖奖励召回投票记录删除领夜猫子帮助中心 本站已运行

易语言MASM置入代码实现整数型数组所有成员参与位与、位或、位异或运算(返回整数型)

[复制链接]
查看84 | 回复0 | 2019-10-8 18:00:00 |阅读模式

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

您需要 登录 才可以下载或查看,没有帐号?注册有礼

x

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

  3. .程序集 程序集1

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


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

  7. .子程序 _临时子程序

  8. ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
  9. 调试输出 (整数型数组_位与 ({ -1, 12345, 23456, 3456789 }))
  10. 调试输出 (整数型数组_位或 ({ 12345, 23456, 0, 1234567 }))
  11. 调试输出 (整数型数组_位异或 ({ 1234567890, 1111111111, 1234567, 2345678, -3456789 }))



  12. .子程序 整数型数组_位与, 整数型, 公开
  13. .参数 整数型数组, 整数型, 数组

  14. 置入代码 ({ 83, 81, 82, 139, 69, 8, 11, 192, 117, 2, 235, 46, 139, 0, 11, 192, 117, 2, 235, 38, 139, 88, 4, 11, 219, 117, 4, 51, 192, 235, 27, 131, 192, 8, 51, 201, 51, 210, 247, 210, 235, 10, 35, 20, 136, 11, 210, 117, 2, 235, 5, 65, 59, 203, 114, 242, 139, 194, 90, 89, 91, 201, 194, 4, 0 })
  15. ' push ebx
  16. ' push ecx
  17. ' push edx
  18. ' mov eax,[ebp+8]
  19. ' .if eax == 0
  20. ' jmp ASM_END
  21. ' .endif
  22. ' mov eax,[eax]
  23. ' .if eax == 0
  24. ' jmp ASM_END
  25. ' .endif
  26. ' mov ebx,[eax+4]
  27. ' .if ebx == 0
  28. ' xor eax,eax
  29. ' jmp ASM_END
  30. ' .endif
  31. ' add eax,8
  32. ' xor ecx,ecx
  33. ' xor edx,edx
  34. ' not edx
  35. ' .while ecx < ebx
  36. ' and edx,[eax+ecx*4]
  37. ' .if edx == 0
  38. ' .break
  39. ' .endif
  40. ' inc ecx
  41. ' .endw
  42. ' mov eax,edx
  43. ' ASM_END:
  44. ' pop edx
  45. ' pop ecx
  46. ' pop ebx
  47. ' leave
  48. ' retn 4

  49. 返回 (0)


  50. .子程序 整数型数组_位或, 整数型, 公开
  51. .参数 整数型数组, 整数型, 数组

  52. 置入代码 ({ 83, 81, 82, 139, 69, 8, 11, 192, 117, 2, 235, 45, 139, 0, 11, 192, 117, 2, 235, 37, 139, 88, 4, 11, 219, 117, 4, 51, 192, 235, 26, 131, 192, 8, 51, 201, 51, 210, 235, 11, 11, 20, 136, 131, 250, 255, 117, 2, 235, 5, 65, 59, 203, 114, 241, 139, 194, 90, 89, 91, 201, 194, 4, 0 })
  53. ' push ebx
  54. ' push ecx
  55. ' push edx
  56. ' mov eax,[ebp+8]
  57. ' .if eax == 0
  58. ' jmp ASM_END
  59. ' .endif
  60. ' mov eax,[eax]
  61. ' .if eax == 0
  62. ' jmp ASM_END
  63. ' .endif
  64. ' mov ebx,[eax+4]
  65. ' .if ebx == 0
  66. ' xor eax,eax
  67. ' jmp ASM_END
  68. ' .endif
  69. ' add eax,8
  70. ' xor ecx,ecx
  71. ' xor edx,edx
  72. ' .while ecx < ebx
  73. ' or edx,[eax+ecx*4]
  74. ' .if edx == 0FFFFFFFFH
  75. ' .break
  76. ' .endif
  77. ' inc ecx
  78. ' .endw
  79. ' mov eax,edx
  80. ' ASM_END:
  81. ' pop edx
  82. ' pop ecx
  83. ' pop ebx
  84. ' leave
  85. ' retn 4

  86. 返回 (0)


  87. .子程序 整数型数组_位异或, 整数型, 公开
  88. .参数 整数型数组, 整数型, 数组

  89. 置入代码 ({ 83, 81, 82, 139, 69, 8, 11, 192, 117, 2, 235, 38, 139, 0, 11, 192, 117, 2, 235, 30, 139, 88, 4, 11, 219, 117, 4, 51, 192, 235, 19, 131, 192, 8, 51, 201, 51, 210, 235, 4, 51, 20, 136, 65, 59, 203, 114, 248, 139, 194, 90, 89, 91, 201, 194, 4, 0 })
  90. ' push ebx
  91. ' push ecx
  92. ' push edx
  93. ' mov eax,[ebp+8]
  94. ' .if eax == 0
  95. ' jmp ASM_END
  96. ' .endif
  97. ' mov eax,[eax]
  98. ' .if eax == 0
  99. ' jmp ASM_END
  100. ' .endif
  101. ' mov ebx,[eax+4]
  102. ' .if ebx == 0
  103. ' xor eax,eax
  104. ' jmp ASM_END
  105. ' .endif
  106. ' add eax,8
  107. ' xor ecx,ecx
  108. ' xor edx,edx
  109. ' .while ecx < ebx
  110. ' xor edx,[eax+ecx*4]
  111. ' inc ecx
  112. ' .endw
  113. ' mov eax,edx
  114. ' ASM_END:
  115. ' pop edx
  116. ' pop ecx
  117. ' pop ebx
  118. ' leave
  119. ' retn 4

  120. 返回 (0)

复制代码

相关帖子

您需要登录后才可以回帖 登录 | 注册有礼

本版积分规则