【问题标题】:Checking if char is uppercase letter检查 char 是否为大写字母
【发布时间】:2014-03-07 16:07:49
【问题描述】:

我需要检查 char 是否为大写字母。 现在我知道我需要先cmp al, "A",如果大于或等于,我需要cmp al, "Z",然后如果小于或等于,那么它是一个大写字母。 知道如何进行这两个比较而不必在其间跳转标签吗?

【问题讨论】:

  • 我自己不是汇编程序员,所以作为评论而不是答案发布,但为什么不这样:cmp al, "A"jnz END 如果比较失败,cmp al, "Z"jnz END如果比较失败,则编写转换代码,然后是END 标签。不严格遵守“无需跳转标签”的规则,但它仍然非常有效,不是吗?
  • 看看这个问题的答案是不是你想要的:stackoverflow.com/questions/19533884/…

标签: assembly


【解决方案1】:

减去'A',然后与'Z'-'A'进行无符号比较。

sub al, 'A'
cmp al, 'Z'-'A'
jbe uppercase

请注意,这当然会破坏 al 寄存器。

【讨论】:

  • 因此,如果我不想破坏al 寄存器,我只需将其内容移至另一个并检查它,对吗?
  • 谢谢,一旦允许我会接受答案。
  • 如果您不想破坏寄存器,请进行两次比较 - 与“A”和“Z”。
  • Seva,但是这中间必须跳两次,不是吗?
  • 提示:如果您有空闲的 32 位寄存器,您可以使用LEA 一步完成复制和减法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-10
  • 2017-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-14
相关资源
最近更新 更多