我目前正在YouTube上使用x64 Assembly Tutorial。
我现在所做的就是在C++
中使用ASSEMBLY
函数并使用mov
指令将值移入寄存器等基本内容。
这里是C++
代码:
#include <iostream>
using namespace std;
extern "C" void SomeFunction();
int main() {
SomeFunction();
// Just putting this here to stop the program from closing immediately after opening
cin.get();
return 0;
}
以下是ASSEMBLY
代码:
.code
SomeFunction proc
mov ax, -1
ret
SomeFunction endp
end
问题我在使用Visual Studio社区2017,每当我运行本地窗口调试器并尝试添加监视到注册表ax
时,但我不断收到错误消息'Error reading register value'
。
我哪里错了?
道歉,如果不清楚,请告诉我,我可以尝试更好地解释。
更新:所以我尝试使用rbx
注册表,我可以添加一个手表。但现在的问题是,它告诉我它不包含任何值(值部分只显示0),尽管我使用mov
来移动寄存器中的值-1
。
不知道这些信息是否有帮助。
答案 0 :(得分:0)
已解决:为了解决这个问题,我首先在每条指令上添加了一个断点。这使我们能够“分步”运行程序。
然后在调试期间,我转到顶部菜单并选择:
Debug >> Windows >> Registers
。
这将使您能够看到所有寄存器。
然后我保存了两个ASSEMBLY
和C++
个文件然后运行它(你可以使用F5作为运行的快捷方式)。
注意:该程序将在BREAKPOINT之前执行所有说明。
因此,如果我在mov ax -1
处设置断点,则仅执行所有指令。