如何在Assembly中表示八进制数?

时间:2016-09-19 02:04:06

标签: assembly x86

例如,对于十六进制数字,我们可以使用0x983988790h

如何编写八进制数字常量?这有用吗?

mov eax, 70o

2 个答案:

答案 0 :(得分:2)

取决于汇编程序,但大多数汇编程序包括NASM允许0o,o代表八进制。就像你使用0x,其中x代表十六进制。

    mov     ax,310q         ; octal 
    mov     ax,310o         ; octal again 
    mov     ax,0o310        ; octal yet again 
    mov     ax,0q310        ; octal yet again 

信息来源:Here

同样,它不是0或所有汇编程序的上述语法。它可能因汇编程序而异,但NASM确实使用上述语法,因为您可以看到提供的链接以获取更多信息。如果你有其他装配工,请查看他们的手册,如FASM:Here。 GAS:Here

答案 1 :(得分:2)

对于八进制,

NASM supports 70o70q0o700q70

我推荐使用的是tech70版本,以避免未来(人类)读者将小写字母o误认为零的风险。我也不喜欢十六进制的尾随后缀样式,因为它很容易被遗漏。它有助于从常量的其余部分使用相反的情况,但是领先的0x或者更好的是更清楚。 (对于十六进制,避免使用前导0使其成为数字常量而不是符号名称。)

对于十六进制常量支持it will certainly vary by assembler,所以请查看汇编程序手册。例如大多数DOS / Windows专用的汇编程序不支持0xDEADBEEF,只支持0DEADBEEFh样式,所以我猜他们的八进制选项也少了。

有关各种汇编程序手册(以及许多其他有用的资源和指南)的链接,请参阅标记wiki。