verilog for循环语句错误

求解答,在刷HDLBits上Always casez这一题时,想尝试用for循环解决,于是写了如下的循环

代码如下

module top_module (
    input [7:0] in,
    output reg [2:0] pos  );
    always@(*)begin
        for(int p=1'd0;p<1'd8;p=p+1'd1)begin
            if(in[p])begin
                pos[0]=p;
                pos[1]=1'd0;
                pos[2]=1'd0;
                p=p+8;
            end
            else pos=3'd000;
        end
    end   
endmodule

结果输出全为0,请问这是什么原因?

第5行代码问题比较大,别的地方感觉也有问题,没看明白你想做什么
for(int p=0;p<8;p=p+1)begin