【问题标题】:ASCII to Hexadecimal - ASMASCII 到十六进制 - ASM
【发布时间】:2015-08-23 17:40:26
【问题描述】:

检查并没有看到任何已经回答的问题。所以我知道用 '9' 的 ASCII 字符可以减去 30h 得到 9h 的十六进制值。

现在要获得 'A' 的 ASCII 字符的十六进制值,是否必须减去 32h 然后加上 1d?我是否完全走在正确的轨道上?

【问题讨论】:

  • 在 Internet 上查找许多 ASCII 表中的一个,您会看到它是如何排列的。
  • 我想我只是对减去十六进制值(例如 2E 或 3A)时哪些部分计数感到困惑。从逻辑上讲,我认为 A-F 十六进制计数,所以在这种情况下,我只需减去 37h。
  • 字母与十进制数字不连续。单次减法无法为所有十六进制字符生成十六进制值。

标签: assembly hex ascii


【解决方案1】:

从 ASCII 值中获取数字时,可以减去 0x30

sub al, 0x30

...或者简单地说,0x0F,如果你确定它是一个数字

and al, 0x0F

从 ASCII 值中获取字符时,必须参考 ASCII 区间。

sub al, 0x41 ; for upper-case characters (0x41 - 0x5A)
sub al, 0x61 ; for lower-case characters (0x61 - 0x7A)

【讨论】:

    猜你喜欢
    • 2011-12-09
    • 2012-10-02
    • 1970-01-01
    • 2014-06-22
    • 2010-11-14
    • 1970-01-01
    • 2022-06-28
    • 2015-05-22
    • 2017-10-24
    相关资源
    最近更新 更多