单片机 内部RAM的60H 6FH单元,存有单字节无符号数,编程找出其中最大的数后存入80H单元

2021-09-06 09:20:40 字数 1757 阅读 5267

1楼:尚云社

;51单片机

mov r0,#60h

mov r1,#80h ;最大数在地址80hmov @r1,#00h

loop:

mov a,@r1

mov b,@r0

cjne a,b,loop1

loop1:

jnc loop2

mov @r1,b

loop2:

inc r0

cjne r0,#70h,loop

jmp $end

2楼:匿名用户

sfr datastart = 0x60;//用sfr 定义个名字 给 60h

sfr maxdata = 0x80;//最大数据存放位置

unsigned char databuffer[16]; //数据缓存

memcpy( databuffer, (char*)datastart, 16 ); //数据缓存到 databuffer中

/*找出databuffer中最大的数据 自己写个函数 */

maxdata = 最大数据;

我觉得这样应该可以了,但是我没有调试过,你可以试试。不能保证对哈。

#include

unsigned char buffer[20];

void main(void)

while(1);

}我刚刚实验了一下,用这个是可以将数值写进去 也可以将数值读出来的。上面的方法可能不太行。至于写进80的位置,也可以直接给指针赋个绝对地址然后写进去就行了。

在内部ram 30h单元开始存放着10个无符号数 编写程序找出其中的最大值送入内部ram的40h单元 单片机考试题

3楼:匿名用户

org 0020h

mov r0,#30h ;数据首地址存入r0mov a,@ro ;取第一个数据存入累加器amov r1,#0ah ;比较次数,a=10loop1:

inc r0 ;修改地址指版针,使其指向下一地权址单元

mov 30h,@r0 ;将比较的数暂存于30hcjne a,30h,chk ;两个数比较chk:

jnc loop2 ;如果a大,则转换mov a,@r0 ;如果a小,则将较大的数存入a

loop2:

djnz r1,loop1 ;r1减1,如果其不为0,则继续循环

mov 40h,a ;比较完毕,存结果end

【51单片机汇编语言编程题】片内ram区30h~3fh单元中存16个8位无符号数,将它们对5求余,

4楼:

clr a

mov 40h,a

mov 41h,a

mov 42h,a

mov 43h,a

mov 44h,a

mov r0,#30h

loop:

mov a,@r0

mov b,#5

div ab

xch a,b

add a,#40h

mov r1,a

inc @r1

inc r0

cjne r0,#40h,loop

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;end