奇怪的函数!(能不能帮我看一下)

lutcn   2007-4-14 22:21 楼主
unsigned char ChangeForm(unsigned char BData)
//这个函数是按位(bit)记的char转换为char 如 BData=0000,1000 转换为 CData=3即0x03   1000,0000转换为7即是0x07
{
        unsigned char CData;          
        CData=0;
        BData=BData/2;
        while(BData)
        {
                BData=BData/2;
                CData++;       
        }
        return(CData);
}

问题是 调试的时候CData总是等于0x0b  BData=0xff 运行时值不会变化 为什么?
当时编译data=53.5是不是data不够用啊?不可能吧 data=53.5大吗

回复评论 (1)

我在调试中出现这些问题 registor窗口中在r0-r5均给用上了  只有r6 r7暂时没用上
sp为41 spmax为47

我单步调试的时候 在ChangeForm内部数据是正确的 但函数返回的时候把r6 r7内容覆盖了 我知道是ret从堆栈pop出来了覆盖r6 r7

那么ChangeForm函数是不是没有r调用了啊,那么我该怎么去解决它呢?
点赞  2007-4-14 23:01
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复