设为首页收藏本站淘宝杂货铺

从F到0 - From F to 0

 找回密码
 注册已关闭
搜索
查看: 2375|回复: 1
收起左侧

易语言MASM汇编置入代码文本型与字节集的等于比较(数据、长度是否一致) (返回逻辑型)

[复制链接]
发表于 2019-7-29 10:53:05 | 显示全部楼层 |阅读模式
本帖最后由 QAQ 于 2019-7-29 10:54 编辑

  1. .版本 2

  2. .程序集 程序集1

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


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

  6. .子程序 _临时子程序
  7. .局部变量 A, 文本型
  8. .局部变量 B, 字节集

  9. ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
  10. A = “Hello World!中文测试”
  11. B = 到字节集 (“Hello World!中文测试”)
  12. 输出调试文本 (文本型与字节集_等于 (A, B))
  13. A = “1234567890”
  14. B = 到字节集 (A)
  15. 输出调试文本 (文本型与字节集_等于 (A, B))
  16. A = “”
  17. B = 到字节集 (A)
  18. 输出调试文本 (文本型与字节集_等于 (A, B))
  19. A = “111”
  20. B = {  }
  21. 输出调试文本 (文本型与字节集_等于 (A, B))

  22. A = “111”
  23. B = { 111 }
  24. 输出调试文本 (文本型与字节集_等于 (A, B))
  25. A = “12345”
  26. B = 到字节集 (“123456”)
  27. 输出调试文本 (文本型与字节集_等于 (A, B))
  28. A = “123456”
  29. B = 到字节集 (“12345”)
  30. 输出调试文本 (文本型与字节集_等于 (A, B))
  31. 输出调试文本 (文本型与字节集_等于 (“”, {  }))
  32. A = “123456”
  33. B = 到字节集 (“123456”) + { 0 }
  34. 输出调试文本 (文本型与字节集_等于 (A, B))


  35. .子程序 文本型与字节集_等于, 逻辑型, 公开, 比较文本型与字节集数据是否一致
  36. .参数 文本型, 文本型, , 文本型与字节集数据、长度必须一致才返回真,否则返回假。
  37. .参数 字节集, 字节集, , 即使字节集尾部包含0字符,长度与文本型不一致也返回假。

  38. 置入代码 ({ 83, 81, 82, 86, 139, 69, 8, 139, 93, 12, 232, 89, 0, 0, 0, 128, 249, 1, 117, 21, 232, 105, 0, 0, 0, 128, 249, 1, 117, 7, 184, 1, 0, 0, 0, 235, 2, 51, 192, 235, 55, 139, 0, 139, 27, 139, 75, 4, 131, 195, 8, 51, 246, 235, 17, 138, 20, 30, 58, 20, 6, 117, 4, 10, 210, 117, 4, 51, 192, 235, 25, 70, 59, 241, 114, 235, 138, 20, 6, 10, 210, 117, 11, 59, 241, 117, 7, 184, 1, 0, 0, 0, 235, 2, 51, 192, 94, 90, 89, 91, 201, 194, 8, 0, 83, 139, 27, 11, 219, 117, 4, 177, 1, 235, 13, 139, 91, 4, 11, 219, 117, 4, 177, 1, 235, 2, 50, 201, 91, 195, 80, 139, 0, 11, 192, 117, 4, 177, 1, 235, 12, 138, 0, 10, 192, 117, 4, 177, 1, 235, 2, 50, 201, 88, 195 })
  39. ' push ebx
  40. ' push ecx
  41. ' push edx
  42. ' push esi
  43. ' mov eax,[ebp+8]
  44. ' mov ebx,[ebp+12]
  45. ' call IS_DATA_NULL_EBX
  46. ' .if cl == 1
  47. ' call IS_TEXT_NULL
  48. ' .if cl == 1
  49. ' mov eax,1
  50. ' .elseif
  51. ' xor eax,eax
  52. ' .endif
  53. ' jmp ASM_END
  54. ' .endif
  55. ' mov eax,[eax]
  56. ' mov ebx,[ebx]
  57. ' mov ecx,[ebx+4]
  58. ' add ebx,8
  59. ' xor esi,esi
  60. ' .while esi < ecx
  61. ' mov dl,[ebx+esi]
  62. ' .if dl != [eax+esi] || dl == 0
  63. ' xor eax,eax
  64. ' jmp ASM_END
  65. ' .endif
  66. ' inc esi
  67. ' .endw
  68. ' mov dl,[eax+esi]
  69. ' .if dl == 0 && esi == ecx
  70. ' mov eax,1
  71. ' .elseif
  72. ' xor eax,eax
  73. ' .endif
  74. ' ASM_END:
  75. ' pop esi
  76. ' pop edx
  77. ' pop ecx
  78. ' pop ebx
  79. ' leave
  80. ' retn 8
  81. ' IS_DATA_NULL_EBX:
  82. ' push ebx
  83. ' mov ebx,[ebx]
  84. ' .if ebx == 0
  85. ' mov cl,1
  86. ' jmp IS_DATA_NULL_EBX_END
  87. ' .endif
  88. ' mov ebx,[ebx+4]
  89. ' .if ebx == 0
  90. ' mov cl,1
  91. ' jmp IS_DATA_NULL_EBX_END
  92. ' .endif
  93. ' xor cl,cl
  94. ' IS_DATA_NULL_EBX_END:
  95. ' pop ebx
  96. ' ret
  97. ' IS_TEXT_NULL:
  98. ' push eax
  99. ' mov eax,[eax]
  100. ' .if eax == 0
  101. ' mov cl,1
  102. ' jmp IS_TEXT_NULL_END
  103. ' .endif
  104. ' mov al,[eax]
  105. ' .if al == 0
  106. ' mov cl,1
  107. ' jmp IS_TEXT_NULL_END
  108. ' .endif
  109. ' xor cl,cl
  110. ' IS_TEXT_NULL_END:
  111. ' pop eax
  112. ' ret

  113. 返回 (假)
复制代码

相关帖子

您需要登录后才可以回帖 登录 | 注册已关闭

本版积分规则

QQ|手机版|Archiver|从F到0 ( 蒙ICP备17002595号-1 )
蒙公网安备15010402000325号

腾讯云安全认证

GMT+8, 2024-4-16 13:09 , Processed in 0.476027 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表