调试打印循环省略第一个值

时间:2020-07-29 17:08:25

标签: c osdev low-level

我正在调试低级程序,因此必须确保数组exp具有我希望它具有的所有值。所以我写了一个代码片段,打印出我的数组以帮助调试它。问题是标准库不可用,所以我需要使用自己的代码。 我的代码段:

int test=0;char val[5]={};
    int l=0;
    for(int k=0;exp[k]!=0;k++)
    {
        test=exp[k];                      //taking in value
        int_to_ascii(test, val);          
        print_char(val,2*l,0xd);
        for(int m=0;val[m]!='\0';m++)//clearing out val for next iteration
            val[m]='\0';
        l=k*0xA0;                    //next line
    }

exp是一个整数数组。 int_to_ascii的代码:

if(src==0)
    {
        stack[i++]='\0';            //pushing NULL and 0 to stack
        stack[i++]='0';
    }
    else
    {
        while(src!=0)   //converting last digit and pushing to stack
        {
            stack[i]=(0x30+src%10);
            src/=10;
            i++;
        }
    }
    i--;
    len=i;
    while(i>=0)
    {
        dest[len-i]=stack[i];  //popping and placing from left to right
        i--;                   //inorder not to get reversed.
    }

print_char之所以有效,是因为我用它来打印整个窗口和界面。基本上需要 char* szarray,int offset,int color

我在计算机上大喊近2个小时,因为我认为我的阵列不正确,但不应该如此,但实际的问题出在此调试代码中。它不会显示exp[0]。 何时输出:

    20480
    20530
    5

它只是打印

    20530


    5

我什至尝试将值强制蛮进exp [0]。如果我在其中输入除20480以外的任何值,它将在第一项中打印无效字符,如下所示:

    20530P\.        ;not exact value, demonstration purpose only


    5

我认为int_to_ascii出现了问题,但这在其他部分也得到了广泛使用而没有任何问题。

有人知道吗?

0 个答案:

没有答案