51单片机 用汇编语言怎么编程:几个有符号数的比较大小

下面2个人的 都是无符号的 我要 有符号的比较 程序

51单片机中,没有专门的有符号数比较指令,只能通过一些变通的方法来实现,比如:
比较30H和40H中有符号数的大小,结果放在R2中,大于则为1,等于为0,小于为128:
CMPDAT:
MOV A,30H
JB ACC.7,CMPF1
MOV B,A
MOV A,40H
JB ACC.7,CMPZ2 ;30H正,40H负所以30H>40H
CJNE A,B,CMPZ1 ;均为正,比较大小
MOV R2,#0
RET
CMPZ1:
JC,CMPZ2
CMPZ11:
MOV R2,#128
RET
CMPZ2:
MOV R2,#1
RET
CMPF1:
ANL A,#7FH
MOV B,A
MOV A,40H
JNB ACC.7,CMPF3 ;30H负,40H负
SJMP CMPZ11 ;30负,40H正,所以30H<40H
CMPF3:
ANL A,#7FH
CJNE A,B,CMPF10 ;两个均为负数
MOV R2,#0
RET
CMPF10:
JC CMPZ2 ;30H<40H(负数小者大)
SJMP CMPZ11 ;30H>40H
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-20
设内部RAM中的30H和31H单元中有两个带符号数,求其中的大数,放在32H单元中。
;
MOV 32H, 30H ;先取一个放好.
MOV A, 30H
CLR C
SUBB A, 31H ;(30H)-(31H)
JNB ACC.7, ZZZ ;差为正数则转移.
JB OV, _END ;负、且溢出转至结尾.
SJMP XXX ;否则去存31H
ZZZ:
JNB OV, _END ;差为正、且无溢出转至结尾.
XXX:
MOV 32H, 31H
_END:
SJMP $

END本回答被提问者采纳
第2个回答  2010-12-03
SUBB A,B
JNB CY ,D0 ;D0是A>B本回答被网友采纳
第3个回答  2010-12-03
SUBB A,B
JNB CY ,D0 ;D0是A>B

51单片机 用汇编语言怎么编程:几个有符号数的比较大小
51单片机中,没有专门的有符号数比较指令,只能通过一些变通的方法来实现,比如:比较30H和40H中有符号数的大小,结果放在R2中,大于则为1,等于为0,小于为128:CMPDAT:MOV A,30H JB ACC.7,CMPF1 MOV B,A MOV A,40H JB ACC.7,CMPZ2 ;30H正,40H负所以30H>40H CJNE A,B,CMPZ1 ;...

51单片机 用汇编语言怎么编程:几个有符号数的比较大小
设内部RAM中的30H和31H单元中有两个带符号数,求其中的大数,放在32H单元中。;MOV 32H,30H ;先取一个放好.MOV A,30H CLR C SUBB A,31H ;(30H)-(31H)JNB ACC.7,ZZZ ;差为正数则转移.JB OV,_END ;负、且溢出转至结尾.SJMP XXX ;否则去存31H ZZZ:JNB OV,_END ;差为正、且无...

51单片机如何用汇编语言从十个数里选出最大值最小值
1、首先可以利用51单片机子程序输出找到的最大最小值。2、其次按照数据存储或者输入的顺序,把每2个数进行比较。3、最后每次比较都选择较大的数和下一个数据进行比较,这样最后一次比较中较大数就是10个数据里面的最大值。

51汇编实现比较三个数的大小并排序
先在三个数字中,找一个最大的,放在40H。再在余下的两个数字中,找一个最大的,放在41H。 本回答被网友采纳 做而论道 | 推荐于2017-12-15 12:49:01 举报| 评论 0 2 为您推荐: 汇编语言比较大小 汇编比较指令 汇编判断大小 汇编比较两个数大小 汇编in 汇编 有符号数比较 汇编SWAP 汇编cmp...

单片机实验中,怎么用汇编比较大小?
单片机实验中,用汇编语言编程比较两个数大小,主要用SUBB减法指令,也可以使用CJNE指令。示例程序如下:;启动入口 ORG 0000H;复位启动 LJMP START;ORG 0100H;;;主控程序 START:MOV R0,#30H MOV X,#0 MOV Y,#0 LOOP:MOV A,@R0 CLR C SUBB A,#111 JNC NEXT CPL C MOV A,@R0 SUBB A,Y...

51单片机怎么表示有符号数
比如:比较30H和40H中有符号数的大小,结果放在R2中,大于则为1,等于为0,小于为128。51单片机是对兼容英特尔8051指令系统的单片机的统称。51单片机广泛应用于家用电器、汽车、工业测控、通信设备中。因为51单片机的指令系统、内部结构相对简单,所以国内许多高校用其进行单片机入门教学。

汇编语言中CJNE语句是怎么判断的?
CJNE这个指令是51单片机的汇编指令,是比较两个操作数,如果相等这转移。用法如下:CJNE A,#30H,NXT CJNE R1,#30H,NNN 等等。CJNE是MCS-51系列单片机指令系统中的比较条件转移指令;若两个操作数相等,程序按顺序往下d执行;若两个操作数不相等,则进行转移。由于该指令执行还要影响CY标志,因此在转移...

单片机用汇编语言怎样判断几个数的大小?
在汇编语句中没有直接的大小运算功能,要想实现比大小,只能是减法运算然后判断进位位是否为1,来实现。如果贵多个数,就要多次运算不停地跳转循环!

51单片机汇编语言编程问题
SETB 01H,就是把20H单元里面的D1位置一。该单元的内容记为:D7D6D5...D1D0, D1=1,该字节的数值就是0000 0010,就是02H。

51单片机编程题,用汇编语言怎么做?
ET0=1; TR0=1;} void timer0() interrupt 1 { TH0 = (65536-500)\/256; \/\/定时器装初值500, 1mS 中断一次 TL0 = (65536-500)%256;CP=~CP; \/\/改变脉冲信号的输出状态 } void main(){ Timer0_init();CP=0;while(1) { } } 汇编语言,才看到,算了,你别人的回答吧 ...

相似回答