是否可以在即时窗口中执行汇编语言指令



我用C++写了一个小程序。我将"反汇编"窗口与C++程序窗口并排。 我想看看当我在即时窗口中执行程序集指令时,在程序集级别会发生什么。但是,我不能这样做。 例如,当我在即时窗口中键入"add eax, 1"时,我得到的结果是"标识符"添加"未定义"。

有没有办法执行汇编指令,以便我能够在调试时执行"添加 eax, 1"之类的操作?我想这样做,以便我可以更好地了解程序集级别正在发生的事情。 任何帮助都非常感谢。

我研究了很多互联网,但找不到我的问题的解决方案。

C++代码:

#include<iostream>
using namespace std;
int AddMe(int a, int b)
{
int c;
c = a + b;
return c;
}
int main() 
{
AddMe(10, 20);
return 0;
}

等效汇编代码的代码片段:

int main() 
{
00BCDC40  push        ebp  
00BCDC41  mov         ebp,esp  
00BCDC43  sub         esp,0C0h  
00BCDC49  push        ebx  
00BCDC4A  push        esi  
00BCDC4B  push        edi  
00BCDC4C  lea         edi,[ebp-0C0h]  
00BCDC52  mov         ecx,30h

程序集监视窗口:

+       (int*)(ebp) 0x001ef898 {2029812}    int *
+       (int*)(esp) 0x001ef878 {2029720}    int *
+       (int*)(esi) 0x00bc1712 {TryCatch2.exe!_mainCRTStartup} {9030121}    int *
+       (int*)(edi) 0x00bc1712 {TryCatch2.exe!_mainCRTStartup} {9030121}    int *
+       (int*)ecx   0x00000001 {???}    int *
+       (int*)(ecx) 0x00000001 {???}    int *
+       (int*)(eax) 0x00615180 {6377864}    int *
+       (int*)(edx) 0x00614fe8 {6377728}    int *
+       (int*)(esi) 0x00bc1712 {TryCatch2.exe!_mainCRTStartup} {9030121}    int *
+       (int*)(ebx) 0x002e7000 {67174400}   int *

实际结果: 当我在即时窗口中键入"添加 eax,1"时,它给出的结果是"标识符"添加"未定义"。 预期成果: 当我在即时窗口中键入"添加 eax, 1"时,它应该将 1 添加到 eax 寄存器。

我们无法更改即时窗口中的寄存器值。但是,我们可以在寄存器窗口和监视窗口中更改寄存器值(只需编辑寄存器值(。

最新更新