设为首页收藏本站帮助中心
查看: 96|回复: 0
收起左侧

易语言MASM置入代码交换长整数型/日期时间型/双精度小数型数组的高低32位 (无返回值)

[复制链接]
发表于 2020-10-1 20:29:34 | 显示全部楼层 |阅读模式

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

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

x
1.png

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

  3. .程序集 程序集1, , ,

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


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

  7. .子程序 _临时子程序
  8. .局部变量 A, 长整数型, , "0"
  9. .局部变量 B, 日期时间型, , "0"
  10. .局部变量 C, 双精度小数型, , "0"

  11. A = { 1, 2, 3, 4, 5, 6, 7, 8 }
  12. 长整数型数组_交换高低32位 (A)
  13. 调试输出 (A, 到字节集 (A))
  14. 长整数型数组_交换高低32位 (A)
  15. 调试输出 (A, 到字节集 (A))
  16. B = { [2020年10月1日] }
  17. 日期时间型数组_交换高低32位 (B)
  18. 调试输出 (B)
  19. 日期时间型数组_交换高低32位 (B)
  20. 调试输出 (B)
  21. C = { #pi, #e }
  22. 双精度小数型数组_交换高低32位 (C)
  23. 调试输出 (C)
  24. 双精度小数型数组_交换高低32位 (C)
  25. 调试输出 (C)

  26. .子程序 长整数型数组_交换高低32位, , 公开, 64位数值高低32位颠倒处理
  27. .参数 数组, 长整数型, 数组

  28. 置入代码 ({ 80, 83, 81, 86, 87, 139, 69, 8, 11, 192, 117, 2, 235, 43, 139, 0, 11, 192, 117, 2, 235, 35, 139, 88, 4, 11, 219, 117, 2, 235, 26, 131, 192, 8, 51, 201, 235, 15, 139, 52, 200, 139, 124, 200, 4, 137, 60, 200, 137, 116, 200, 4, 65, 59, 203, 114, 237, 95, 94, 89, 91, 88 })
  29. ' push eax
  30. ' push ebx
  31. ' push ecx
  32. ' push esi
  33. ' push edi
  34. ' mov eax,[ebp+8]
  35. ' .if !eax
  36. ' jmp ASM_END
  37. ' .endif
  38. ' mov eax,[eax]
  39. ' .if !eax
  40. ' jmp ASM_END
  41. ' .endif
  42. ' mov ebx,[eax+4]
  43. ' .if !ebx
  44. ' jmp ASM_END
  45. ' .endif
  46. ' add eax,8
  47. ' xor ecx,ecx
  48. ' .while ecx < ebx
  49. ' mov esi,[ecx*8+eax]
  50. ' mov edi,[ecx*8+eax+4]
  51. ' mov [ecx*8+eax],edi
  52. ' mov [ecx*8+eax+4],esi
  53. ' inc ecx
  54. ' .endw
  55. ' ASM_END:
  56. ' pop edi
  57. ' pop esi
  58. ' pop ecx
  59. ' pop ebx
  60. ' pop eax


  61. .子程序 双精度小数型数组_交换高低32位, , 公开
  62. .参数 数组, 双精度小数型, 数组

  63. 置入代码 ({ 80, 83, 81, 86, 87, 139, 69, 8, 11, 192, 117, 2, 235, 43, 139, 0, 11, 192, 117, 2, 235, 35, 139, 88, 4, 11, 219, 117, 2, 235, 26, 131, 192, 8, 51, 201, 235, 15, 139, 52, 200, 139, 124, 200, 4, 137, 60, 200, 137, 116, 200, 4, 65, 59, 203, 114, 237, 95, 94, 89, 91, 88 })
  64. ' push eax
  65. ' push ebx
  66. ' push ecx
  67. ' push esi
  68. ' push edi
  69. ' mov eax,[ebp+8]
  70. ' .if !eax
  71. ' jmp ASM_END
  72. ' .endif
  73. ' mov eax,[eax]
  74. ' .if !eax
  75. ' jmp ASM_END
  76. ' .endif
  77. ' mov ebx,[eax+4]
  78. ' .if !ebx
  79. ' jmp ASM_END
  80. ' .endif
  81. ' add eax,8
  82. ' xor ecx,ecx
  83. ' .while ecx < ebx
  84. ' mov esi,[ecx*8+eax]
  85. ' mov edi,[ecx*8+eax+4]
  86. ' mov [ecx*8+eax],edi
  87. ' mov [ecx*8+eax+4],esi
  88. ' inc ecx
  89. ' .endw
  90. ' ASM_END:
  91. ' pop edi
  92. ' pop esi
  93. ' pop ecx
  94. ' pop ebx
  95. ' pop eax


  96. .子程序 日期时间型数组_交换高低32位, , 公开, 交换后若为[1899年12月30日],请勿直接使用否则会出现异常,再次交换则恢复正常。
  97. .参数 数组, 日期时间型, 数组

  98. 置入代码 ({ 80, 83, 81, 86, 87, 139, 69, 8, 11, 192, 117, 2, 235, 43, 139, 0, 11, 192, 117, 2, 235, 35, 139, 88, 4, 11, 219, 117, 2, 235, 26, 131, 192, 8, 51, 201, 235, 15, 139, 52, 200, 139, 124, 200, 4, 137, 60, 200, 137, 116, 200, 4, 65, 59, 203, 114, 237, 95, 94, 89, 91, 88 })
  99. ' push eax
  100. ' push ebx
  101. ' push ecx
  102. ' push esi
  103. ' push edi
  104. ' mov eax,[ebp+8]
  105. ' .if !eax
  106. ' jmp ASM_END
  107. ' .endif
  108. ' mov eax,[eax]
  109. ' .if !eax
  110. ' jmp ASM_END
  111. ' .endif
  112. ' mov ebx,[eax+4]
  113. ' .if !ebx
  114. ' jmp ASM_END
  115. ' .endif
  116. ' add eax,8
  117. ' xor ecx,ecx
  118. ' .while ecx < ebx
  119. ' mov esi,[ecx*8+eax]
  120. ' mov edi,[ecx*8+eax+4]
  121. ' mov [ecx*8+eax],edi
  122. ' mov [ecx*8+eax+4],esi
  123. ' inc ecx
  124. ' .endw
  125. ' ASM_END:
  126. ' pop edi
  127. ' pop esi
  128. ' pop ecx
  129. ' pop ebx
  130. ' pop eax

复制代码

相关帖子

这个小可爱很神秘,什么都没留下
回复

使用道具 举报

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

本版积分规则