我的解答:
#define num 11
#include <reg51.h>
#include"stdio.h"
main()
{
char idata *org=0x80;
char data *result=0x40,temp;
unsigned char i=0,j=0,k=0;
for(i=0;i <num;i++)
*(result+i)=*(org+i);
for(i=0;i <num-1;i++)
{//选择排序
k=i;
for(j=i+1;j <num;j++)//选择i+1到num的最小值
if(*(result+j) <*(result+k))
k=j;
if(k!=i)//如果i不是最小则交换
{temp=*(result+i);
*(result+i)=*(result+k);
*(result+k)=temp;}
}
}
编译没问题,但debug时候run说:
*** error 65: access violation at I:0x80 : no 'read' permission
是什么原因呢?我学C51没多久,请指教,谢谢!
你再查一下吧!
更正一下:
选择52的器件仿真就可以了.
跟编译没关系,只是在模拟仿真时有关系.
如果你选择51器件,也可以使用map i:0x80,i:0xff read write 来使idata(80h-0ffh)可读写.