单片机的冒泡排序时总是出现error 65:access violation的错误,请问是怎么回事呢

我用的是keil vision2. 程序编译通过,在debug的时候出现这个问题,麻烦大家了 我编的是冒泡排序,数据存在40h开始的单元,总共16个数. 10h为交换标志位, 把数取出,在20h和21h单元完成交换,然后送回40h.
这是我的思路,单步调试都正确,在最后一条指令时出现error 65:access violation的错误
org 0000h
ajmp main
org 0100h
main: mov r0,#40h
mov b,#16
clr 10h
dec b
loop: mov a,@r0
mov 20h,a
inc r0
mov 21h,@r0
cjne a,21h,compare
compare:jnc next
mov a,@r0
mov @r0,20h
dec r0
mov @r0,a
inc r0
setb 10h
next: djnz b,loop
jb 10h,main
end

jb 10h,main 执行到这句如果条件不成立没跳转到main,,那么顺序执行程序地址不明确

改为
jb 10h,main
ajmp $
end

或者
jb 10h,main
ajmp 标号
end

或者
ajmp,main
end
温馨提示:内容为网友见解,仅供参考
无其他回答

...65:access violation的错误,请问是怎么回事呢
10h,main 执行到这句如果条件不成立没跳转到main,,那么顺序执行程序地址不明确 改为 jb 10h,main ajmp end 或者 jb 10h,main ajmp 标号 end 或者 ajmp,main end

...65:access violation的错误,请问是怎么回事呢
jb 10h,main 执行到这句如果条件不成立没跳转到main,,那么顺序执行程序地址不明确 改为 jb 10h,main ajmp end 或者 jb 10h,main ajmp 标号 end 或者 ajmp,main end

...exception in access violation,但是编译没错误
1:59行,printf("最小生成树的权:f%\\n",cost);中应该为%f。解决方法:你写错了,这样也会造成访问非法内存。2:60行,delete释放内存时元素大小不定,因为你前面new 时,nodenum并没有赋值。解决方法:应该将赋值语句 printf("请输入分支数目:\\n");scanf("%d",&edgenum);printf("请输入节点...

相似回答
大家正在搜