我在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使其无任何问题地工作。
答案 0 :(得分:0)
我发现代码出了什么问题:
mov eax, array[0]
mov al, [eax]
实际上有效,但是eax值会改变,因为我修改了作为eax寄存器一部分的al寄存器,所以当我把它放在一个循环中时,eax值不再有效。例如,将eax更改为ebx使其无任何问题地工作。