Assembly 十六进制值中的前导零

Assembly 十六进制值中的前导零,assembly,8051,Assembly,8051,读过一个8051项目的一些汇编,我很难理解为什么有些十六进制值有前导零,而有些没有前导零,我假设这两个示例都设置为acc.5到1,对吗 mov a#020h mov a#20h 我认为这两个例子都是根据第5到1条设定的,对吗 对 但您隐藏的问题是:“为什么十六进制值有一个前导零,即使它似乎不是必需的?” 好的,这只是为了视觉上的一致性,值从“A”到“F”开始。如果这些不以数字开头,它们将不会被识别为数字,而是标识符 mov a, #0E0H ; loads hex E0 (= dec

读过一个8051项目的一些汇编,我很难理解为什么有些十六进制值有前导零,而有些没有前导零,我假设这两个示例都设置为acc.5到1,对吗

mov a#020h

mov a#20h

我认为这两个例子都是根据第5到1条设定的,对吗


但您隐藏的问题是:“为什么十六进制值有一个前导零,即使它似乎不是必需的?

好的,这只是为了视觉上的一致性,值从“A”到“F”开始。如果这些不以数字开头,它们将不会被识别为数字,而是标识符

    mov a, #0E0H  ; loads hex E0 (= dec 224) into ACC
    mov a, #E0H   ; loads the value of "E0H" into ACC, with any value defined as "E0H"

作者喜欢用同样的方式写所有的值。如果有一个值不为零,则可能是输入错误、漏写、来自其他作者或其他原因。

是的,对于尾部的h十六进制常量来说,这是一个不错的样式规则。这使得以后有人可以更容易地将
2
编辑成
F
或其他任何形式,而不必停下来思考语法规则。这就是为什么我喜欢
0x…
而不是拖尾-h。(有些汇编程序确实支持这两种方式,因此您实际上可以选择。)