无符号数和有符号数在汇编程序里如何区分?
在汇编程序里是没有无符号数和有符号数区分的。
加减运算指令是不区分有符号和无符号的,在计算机对有符号整数的表示只采取一种编码方式,不存在正数用原码,负数用补码的问题。
在汇编语言里声明变量的时候,没有signed和unsignde之分,汇编器全部将输入的整数字面量当作有符号数处理成补码存入到计算机中,只有这一个标准,并且全部汇编成补码。也就是说,db-20汇编后为:EC,而db236汇编后也为EC。
db是分配一个字节,一个字节能表示的有符号整数范围是:-128~+127,那么db236超过了这一范围,+236的补码的确超出了一个字节的表示范围,那么拿两个字节是可以装下的,应为:00EC,也就是说+236的补码应该是00EC,一个字节装不下。00EC是两个字节,被截断成EC,当把236当作无符号数时,它汇编后的结果正好也是EC。
扩展资料
无符号数和有符号数的使用
#include<stdio.h>
#include<string.h>
intmain()
{
intx=2;
char*str="abcd";
inty=(x-strlen(str))/2;
printf("%d\n",y);
}
参考资料来源:百度百科—有符号数处理
参考资料来源:百度百科—无符号数