汇编,循环与unsigned char矢量

glc*_*c78 1 assembly pointers loops

我不明白在使用32位寄存器的汇编语言编写的循环中会发生什么.这是代码:

void main() {

    unsigned char Vet[100];
    unsigned short int Mat = 8805;
    unsigned short Ris;

    __asm {
        MOV AX, Mat
        MOV BYTE PTR Vet[10], AL
        MOV BYTE PTR Vet[13], 99
        MOV BYTE PTR Vet[16], AH
        LEA ESI, Vet
        ADD ESI, 9
        XOR EBX, EBX
        MOV ECX, 3
        L1: XOR BL, [ESI + 1]
            ADD ESI, 3
            LOOP L1
            MOV Ris, BX
    }
    printf("\nRis: %d\n\n", Ris);
}
Run Code Online (Sandbox Code Playgroud)

L1BL=65h第一次设置因为BL0开始.好的.我想第二次65h XOR 99h,因为ESI=Vect[9+3+1].所以我期待FCh结果BL,但编译器返回06h!我用一个简单的和XOR之间进行了测试,就像我想的那样:FCh.问题可能在索引中,但在哪里?65h99hVet

Ped*_*d7g 7

是的99,不是99h.65h xor 99 = 6.