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