masm手表值有意义吗?



我目前正在学习汇编x64的youtibe教程(https://www.youtube.com/watch?v=VNDNvm0UY8E&list=RDCMUCq7dxy_qYNEBcHqQVCbc20w&index=3)。我知道链接不是首选,但在这种情况下,确实没有其他选择。

我用的是visual studio,这里有c++代码,用来调用汇编函数:

#include  <iostream>
using namespace std;
extern "C" int SomeFunction();
int main() {
SomeFunction();
return 0;
}

和下面的汇编代码:

.code
SomeFunction proc
mov ax, -1
ret
Somefunction endp
end

现在,我在"mov ax, -1"线。当遇到断点时,右击ax并添加一个手表。在视频中,ax上的手表的值为54864,当调试器转到下一行时,它是65535。当我创建手表时,它只有1作为值,无论我做什么,断点在哪里。为什么会这样?

我用VS2015运行了一个64位的例子-调试-观察rax -似乎对我有用。前|mov rax,-1|, rax == 0x00000000cccccccc,后rax = 0xffffffffffffffffffffff .

c++代码:

#include <iostream>
typedef unsigned long long uint64_t;
extern "C"  uint64_t tst();
int main()
{
tst();
return 0;
}

asm代码:

.data
.data?
align   16
.code
public  tst
tst     proc
mov     rax,-1
ret     0
tst     endp
end

相关内容

  • 没有找到相关文章