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
| 归档时间: |
|
| 查看次数: |
205 次 |
| 最近记录: |