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

从F到0 - From F to 0

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

MASM置入代码计算整数掩码(参数:123(1111011) 返回:127(1111111)以此类推 返回整数型)

[复制链接]
发表于 2020-2-22 09:42:51 | 显示全部楼层 |阅读模式
本帖最后由 EAX 于 2020-2-22 09:41 编辑
运算规则(无符号):
参数:1234567(100101101011010000111)
返回:2097151(111111111111111111111)
参数:123(1111011)
返回:127(1111111) 以此类推

1.png

  1. .版本 2

  2. .程序集 程序集1

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


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

  6. .子程序 _临时子程序
  7. .局部变量 掩码, 整数型
  8. .局部变量 值, 整数型

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

  11. 掩码 = 取整数掩码 (值)
  12. 输出调试文本 (到文本 (掩码) + “,” + 到文本 (值))
  13. 检查 (位与 (掩码, 值) = 值)



  14. .子程序 取整数掩码, 整数型, , 运算规则(无符号):参数:1234567(100101101011010000111) 返回:2097151(111111111111111111111) 参数:123(1111011) 返回:127(1111111) 以此类推
  15. .参数 值, 整数型

  16. 置入代码 ({ 139, 69, 8, 232, 4, 0, 0, 0, 201, 194, 4, 0, 61, 0, 0, 0, 128, 114, 10, 184, 255, 255, 255, 255, 233, 217, 1, 0, 0, 61, 0, 0, 0, 64, 114, 10, 184, 255, 255, 255, 127, 233, 200, 1, 0, 0, 61, 0, 0, 0, 32, 114, 10, 184, 255, 255, 255, 63, 233, 183, 1, 0, 0, 61, 0, 0, 0, 16, 114, 10, 184, 255, 255, 255, 31, 233, 166, 1, 0, 0, 61, 0, 0, 0, 8, 114, 10, 184, 255, 255, 255, 15, 233, 149, 1, 0, 0, 61, 0, 0, 0, 4, 114, 10, 184, 255, 255, 255, 7, 233, 132, 1, 0, 0, 61, 0, 0, 0, 2, 114, 10, 184, 255, 255, 255, 3, 233, 115, 1, 0, 0, 61, 0, 0, 0, 1, 114, 10, 184, 255, 255, 255, 1, 233, 98, 1, 0, 0, 61, 0, 0, 128, 0, 114, 10, 184, 255, 255, 255, 0, 233, 81, 1, 0, 0, 61, 0, 0, 64, 0, 114, 10, 184, 255, 255, 127, 0, 233, 64, 1, 0, 0, 61, 0, 0, 32, 0, 114, 10, 184, 255, 255, 63, 0, 233, 47, 1, 0, 0, 61, 0, 0, 16, 0, 114, 10, 184, 255, 255, 31, 0, 233, 30, 1, 0, 0, 61, 0, 0, 8, 0, 114, 10, 184, 255, 255, 15, 0, 233, 13, 1, 0, 0, 61, 0, 0, 4, 0, 114, 10, 184, 255, 255, 7, 0, 233, 252, 0, 0, 0, 61, 0, 0, 2, 0, 114, 10, 184, 255, 255, 3, 0, 233, 235, 0, 0, 0, 61, 0, 0, 1, 0, 114, 10, 184, 255, 255, 1, 0, 233, 218, 0, 0, 0, 61, 0, 128, 0, 0, 114, 10, 184, 255, 255, 0, 0, 233, 201, 0, 0, 0, 61, 0, 64, 0, 0, 114, 10, 184, 255, 127, 0, 0, 233, 184, 0, 0, 0, 61, 0, 32, 0, 0, 114, 10, 184, 255, 63, 0, 0, 233, 167, 0, 0, 0, 61, 0, 16, 0, 0, 114, 10, 184, 255, 31, 0, 0, 233, 150, 0, 0, 0, 61, 0, 8, 0, 0, 114, 10, 184, 255, 15, 0, 0, 233, 133, 0, 0, 0, 61, 0, 4, 0, 0, 114, 7, 184, 255, 7, 0, 0, 235, 119, 61, 0, 2, 0, 0, 114, 7, 184, 255, 3, 0, 0, 235, 105, 61, 0, 1, 0, 0, 114, 7, 184, 255, 1, 0, 0, 235, 91, 61, 128, 0, 0, 0, 114, 7, 184, 255, 0, 0, 0, 235, 77, 131, 248, 64, 114, 7, 184, 127, 0, 0, 0, 235, 65, 131, 248, 32, 114, 7, 184, 63, 0, 0, 0, 235, 53, 131, 248, 16, 114, 7, 184, 31, 0, 0, 0, 235, 41, 131, 248, 8, 114, 7, 184, 15, 0, 0, 0, 235, 29, 131, 248, 4, 114, 7, 184, 7, 0, 0, 0, 235, 17, 131, 248, 2, 114, 7, 184, 3, 0, 0, 0, 235, 5, 184, 1, 0, 0, 0, 195 })
  17. ' mov eax,[ebp+8]
  18. ' call EAX_MASK
  19. ' leave
  20. ' retn 4
  21. ' EAX_MASK:
  22. ' .if eax >=080000000H
  23. ' mov eax,0FFFFFFFFH
  24. ' .elseif eax >=040000000H
  25. ' mov eax,07FFFFFFFH
  26. ' .elseif eax >=020000000H
  27. ' mov eax,03FFFFFFFH
  28. ' .elseif eax >=010000000H
  29. ' mov eax,01FFFFFFFH
  30. ' .elseif eax >=008000000H
  31. ' mov eax,00FFFFFFFH
  32. ' .elseif eax >=004000000H
  33. ' mov eax,007FFFFFFH
  34. ' .elseif eax >=002000000H
  35. ' mov eax,003FFFFFFH
  36. ' .elseif eax >=001000000H
  37. ' mov eax,001FFFFFFH
  38. ' .elseif eax >=000800000H
  39. ' mov eax,000FFFFFFH
  40. ' .elseif eax >=000400000H
  41. ' mov eax,0007FFFFFH
  42. ' .elseif eax >=000200000H
  43. ' mov eax,0003FFFFFH
  44. ' .elseif eax >=000100000H
  45. ' mov eax,0001FFFFFH
  46. ' .elseif eax >=000080000H
  47. ' mov eax,0000FFFFFH
  48. ' .elseif eax >=000040000H
  49. ' mov eax,00007FFFFH
  50. ' .elseif eax >=000020000H
  51. ' mov eax,00003FFFFH
  52. ' .elseif eax >=000010000H
  53. ' mov eax,00001FFFFH
  54. ' .elseif eax >=000008000H
  55. ' mov eax,00000FFFFH
  56. ' .elseif eax >=000004000H
  57. ' mov eax,000007FFFH
  58. ' .elseif eax >=000002000H
  59. ' mov eax,000003FFFH
  60. ' .elseif eax >=000001000H
  61. ' mov eax,000001FFFH
  62. ' .elseif eax >=000000800H
  63. ' mov eax,000000FFFH
  64. ' .elseif eax >=000000400H
  65. ' mov eax,0000007FFH
  66. ' .elseif eax >=000000200H
  67. ' mov eax,0000003FFH
  68. ' .elseif eax >=000000100H
  69. ' mov eax,0000001FFH
  70. ' .elseif eax >=000000080H
  71. ' mov eax,0000000FFH
  72. ' .elseif eax >=000000040H
  73. ' mov eax,00000007FH
  74. ' .elseif eax >=000000020H
  75. ' mov eax,00000003FH
  76. ' .elseif eax >=000000010H
  77. ' mov eax,00000001FH
  78. ' .elseif eax >=000000008H
  79. ' mov eax,00000000FH
  80. ' .elseif eax >=000000004H
  81. ' mov eax,000000007H
  82. ' .elseif eax >=000000002H
  83. ' mov eax,000000003H
  84. ' .else
  85. ' mov eax,000000001H
  86. ' .endif
  87. ' ret

  88. 返回 (0)

复制代码

相关帖子

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

本版积分规则

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

腾讯云安全认证

GMT+8, 2024-3-28 18:19 , Processed in 0.775044 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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