0

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

例如,

AND BL, 0FH

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

编辑:

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

AND BL, 00FH
4

2 回答 2

5

除了0or之类的特殊情况1,我倾向于用完整的数字对我的十六进制数字进行编码,这样更容易看出意图是什么:

mov al, 09h
mov ax, 0123h

等等。

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

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

在任何情况下,我都会将大多数数字放入equ语句中,而不是在整个代码中散布幻数。你更愿意看到:

mov ax, 80

或者:

mov ax, lines_per_screen

(a) Of course, it depends on your assembler but, from memory, all the ones I've used work this way.

于 2012-05-01T06:06:39.023 回答
3

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

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

于 2012-05-01T06:03:10.843 回答