`add al, 0` 和 `add al, '0' 有什么区别?
What's the difference between `add al, 0` and `add al, '0'`?
所以我一直在阅读一些汇编代码以供学习,并遇到了这两条指令:
add register, value
add register, 'value' ; Where the value is now in single quotes
两者有什么区别?
如果这恰好是重复的,在我被喷之前。我在这里问是因为我不知道 Google 确切地回答这个问题。
根据汇编器的不同,将字符括在单引号中可能会要求编译器使用该字符的 ASCII 代码,对于数字零,十进制为 48 或十六进制为 0x30。我想这就是这里的意图。其他汇编程序使用单引号作为语法的一部分来指定不同基数的值(例如 h'A5' 表示十六进制值 0xA5);我不确定使用这种表示法的汇编程序是否会将不带前缀的引号中的值解释为:
- 默认基数中的一个数字
- 一个以十为底的数字,即使默认值是其他数字
- 一个字符代码,或者
- 语法错误
这些解释中的任何一种似乎都是合理的,如果某个地方有某种汇编程序可以以每种方式处理它,我也不会感到非常惊讶。
我猜想代码的意图很可能是取数字零的 ASCII 值,周围的指令可能会清楚地说明这一点,但在没有看到上下文的情况下我无法确定。
所以我一直在阅读一些汇编代码以供学习,并遇到了这两条指令:
add register, value
add register, 'value' ; Where the value is now in single quotes
两者有什么区别?
如果这恰好是重复的,在我被喷之前。我在这里问是因为我不知道 Google 确切地回答这个问题。
根据汇编器的不同,将字符括在单引号中可能会要求编译器使用该字符的 ASCII 代码,对于数字零,十进制为 48 或十六进制为 0x30。我想这就是这里的意图。其他汇编程序使用单引号作为语法的一部分来指定不同基数的值(例如 h'A5' 表示十六进制值 0xA5);我不确定使用这种表示法的汇编程序是否会将不带前缀的引号中的值解释为:
- 默认基数中的一个数字
- 一个以十为底的数字,即使默认值是其他数字
- 一个字符代码,或者
- 语法错误
这些解释中的任何一种似乎都是合理的,如果某个地方有某种汇编程序可以以每种方式处理它,我也不会感到非常惊讶。
我猜想代码的意图很可能是取数字零的 ASCII 值,周围的指令可能会清楚地说明这一点,但在没有看到上下文的情况下我无法确定。