|
发表于 2024-12-27 21:06:45
|
显示全部楼层
不是已经写清楚了吗?无论是有符号计算还是无符号计算,0-1的结果都是0xFF,与-1比较和与0xFF比较结果是一样的。
测试程序:
- unsigned char Unsigned_Var; //无符号变量
- signed char Signed_Var; //有符号变量
- void main(void)
- {
- //初值=0
- Unsigned_Var=0;
- Signed_Var=0;
- //无符号计算
- Unsigned_Var--;
- if(Unsigned_Var==(-1))
- {
- Unsigned_Var=23;
- }
- //有符号计算
- Signed_Var--;
- if(Signed_Var==(-1))
- {
- Signed_Var=23;
- }
- while(1);
- }
复制代码 编译汇编程序:
- ; //初值=0
- ; Unsigned_Var=0;
- ; SOURCE LINE # 7
- CLR A
- MOV Unsigned_Var,A
- ; Signed_Var=0;
- ; SOURCE LINE # 8
- MOV Signed_Var,A
- ;
- ; //无符号计算
- ; Unsigned_Var--;
- ; SOURCE LINE # 11
- DEC Unsigned_Var
- ; if(Unsigned_Var==(-1))
- ; SOURCE LINE # 12
- MOV A,Unsigned_Var
- CJNE A,#0FFH,?C0001
- ; {
- ; SOURCE LINE # 13
- ; Unsigned_Var=23;
- ; SOURCE LINE # 14
- MOV Unsigned_Var,#017H
- ; }
- ; SOURCE LINE # 15
- ?C0001:
- ;
- ; //有符号计算
- ; Signed_Var--;
- ; SOURCE LINE # 18
- DEC Signed_Var
- ; if(Signed_Var==(-1))
- ; SOURCE LINE # 19
- MOV A,Signed_Var
- CJNE A,#0FFH,?C0003
- ; {
- ; SOURCE LINE # 20
- ; Signed_Var=23;
- ; SOURCE LINE # 21
- MOV Signed_Var,#017H
- ; }
- ; SOURCE LINE # 22
- ?C0003:
复制代码 模拟测试结果:
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|