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

从F到0 - From F to 0

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

易语言MASM汇编置入代码将整数型数值转换到IPv4格式地址(IP地址)字符串 (返回文本型)

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

  1. .版本 2

  2. .程序集 程序集1

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


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

  6. .子程序 _临时子程序
  7. .局部变量 IP, 文本型

  8. ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
  9. IP = 整数型到IPv4地址文本 (1234567890)
  10. 输出调试文本 (IP)
  11. IP = 整数型到IPv4地址文本 (-1)
  12. 输出调试文本 (IP)
  13. IP = 整数型到IPv4地址文本 (十六进制 (“08080808”))
  14. 输出调试文本 (IP)
  15. IP = 整数型到IPv4地址文本 (十六进制 (“0A0A0A0A”))
  16. 输出调试文本 (IP)
  17. IP = 整数型到IPv4地址文本 (十六进制 (“64646464”))
  18. 输出调试文本 (IP)
  19. IP = 整数型到IPv4地址文本 (十六进制 (“7F000001”))
  20. 输出调试文本 (IP)
  21. IP = 整数型到IPv4地址文本 (十六进制 (“AAAAAAAA”))
  22. 输出调试文本 (IP)


  23. .子程序 整数型到IPv4地址文本, 文本型, 公开, 与PHP的 long2ip() 函数功能相同
  24. .参数 IPv4整数, 整数型
  25. .局部变量 文本缓存, 文本型

  26. 文本缓存 = 取空白文本 (15)
  27. 置入代码 ({ 96, 139, 69, 8, 139, 117, 252, 177, 46, 80, 193, 232, 24, 232, 48, 0, 0, 0, 136, 14, 70, 88, 80, 193, 232, 16, 232, 35, 0, 0, 0, 136, 14, 70, 88, 80, 193, 232, 8, 232, 22, 0, 0, 0, 136, 14, 70, 88, 232, 13, 0, 0, 0, 50, 201, 136, 14, 70, 97, 139, 69, 252, 201, 194, 4, 0, 80, 83, 60, 10, 114, 14, 232, 64, 0, 0, 0, 128, 196, 48, 128, 195, 48, 128, 199, 48, 60, 0, 114, 11, 60, 9, 119, 7, 4, 48, 136, 6, 70, 235, 37, 60, 10, 114, 14, 60, 99, 119, 10, 136, 30, 136, 102, 1, 131, 198, 2, 235, 19, 60, 100, 114, 15, 60, 255, 119, 11, 136, 62, 136, 94, 1, 136, 102, 2, 131, 198, 3, 91, 88, 195, 81, 82, 138, 208, 50, 228, 50, 219, 50, 255, 60, 0, 114, 10, 60, 9, 119, 6, 138, 224, 235, 100, 235, 98, 60, 10, 114, 34, 60, 99, 119, 30, 181, 9, 177, 90, 235, 17, 56, 200, 114, 8, 138, 224, 42, 225, 138, 221, 235, 72, 254, 205, 128, 233, 10, 128, 249, 10, 115, 234, 235, 60, 60, 100, 114, 56, 60, 255, 119, 52, 181, 2, 177, 200, 235, 41, 56, 200, 114, 32, 138, 253, 181, 9, 42, 193, 177, 90, 235, 17, 56, 200, 114, 8, 138, 224, 42, 225, 138, 221, 235, 20, 254, 205, 128, 233, 10, 128, 249, 0, 115, 234, 254, 205, 128, 233, 100, 128, 249, 100, 115, 210, 138, 194, 90, 89, 195 })
  28. ' pushad
  29. ' mov eax,[ebp+8]
  30. ' mov esi,[ebp-4]
  31. ' mov cl,46
  32. ' push eax
  33. ' shr eax,24
  34. ' call CHAR2TEXT
  35. ' mov [esi],cl
  36. ' inc esi
  37. ' pop eax
  38. ' push eax
  39. ' shr eax,16
  40. ' call CHAR2TEXT
  41. ' mov [esi],cl
  42. ' inc esi
  43. ' pop eax
  44. ' push eax
  45. ' shr eax,8
  46. ' call CHAR2TEXT
  47. ' mov [esi],cl
  48. ' inc esi
  49. ' pop eax
  50. ' call CHAR2TEXT
  51. ' xor cl,cl
  52. ' mov [esi],cl
  53. ' inc esi
  54. ' popad
  55. ' mov eax,[ebp-4]
  56. ' leave
  57. ' retn 4
  58. ' CHAR2TEXT:
  59. ' push eax
  60. ' push ebx
  61. ' .if al >=10
  62. ' call GET_BYTE_UTH
  63. ' add ah,48
  64. ' add bl,48
  65. ' add bh,48
  66. ' .endif
  67. ' .if al >= 0 && al <= 9
  68. ' add al,48
  69. ' mov [esi],al
  70. ' inc esi
  71. ' .elseif al >= 10 && al <= 99
  72. ' mov [esi],bl
  73. ' mov [esi+1],ah
  74. ' add esi,2
  75. ' .elseif al >= 100 && al <=255
  76. ' mov [esi],bh
  77. ' mov [esi+1],bl
  78. ' mov [esi+2],ah
  79. ' add esi,3
  80. ' .endif
  81. ' pop ebx
  82. ' pop eax
  83. ' ret
  84. ' GET_BYTE_UTH:
  85. ' push ecx
  86. ' push edx
  87. ' mov dl,al
  88. ' xor ah,ah
  89. ' xor bl,bl
  90. ' xor bh,bh
  91. ' .if al >= 0  && al <= 9
  92. ' mov ah,al
  93. ' jmp GBU_END
  94. ' .elseif al >= 10 && al <= 99
  95. ' mov ch,9
  96. ' mov cl,90
  97. ' .while cl >= 10
  98. ' .if al >= cl
  99. ' mov ah,al
  100. ' sub ah,cl
  101. ' mov bl,ch
  102. ' jmp GBU_END
  103. ' .endif
  104. ' dec ch
  105. ' sub cl,10
  106. ' .endw
  107. ' .elseif al >= 100 && al <=255
  108. ' mov ch,2
  109. ' mov cl,200
  110. ' .while cl >= 100
  111. ' .if al >= cl
  112. ' mov bh,ch
  113. ' mov ch,9
  114. ' sub al,cl
  115. ' mov cl,90
  116. ' .while cl >= 0
  117. ' .if al >= cl
  118. ' mov ah,al
  119. ' sub ah,cl
  120. ' mov bl,ch
  121. ' jmp GBU_END
  122. ' .endif
  123. ' dec ch
  124. ' sub cl,10
  125. ' .endw
  126. ' .endif
  127. ' dec ch
  128. ' sub cl,100
  129. ' .endw
  130. ' .endif
  131. ' GBU_END:
  132. ' mov al,dl
  133. ' pop edx
  134. ' pop ecx
  135. ' ret

  136. 返回 (“”)
复制代码

相关帖子

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

本版积分规则

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

腾讯云安全认证

GMT+8, 2024-4-19 07:11 , Processed in 0.401023 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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