汇编语言中CJNE语句是怎么判断的?

单片机语言中全是无符号数,那么用CJNZ语句判断时,是不是无法确定大于零还是小于零?
北航《单片机原理》一书中有一道题,统计正数、负数、零的个数,其中用到CJNE语句:
CJNE A,#0,l1 ;A不等于零跳转,且A大于零等于零或C置零,A小于零C置一。
但我觉得A 里存放的是无符号数,所以总是大于零的,所以这句的结果CJNZ C总是置一的。不知对不对??
前面写错了,CJNZ C总是置零的。
非常感谢二位的指点。我还有一个疑问:(A)- 0 结果有没有可能是负数?从而使C置一。假如单片机里用的是无符号数,那有没有小于零的A?

CJNE这个指令是51单片机的汇编指令,是比较两个操作数,如果相等这转移。用法如下:

CJNE A,#30H,NXT

CJNE R1,#30H,NNN

等等。

CJNE是MCS-51系列单片机指令系统中的比较条件转移指令;若两个操作数相等,程序按顺序往下d执行;若两个操作数不相等,则进行转移。由于该指令执行还要影响CY标志,因此在转移之后可以通过对CY位的检查来判别正负数。

扩展资料:

由于汇编指令系统庞大,因而需构建指令系统体系,其指令数量庞大,格式复杂,可记忆性差等。指令中最难的是指令所支持的寻址方式,其实质就是指令中操作数如何获取。对于处理器而言,就是如何找到他所需的数据。

但对于计算机底层的汇编语言而言,这种寻址方式将涉及大量的计算存储格式,与 复杂的存储管理方式紧密相关,因而难以理解。最后,汇编指令还关系到如何影响标志位,但处理器标志位非常复杂,因而对其机制掌握就比较困难。

参考资料来源:百度百科-汇编语言

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-23
CJNE A,#0,l1 ;
该指令执行的操作是,首先用(A)- 0 结果不保存但影响进位C,只判断结果是否为零以确定转移与否。
另外:“单片机语言中全是无符号数”的说法是不对的,有很多数就是有符号的,视具体情况而定。本回答被提问者采纳
第2个回答  2009-02-16
不管大小只看等于不等于零
相似回答