更改用户名CRC32解密回帖奖励召回投票记录删除领夜猫子帮助中心 本站已运行
查看: 157|回复: 0
收起左侧

易语言MASM置入代码两个文本型字符串大小太空船运算符比较 (返回短整数型:0,1,-1)

[复制链接]
发表于 2019-8-13 10:18:59 | 显示全部楼层 |阅读模式

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

您需要 登录 才可以下载或查看,没有帐号?注册有礼

x

  1. .版本 2

  2. .程序集 程序集1

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


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

  6. .子程序 _临时子程序
  7. .局部变量 文本A, 文本型
  8. .局部变量 文本B, 文本型
  9. .局部变量 比较结果, 短整数型

  10. ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
  11. 置随机数种子 ()
  12. .判断循环首 (真)
  13.     文本A = 取随机文本 (取随机数 (1, 256), 真, 真, 真, 真, 真)
  14.     文本B = 取随机文本 (取随机数 (1, 256), 真, 真, 真, 真, 真)
  15.     .如果真 (取随机数 (0, 100) = 0)
  16.         文本A = 文本B
  17.     .如果真结束
  18.     比较结果 = 文本型_大小比较 (文本A, 文本B)
  19.     .判断开始 (比较结果 = 0)
  20.         检查 (文本A = 文本B)
  21.     .判断 (比较结果 = 1)
  22.         检查 (文本A > 文本B)
  23.     .判断 (比较结果 = -1)
  24.         检查 (文本A < 文本B)
  25.     .默认
  26.         暂停 ()
  27.     .判断结束
  28.     .如果真 (取随机数 (0, 1000) = 0)
  29.         输出调试文本 (文本A, 文本B)
  30.     .如果真结束

  31. .判断循环尾 ()


  32. .子程序 文本型_大小比较, 短整数型, 公开, 太空船运算符比较 A等于B返回0 A大于B返回1 A小于B返回-1
  33. .参数 文本A, 文本型
  34. .参数 文本B, 文本型

  35. 置入代码 ({ 83, 86, 87, 139, 117, 8, 139, 54, 139, 125, 12, 139, 63, 51, 192, 138, 30, 138, 63, 56, 251, 116, 18, 56, 251, 118, 7, 184, 1, 0, 0, 0, 235, 5, 184, 255, 255, 255, 255, 235, 14, 10, 219, 116, 4, 10, 255, 117, 2, 235, 4, 70, 71, 235, 216, 95, 94, 91, 201, 194, 8, 0 })
  36. ' push ebx
  37. ' push esi
  38. ' push edi
  39. ' mov esi,[ebp+8]
  40. ' mov esi,[esi]
  41. ' mov edi,[ebp+12]
  42. ' mov edi,[edi]
  43. ' xor eax,eax
  44. ' TEXT_LOOP:
  45. ' mov bl,[esi]
  46. ' mov bh,[edi]
  47. ' .if bl != bh
  48. ' .if bl > bh
  49. ' mov eax,1
  50. ' .else
  51. ' mov eax,-1
  52. ' .endif
  53. ' jmp ASM_END
  54. ' .endif
  55. ' .if bl == 0 || bh == 0
  56. ' jmp ASM_END
  57. ' .endif
  58. ' inc esi
  59. ' inc edi
  60. ' JMP TEXT_LOOP
  61. ' ASM_END:
  62. ' pop edi
  63. ' pop esi
  64. ' pop ebx
  65. ' leave
  66. ' retn 8


  67. 返回 (0)

  68. .子程序 取随机文本, 文本型
  69. .参数 长度, 整数型
  70. .参数 允许数字, 逻辑型, 可空
  71. .参数 允许大写, 逻辑型, 可空
  72. .参数 允许小写, 逻辑型, 可空
  73. .参数 允许符号, 逻辑型, 可空
  74. .参数 允许空格, 逻辑型, 可空
  75. .局部变量 返回值, 字节型, , "0"
  76. .局部变量 类型, 字节型
  77. .局部变量 字符码, 字节型

  78. .如果真 (长度 < 1 或 允许数字 = 假 且 允许大写 = 假 且 允许小写 = 假 且 允许符号 = 假 且 允许空格 = 假)
  79.     返回 (“”)
  80. .如果真结束
  81. .循环判断首 ()
  82.     类型 = 取随机数 (0, 4)
  83.     .判断开始 (类型 = 0)
  84.         .如果 (允许数字)
  85.             字符码 = 取随机数 (48, 57)
  86.         .否则
  87.             到循环尾 ()
  88.         .如果结束

  89.     .判断 (类型 = 1)
  90.         .如果 (允许大写)
  91.             字符码 = 取随机数 (65, 90)
  92.         .否则
  93.             到循环尾 ()
  94.         .如果结束

  95.     .判断 (类型 = 2)
  96.         .如果 (允许小写)
  97.             字符码 = 取随机数 (97, 122)
  98.         .否则
  99.             到循环尾 ()
  100.         .如果结束

  101.     .判断 (类型 = 3)
  102.         .如果 (允许符号)
  103.             类型 = 取随机数 (0, 3)
  104.             .判断开始 (类型 = 0)
  105.                 字符码 = 取随机数 (33, 47)
  106.             .判断 (类型 = 1)
  107.                 字符码 = 取随机数 (58, 64)
  108.             .判断 (类型 = 2)
  109.                 字符码 = 取随机数 (91, 96)
  110.             .判断 (类型 = 3)
  111.                 字符码 = 取随机数 (123, 126)
  112.             .默认

  113.             .判断结束

  114.         .否则
  115.             到循环尾 ()
  116.         .如果结束

  117.     .判断 (类型 = 4)
  118.         .如果 (允许空格)
  119.             字符码 = 32
  120.         .否则
  121.             到循环尾 ()
  122.         .如果结束

  123.     .默认

  124.     .判断结束
  125.     加入成员 (返回值, 字符码)
  126. .循环判断尾 (取数组成员数 (返回值) < 长度)
  127. 返回 (到文本 (返回值))
复制代码

相关帖子

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册有礼

本版积分规则