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

MASM置入代码文本型数组、字节集数组大小写字母翻转(大写变小写,小写变大写,无返回值)

[复制链接]
查看120 | 回复1 | 2019-8-22 07:22:59 | 显示全部楼层 |阅读模式

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

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

x

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

  3. .程序集 程序集1

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


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

  7. .子程序 _临时子程序
  8. .局部变量 文本型数组, 文本型, , "0"
  9. .局部变量 字节集数组, 字节集, , "5"

  10. ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
  11. 字节集数组 [1] = 到字节集 (“Hello World!”)
  12. 字节集数组 [2] = 到字节集 (“abc123”)

  13. 字节集数组 [3] = 到字节集 (“中文测试”)
  14. 字节集数组 [5] = 到字节集 (“AbCdefghijklmnopqrstuvwxyz”)
  15. 字节集数组_大小写翻转 (字节集数组)
  16. 调试输出 (到文本 (字节集数组 [1]))
  17. 调试输出 (到文本 (字节集数组 [2]))
  18. 调试输出 (到文本 (字节集数组 [3]))
  19. 调试输出 (到文本 (字节集数组 [4]))
  20. 调试输出 (到文本 (字节集数组 [5]))
  21. 字节集数组_大小写翻转 (字节集数组)
  22. 调试输出 (到文本 (字节集数组 [1]))
  23. 调试输出 (到文本 (字节集数组 [2]))
  24. 调试输出 (到文本 (字节集数组 [3]))
  25. 调试输出 (到文本 (字节集数组 [4]))
  26. 调试输出 (到文本 (字节集数组 [5]))

  27. 文本型数组 = { “Hello World!”, “abc123”, “AbCdefghijklmnopqrstuvwxyz”, “”, “中文测试” }
  28. 文本型数组_大小写翻转 (文本型数组)
  29. 调试输出 (文本型数组)
  30. 文本型数组_大小写翻转 (文本型数组)
  31. 调试输出 (文本型数组)


  32. .子程序 文本型数组_大小写翻转, , 公开
  33. .参数 文本型数组, 文本型, 数组

  34. 置入代码 ({ 96, 139, 69, 8, 11, 192, 117, 2, 235, 87, 139, 0, 11, 192, 117, 2, 235, 79, 139, 88, 4, 11, 219, 116, 8, 129, 251, 0, 0, 0, 128, 114, 2, 235, 62, 131, 192, 8, 51, 201, 235, 51, 139, 52, 136, 11, 246, 117, 2, 235, 41, 138, 22, 10, 210, 117, 2, 235, 33, 128, 250, 97, 114, 10, 128, 250, 122, 119, 5, 128, 234, 32, 235, 13, 128, 250, 65, 114, 8, 128, 250, 90, 119, 3, 128, 194, 32, 136, 22, 70, 235, 215, 65, 59, 203, 114, 201, 97 })
  35. ' pushad
  36. ' mov eax,[ebp+8]
  37. ' .if !eax
  38. ' jmp ASM_END
  39. ' .endif
  40. ' mov eax,[eax]
  41. ' .if !eax
  42. ' jmp ASM_END
  43. ' .endif
  44. ' mov ebx,[eax+4]
  45. ' .if !ebx || ebx >= 80000000H
  46. ' jmp ASM_END
  47. ' .endif
  48. ' add eax,8
  49. ' xor ecx,ecx
  50. ' .while ecx < ebx
  51. ' mov esi,[eax+ecx*4]
  52. ' .if !esi
  53. ' jmp TEXT_LOOP_END
  54. ' .endif
  55. ' TEXT_LOOP:
  56. ' mov dl,[esi]
  57. ' .if !dl
  58. ' jmp TEXT_LOOP_END
  59. ' .endif
  60. ' .if dl >= 97 && dl <=122
  61. ' sub dl,32
  62. ' .elseif dl >=65 && dl<=90
  63. ' add dl,32
  64. ' .endif
  65. ' mov [esi],dl
  66. ' inc esi
  67. ' JMP TEXT_LOOP
  68. ' TEXT_LOOP_END:
  69. ' inc ecx
  70. ' .endw
  71. ' ASM_END:
  72. ' popad


  73. .子程序 字节集数组_大小写翻转, , 公开
  74. .参数 字节集数组, 字节集, 数组

  75. 置入代码 ({ 96, 139, 85, 8, 11, 210, 117, 2, 235, 95, 139, 18, 11, 210, 117, 2, 235, 87, 139, 90, 4, 11, 219, 116, 8, 129, 251, 0, 0, 0, 128, 114, 2, 235, 70, 131, 194, 8, 51, 201, 235, 59, 139, 4, 138, 11, 192, 116, 51, 96, 139, 88, 4, 131, 192, 8, 51, 201, 235, 35, 138, 20, 1, 128, 250, 97, 114, 10, 128, 250, 122, 119, 5, 128, 234, 32, 235, 13, 128, 250, 65, 114, 8, 128, 250, 90, 119, 3, 128, 194, 32, 136, 20, 1, 65, 59, 203, 114, 217, 97, 65, 59, 203, 114, 193, 97 })
  76. ' pushad
  77. ' mov edx,[ebp+8]
  78. ' .if !edx
  79. ' jmp  ASM_END
  80. ' .endif
  81. ' mov edx,[edx]
  82. ' .if !edx
  83. ' jmp  ASM_END
  84. ' .endif
  85. ' mov ebx,[edx+4]
  86. ' .if !ebx || ebx >= 80000000H
  87. ' jmp  ASM_END
  88. ' .endif
  89. ' add edx,8
  90. ' xor ecx,ecx
  91. ' .while ecx < ebx
  92. ' mov eax,[edx+ecx*4]
  93. ' .if eax
  94. ' pushad
  95. ' mov ebx,[eax+4]
  96. ' add eax,8
  97. ' xor ecx,ecx
  98. ' .while ecx < ebx
  99. ' mov dl,[eax+ecx]
  100. ' .if dl >= 97 && dl <=122
  101. ' sub dl,32
  102. ' .elseif dl >=65 && dl<=90
  103. ' add dl,32
  104. ' .endif
  105. ' mov [eax+ecx],dl
  106. ' inc ecx
  107. ' .endw
  108. ' popad
  109. ' .endif
  110. ' inc ecx
  111. ' .endw
  112. ' ASM_END:
  113. ' popad

复制代码

相关帖子

回复

使用道具 举报

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

本版积分规则