我在 Visual Studio 2012 Professional 中工作,我有以下代码:
char* array = (char*) malloc(100);
array[0] = 'H'; array[1] = 'e'; array[2] = 'l'; array[3] = 'l';array[4] = 'o';
__asm {
// Missing code here
}
例如,如何使用内联汇编访问数组中的字符?我试过这个,但它只适用于数组中的第一个字符:
mov eax, array[0]
mov al, [eax] // Now al contains the 'H'
如果我将代码更改为“mov eax,array[1]”,则它不再起作用(访问冲突)。我如何循环遍历数组?
编辑,已解决(我无法在 8 小时内回答我自己的问题):我发现代码有什么问题:
mov eax, array[0]
mov al, [eax]
实际上有效,但是 eax 值被改变了,因为我修改了作为 eax 寄存器一部分的 al 寄存器,所以当我把它放在一个循环中时,eax 值不再有效。例如,将 eax 更改为 ebx 可以使其正常工作。