设为首页收藏本站帮助中心 本站已运行
查看: 189|回复: 2
收起左侧

易语言MASM置入代码实现取颜色值/取红色值/取绿色值/取蓝色值/红绿蓝RGB颜色值分离

[复制链接]
发表于 2019-8-23 09:00:39 | 显示全部楼层 |阅读模式

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

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

x

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

  3. .程序集 程序集1

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


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

  7. .子程序 _临时子程序
  8. .局部变量 颜色值, 整数型
  9. .局部变量 红色值, 字节型
  10. .局部变量 绿色值, 字节型
  11. .局部变量 蓝色值, 字节型

  12. ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
  13. 调试输出 (取颜色值 (123, 101, 5), 取颜色值_ (123, 101, 5))
  14. 颜色值 = 12345678
  15. 红色值 = 取红色值 (颜色值)
  16. 绿色值 = 取绿色值 (颜色值)
  17. 蓝色值 = 取蓝色值 (颜色值)
  18. 调试输出 (红色值, 绿色值, 蓝色值, 取颜色值 (红色值, 绿色值, 蓝色值))
  19. 颜色值 = 11111111

  20. 检查 (取RGB值 (颜色值, 红色值, 绿色值, 蓝色值))
  21. 调试输出 (红色值, 绿色值, 蓝色值, 取颜色值 (红色值, 绿色值, 蓝色值))

  22. .子程序 取颜色值_, 整数型, 公开
  23. .参数 红色, 字节型
  24. .参数 绿色, 字节型
  25. .参数 蓝色, 字节型

  26. 置入代码 ({ 51, 192, 138, 69, 12, 138, 101, 16, 193, 224, 8, 138, 69, 8, 201, 194, 12, 0 })
  27. ' xor eax,eax
  28. ' mov al,[ebp+12]
  29. ' mov ah,[ebp+16]
  30. ' shl eax,8
  31. ' mov al,[ebp+8]
  32. ' leave
  33. ' retn 12
  34. 返回 (0)


  35. .子程序 取红色值, 字节型, 公开
  36. .参数 颜色值, 整数型

  37. 置入代码 ({ 139, 69, 8, 37, 255, 0, 0, 0, 201, 194, 4, 0 })
  38. ' mov eax,[ebp+8]
  39. ' and eax,255
  40. ' leave
  41. ' retn 4
  42. 返回 (0)

  43. .子程序 取绿色值, 字节型, 公开
  44. .参数 颜色值, 整数型

  45. 置入代码 ({ 139, 69, 8, 193, 232, 8, 37, 255, 0, 0, 0, 201, 194, 4, 0 })
  46. ' mov eax,[ebp+8]
  47. ' shr eax,8
  48. ' and eax,255
  49. ' leave
  50. ' retn 4
  51. 返回 (0)

  52. .子程序 取蓝色值, 字节型, 公开
  53. .参数 颜色值, 整数型

  54. 置入代码 ({ 139, 69, 8, 193, 232, 16, 37, 255, 0, 0, 0, 201, 194, 4, 0 })
  55. ' mov eax,[ebp+8]
  56. ' shr eax,16
  57. ' and eax,255
  58. ' leave
  59. ' retn 4
  60. 返回 (0)

  61. .子程序 取RGB值, 逻辑型, 公开, 分离颜色值的红色值、绿色值、蓝色值,成功返回真,失败返回假
  62. .参数 颜色值, 整数型, , 范围 0~16777215
  63. .参数 红色值, 字节型, 参考
  64. .参数 绿色值, 字节型, 参考
  65. .参数 蓝色值, 字节型, 参考

  66. 置入代码 ({ 83, 139, 69, 8, 61, 255, 255, 255, 0, 118, 4, 51, 192, 235, 26, 139, 93, 12, 136, 3, 193, 232, 8, 139, 93, 16, 136, 3, 193, 232, 8, 139, 93, 20, 136, 3, 184, 1, 0, 0, 0, 91, 201, 194, 16, 0 })
  67. ' push ebx
  68. ' mov eax,[ebp+8]
  69. ' .if eax > 0FFFFFFH
  70. ' xor eax,eax
  71. ' jmp ASM_END
  72. ' .endif
  73. ' mov ebx,[ebp+12]
  74. ' mov [ebx],al
  75. ' shr eax,8
  76. ' mov ebx,[ebp+16]
  77. ' mov [ebx],al
  78. ' shr eax,8
  79. ' mov ebx,[ebp+20]
  80. ' mov [ebx],al
  81. ' mov eax,1
  82. ' ASM_END:
  83. ' pop ebx
  84. ' leave
  85. ' retn 16
  86. 返回 (假)
复制代码

相关帖子

回复

使用道具 举报

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

本版积分规则