为什么汇编程序不报告错误?

时间:2011-02-23 14:01:24

标签: assembly integer signed

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

DATA1 DB  +200
DATA2 DB  -130

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

3 个答案:

答案 0 :(得分:3)

也许它不知道文字是否已签名或未签名。对于汇编程序,我不觉得太令人惊讶,两者都有用例。

-130永远不会适合一个字节,因为它必须是有符号且小于-128。另一方面,200适合无符号字节,这似乎是汇编程序所采用的视图,如果被解释为无符号字节,则0xC8为200.

答案 1 :(得分:3)

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

答案 2 :(得分:1)

所以要点是:

  

字段的内容是指您想要表达的内容。所有这一切的结果是,您必须对程序将处理的数字的大小有一个好主意,并且必须按照惯例定义字段大小。

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

  

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