用单片机汇编语言求:1、统计一串数据中正数负数的个数(不包括零)

2…找出一串数据的正数(或者负数)并从片外RAM传送到片内RAM

ORG 0000H
LJMP 0100H
ORG 0100H
MOV R7,#06H
MOV R0,#30H
MOV R1,#00H;存放小于0的个数
MOV R2,#00H;存放等于0的个数
MOV R3,#00H;存放大于0的个数
START:MOV A,@R0
CJNE A,#00H,LOOP
SJMP SLOOP1
LOOP:JC SLOOP0
JNC SLOOP2
SLOOP0:INC R1
SJMP NEXT
SLOOP1:INC R2
SJMP NEXT
SLOOP2:INC R3
SJMP NEXT
NEXT:INC R0
DJNZ R7,START
MOV 22H,R3
MOV 21H,R1
MOV 20H,R2
END
你要传必须有地址,这是我做的
片内RAM 30H-35H单元中存放了一组8位有符号数,统计出大于0,小于0和等于0的单元数目,结果分别存入片外20H、21H和22H单元中。
你改一下就可以用了,会改吧,不会再问我
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-11-02
不想写程序,给你个提示,用CMP指令,查看A寄存器中的C位追问

帮忙写一下第二题的啦

第2个回答  2011-11-01
不错

用单片机汇编语言求:1、统计一串数据中正数负数的个数(不包括零)
MOV R1,#00H;存放小于0的个数 MOV R2,#00H;存放等于0的个数 MOV R3,#00H;存放大于0的个数START:MOV A,@R0 CJNE A,#00H,LOOP SJMP SLOOP1LOOP:JC SLOOP0 JNC SLOOP2SLOOP0:INC R1 SJMP NEXTSLOOP1:INC R2 SJMP NEXTSLOOP2:INC R3 SJMP NEXTNEXT:INC R0DJNZ R7,START MOV 22H,R3 MOV 21H,R...

80c51单片机汇编语言问题(统计内存偶数个数)
mov r0,#40h mov b,#15 mov r1,#00h l1: mov a,@r0 rrc a jc l2 inc r1 l2: inc r0 djnz b,l1 mov r0,#50h mov @r0,r1

求1加到20的单片机汇编语言
ORG 0000H LJMP 0100H ORG 0100H MOV R7,#06H MOV R0,#30H MOV R1,#00H;存储的数值小于0 \/> MOV R2,#00H;存储的零的个数的 MOV R3,#00H;商店 开始大于0的数字:MOV A,_at_ R0,CJNE一个,#00H,LOOP SJMP SLOOP1 LOOP:JC SLOOP0 JNC SLOOP2 SLOOP0:INC R1 SJMP...

51单片机为基础用汇编语言编写用数码管显示一个同时有"加""减""乘...
KEYI:ACALL KS1 CJNE A,#0F0H,LK1 ACALL DIR AJMP KEYI LK1:ACALL DIR ACALL DIR ACALL KS1 CJNE A, #0F0H,LK2 ACALL DIR AJMP KEYI LK2: ACALL KS1 MOV R2,A ORL A,#0FH MOV P0,A ANL A,#0FH ADD A,R2 ;键特征值 CJNE A,#0EEH,JZHI1 MOV A,#00H PUSH ACC JZHI...

单片机汇编语言中符号 # 是什么意思
你这回答不完全,你这只能特指在51系列的汇编中,因不同厂家的汇编就不同样,如义隆的就是用@表示后是立即数。这些符号只是一个特定的表示符,在不同的厂家芯片的汇编中这些*,#,@,%,...都有只是一个厂家在出汇编时特定的一个符号罢。要具体到那个厂家的什么单片机上并要说明这符号在什么位置上...

单片机判断正负数的办法
判断正负首先要搞清楚你的数据类型,对于汇编是没有正负之分的,只有在C语言或者其他高级语言才有正负数。汇编中只有内存和数据、寄存器的概念,都没有数据类型的概念,所以不可能有正负之分,你说第一位为0是负数,那就是负数。C语言中的存储方式决定数据在内存中的存放方式,C语言中约定负数的最高位...

用汇编语言实现小数的计算
单片机好像没有浮点数的计算指令吧?我想到一个不太好的方法,你凑合一下吧 V0应该是整数吧?这样现将V0乘上10,再减去4,然再在乘上100000,最后除以19530 这样就全部转化成整数的运算了,多于寄存器位数的数据的计算你应该会吧?写成等式就是:T=(V0-0.4)\/0.01953 =(10V0-10*0.4)*100000\/0....

汇编语言问题,判断符号数正负
汇编语言中判断符号数正负的方法是:1、确定数据类型,是有几个字节构成。2、判断最高位是1还是0,如果是1,那么该数为负,如果为0,那么该数为正。以51单片机汇编为例,比如一个符号数存在32H31H30H中,32H为高位,那么判断该数正负程序如下:CHKZF:MOV A,32H ;取最高字节 JB ACC.7,DATF...

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

汇编语言中奇偶数是如何判断的?
假如是51单片机汇编(不同汇编语言判断语句不同):判断累加器A中数据的奇偶可以使用如下语句:JB ACC.0,DATA0;如果D0=1,是奇数,跳转到DATA0继续执行程序 NOP ;否则就是偶数,实际程序以具体语句代替NOP DATA0:或者像下面:JNB ACC.0,DATA1;如果D0=0,是偶数,跳转到DATA1继续执行程序 NOP...

相似回答