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

从F到0 - From F to 0

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

易语言内嵌纯汇编置入代码不操作局部变量实现申请的256字节静态内存空间以及读写演示

[复制链接]
发表于 2018-10-13 08:27:46 | 显示全部楼层 |阅读模式

  1. .版本 2

  2. .程序集 程序集1

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


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

  6. .子程序 _临时子程序
  7. .局部变量 值, 字节型

  8. ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。


  9. 读写256字节静态内存 (0, 9, 真)
  10. 读写256字节静态内存 (1, 10, 真)
  11. 读写256字节静态内存 (2, 11, 真)
  12. 读写256字节静态内存 (3, 12, 真)
  13. 读写256字节静态内存 (255, 123, 真)

  14. 读写256字节静态内存 (0, 值, 假)
  15. 输出调试文本 (值)
  16. 读写256字节静态内存 (255, 值, 假)
  17. 输出调试文本 (值)


  18. .子程序 读写256字节静态内存, , 公开
  19. .参数 地址, 字节型, , 地址范围 0~255(共256字节)
  20. .参数 值, 字节型, 参考, 必须为字节型变量,否则可能会出错
  21. .参数 写, 逻辑型, , 真为写,假为读

  22. 置入代码 ({ 144, 144, 144, 144, 96, 232, 44, 0, 0, 0, 184, 0, 0, 0, 0, 138, 69, 8, 139, 85, 12, 138, 77, 16, 141, 29, 79, 0, 0, 0, 3, 222, 3, 216, 128, 249, 1, 117, 6, 138, 10, 136, 11, 235, 4, 138, 11, 136, 10, 97, 201, 194, 12, 0, 83, 187, 0, 0, 0, 0, 139, 117, 4, 235, 3, 139, 30, 70, 129, 251, 144, 144, 144, 144, 117, 245, 78, 91, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 })
  23. ' nop
  24. ' nop
  25. ' nop
  26. ' nop
  27. ' pushad
  28. ' call GCA
  29. ' mov eax,0
  30. ' mov al,[ebp+8]  ;地址
  31. ' mov edx,[ebp+12] ;值的地址
  32. ' mov cl,[ebp+16]  ;读写方向 0读1写
  33. ' lea ebx,RAM
  34. ' add ebx,esi
  35. ' add ebx,eax
  36. ' .if cl == 1  ;写入
  37. ' mov cl,[edx]
  38. ' mov [ebx],cl
  39. ' .elseif   ;读出
  40. ' mov cl,[ebx]
  41. ' mov [edx],cl
  42. ' .endif
  43. ' popad
  44. ' leave
  45. ' retn 12
  46. ' GCA: ;取置入代码的内存地址
  47. ' push ebx
  48. ' mov ebx,0
  49. ' mov esi,[ebp+4]
  50. ' .while ebx != 90909090H
  51. ' mov ebx,[esi]
  52. ' inc esi
  53. ' .endw
  54. ' dec esi
  55. ' pop ebx
  56. ' ret
  57. ' RAM: ;分配256字节的静态内存空间
  58. ' DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  59. ' DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  60. ' DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  61. ' DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  62. ' DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  63. ' DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  64. ' DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  65. ' DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  66. ' DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  67. ' DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  68. ' DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  69. ' DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  70. ' DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  71. ' DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  72. ' DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  73. ' DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
复制代码


发表于 2018-10-13 10:26:59 | 显示全部楼层
这个6了,自己可以改自己。
发表于 2018-10-13 19:19:54 | 显示全部楼层
这个隐蔽性6,不知道还能放数据。
您需要登录后才可以回帖 登录 | 注册已关闭

本版积分规则

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

腾讯云安全认证

GMT+8, 2024-4-27 07:01 , Processed in 1.626093 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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