【问题标题】:Appending 0 before the hexa number在十六进制数前附加 0
【发布时间】:2012-05-01 06:00:36
【问题描述】:

我的老师指示我在编写指令时将 0 添加到 hexa numbers 之前,因为一些编译器在指令中的数字之前搜索 0 以将其与标签区分开来。如果指令已经以0开头,我很困惑,在这种情况下应该怎么做?

例如,

AND BL, 0FH

是否需要在该十六进制数之前添加0?请帮帮我。谢谢

编辑:

对不起,如果我之前不够清楚。我的意思是,在上面的例子中,一个 0 已经存在,我需要将它转换为,

AND BL, 00FH

【问题讨论】:

    标签: x86-16 assembly


    【解决方案1】:

    除了01 等特殊情况外,我倾向于使用完整的数字对我的十六进制数字进行编码,以便更容易看出意图是什么:

    mov al, 09h
    mov ax, 0123h
    

    等等。

    对于数字以字母字符开头的情况(如deadbeef),我会在其前面加上一个额外的0

    但不,如果您的十六进制数已经以数字开头,则通常 (a) 不需要这样做。

    在任何情况下,我都会将大多数数字放入equ 语句中,而不是在整个代码中添加幻数。你想看看:

    mov ax, 80
    

    或:

    mov ax, lines_per_screen
    

    (a)当然,这取决于你的汇编器,但是,根据记忆,我用过的所有的都是这样工作的。

    【讨论】:

      【解决方案2】:

      不,没有必要(包括多个前导 0 是相当不寻常的)。

      您的示例是一个恰当的示例——如果没有前导 0 来告诉它这是一个数字,汇编程序通常会将 FH 解释为一个符号而不是一个数字。

      【讨论】:

      • @www.AppTec.net:是的,当我说包含多个前导 0 将是不寻常的时,这就是我所说的。换句话说,我希望看到0FH,但一般来说,不是00FH。偶尔你会看到额外的前导零,主要是为了强调所涉及的大小。例如,Red_mask = 0ff0000h, green_mask = 000ff00h, blue_mask = 00000ffh.
      猜你喜欢
      • 1970-01-01
      • 2013-12-27
      • 1970-01-01
      • 2015-11-07
      • 1970-01-01
      • 2011-09-12
      • 2013-10-20
      • 2015-02-08
      • 2018-07-26
      相关资源
      最近更新 更多