2

考虑一个非常简单的汇编语言程序中的以下两条语句:

DATA1 DB  +200
DATA2 DB  -130

当我尝试组装它时,汇编器在第 2 条语句上给出错误,因为一个字节可以容纳超过十进制 -128。但是为什么汇编程序没有在 no 1 语句上给出错误?毕竟,一个字节最多可以容纳 127 个正符号整数。相反,汇编程序将值 C8 放在该字节中。

4

3 回答 3

3

也许它不知道文字是有符号还是无符号。对于汇编程序,我觉得这并不奇怪,两者都有用例。

-130 从不适合一个字节,因为它必须有符号并且小于 -128。另一方面,200 正好适合无符号字节,这似乎是汇编程序所采用的观点,如果将 0xC8 解释为无符号字节,则为 200。

于 2011-02-23T14:12:10.837 回答
3

任何数字在组装到可执行文件中时都会转换为位数组。例如,-1 是 0xFF,-2 是 0xFE,等等。-1 和 255 之间的唯一区别是它在代码中的使用方式。汇编器不在乎,它只是想存储数据供您使用。

于 2011-02-23T14:57:34.377 回答
1

所以要点是:

字段的内容意味着您想要它们的意思。所有这一切的结果是,您必须对程序将处理的数字的大小有一个很好的了解,并且您必须相应地定义字段大小。

Peter Abel 的“IBM PC 汇编语言和编程”。

同样来自同一作者“ADD 和 SUB 指令不区分无符号和有符号数据,实际上,只是简单地加减位”

于 2011-02-24T17:00:20.730 回答