A. 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 ;均为正,比较大小
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
B. 51单片机中怎样比较两个数的大小
jc是判断借位标志CY的跳转指令,程序应该有做减法的指令,当A<B且做A-B运算后,发生借位,此时硬件置CY为1
C. 在单片机怎么用C语言 比较几个数的大小
冒泡法啊,去看书!C语言书上很详细,我就不再给你写了,你自己看懂就学会了~~~
//冒泡法排序程序
#include<reg52.h>
char x[4]={0,1,2,3}; //数组中可存放n位相应的数据,
//应用于单片机时,可把得到的数据放入本数组内
int a,b,t;
void main()
{
for(a=0;a<3;a++) //n位时为a<n-1
for(b=a+1;b<4;b++) //n位时为b<n
if(x[a]<x[b]) //交换
{
t=x[a];
x[a]=x[b];
x[b]=t;
}
//此时已进行完从大到小的排序x[4]={3,2,1,0};
}
刚利用上班时间给你写的,够详细吧?应该能看的明白了!
呵呵,哥们给多加点分吗,俺马上就要升到五级了,哈哈~~~~~~
D. 单片机 两个有符号数分别在50H和51H里面,比较他们的大小,最后把大的放入60H单元。
;比较有符号数的大小,可以先进行一次相减,
;再根据差的正负、是否溢出,来区分大小。
;程序如下:
;
ORG
0000H
MOV
50H,
#-28
;先随便存入两个数字.
MOV
51H,
#108
;========================================
BIJIAO:
;开始比较.
MOV
A,
50H
CLR
C
SUBB
A,
51H
;(50H)-(51H)
JZ
DA_50H
;差为0转移.
JB
ACC.7,
FU
;负数转移.
JB
OV,
DA_51H
;有溢出转移.
SJMP
DA_50H
;正数且无溢出,转到(50H)大.
;----------------------------------------
FU:
JB
OV,
DA_50H
;负数且有溢出,转到(50H)大.
;----------------------------------------
DA_51H:
MOV
60H,
51H
;(51H)大的处理程序.
SJMP
BJ_END
;转到结束.
;----------------------------------------
DA_50H:
MOV
60H,
50H
;(50H)大的处理程序.
;----------------------------------------
BJ_END:
SJMP
$
;比较程序结束.
;========================================
END
E. 在MCS-51单片机中怎么用CJNE指令比较两数大小
比如比较30H和31H寄存器中数据大小:
MOV A,30H
CJNE A,31H,NXT
....... ;两数相等
NXT:
JC SMALL
....... ;30H大于31H
RET
SMALL:
..... ;30H小于31H
F. 单片机char数据和int数据的大小怎么比较
一个char数据,一个int数据,是同样可以用if 语句来比较的。
单片机的C语言编程,char 数据不再只是字符了,就是8位带符号数,有正负数的。这一点不同于电脑的C语言编程,只是指字符型。
如果确实是要用char表示字符,那就用unsigned char来表示,同样,可以用if 语句比较。
G. 如何比较单片机中两个带小数位的数的大小
BJ:
MOV A, 30H ;先比较十位
CJNE A, 33H, ZZZ ;比较不等转移
MOV A, 31H ;相等则比较个位
CJNE A, 34H, ZZZ ;比较不等转移
MOV A, 32H
CJNE A, 35H, ZZZ ;比较不等转移
…… ;两数相等
……
ZZZ:
JNC A_DA ;无借位则为A大
B_DA: ;否则就是B大
……
……
A_DA:
……
……
END
H. 单片机实验在冒泡排序中,如何实现两个数据大小比较的
用C语言编程,直接比较,例 如
if(a>=b).......
I. 单片机的汇编语言 如何判断两个无符号数的大小
谁跟你说图上是判断有符号数大小的程序???
这程序就是比较无符号数大小的,只不过加了数据搬运而已。
查了一下PIC的SUBWF指令,的确是比较有符号数的。
如果要比较无符号数,可先判定两个数的最高位是否同号:若异号,则最高位为1者大;若同号,再用SUBWF减法判定大小,参考书上这个例程。
J. 单片机C语言编程时,不同进制数进行大小比较,怎么写请举例. 这样写是不是正确: a(十六进制数)>13000
单片机只能认识二进制数字,所谓的不同进制数只是用户编程时给定变量数值时的形式不同而已,所以如果你的变量是数值类型的,直接比较就可以。但如果数值的赋值过程还没有完成,就需要单片机对表示不同进制数字的字符串,进行转换为数值后,再比较了。