使用 Visual Studio 调试 ASM - 不会显示寄存器内容
Debugging ASM with Visual Studio - Register content will not display
我一直在为 class 开发一个汇编语言项目,虽然我终于能够解决这段代码中的所有问题(我相信),但我现在似乎无法理解注册要显示的内容。
这是我的代码...
include C:\Irvine\Irvine32.inc
.data
;Variables are listed in following order VAR DATATYPE DIGITS[RADIX] with
comments showing binary version of listed digits
left DWORD 321 ;101000001b
right DWORD 4247 ;1000010010111b
total DWORD ? ;uninitialized
diff DWORD ? ;uninitialized
;Define a string called message containing HELLO WORLD!
message BYTE '"Hello world!"'
;Calculate length of Array and move to var ArrayLength
Array WORD 1,2,4,8,16,32,64 ;Array
ArrayLength = ($ - Array) / 2
.code
main PROC
;Move left and right to respective registers
MOV eax,left
MOV ebx,right
;Add left var and right var and store in new var called total and move to
ecx
MOV total,eax
ADD total,ebx
MOV ecx,total
;Subtract left var and right var and store in new var called diff and move
to edx
MOV diff,eax
SUB diff,ebx
MOV edx,diff
;Move Array to esi
MOV esi,ArrayLength
call DumpRegs
exit
main ENDP
END main
当我调试时,我没有收到任何错误消息,但 IDE 不显示我需要的寄存器或其内容。
我到处搜索试图看看可能是什么问题并得到了一些答案并且能够找到一些关于在本网站上的 VS 中打开寄存器 window...
但我试图在我的 IDE 中找到这个 window,即使在启用地址级调试之后也是如此,但无济于事。我不知道这是我安装方式的问题还是 VS2017 中没有注册 window ...非常欢迎任何帮助
郑重声明,我使用的是 Visual Studio 2017
我试过在 call DumpRegs
之后添加一个等待,甚至添加一个断点,但这只会使 运行 停止,并且不会显示任何寄存器..
What it looks like after I add a breakpoint
感谢@Jester,我能够看到寄存器 window。 (请参阅 Visual Studio 文档中的 how to use the registers window。)
这可能是微不足道的,但我还是会说出来。为了查看寄存器 window,您需要在程序退出之前输入一个断点,或者使用 Irvine wait
宏或 call ReadChar
编写您的程序以自行暂停,或者相似。
暂停后,你可以通过调试window和windows子window到达寄存器window,瞧,你有寄存器内容可见。
在寄存器中右击window和selectUC及所有你想显示的数据
我一直在为 class 开发一个汇编语言项目,虽然我终于能够解决这段代码中的所有问题(我相信),但我现在似乎无法理解注册要显示的内容。
这是我的代码...
include C:\Irvine\Irvine32.inc
.data
;Variables are listed in following order VAR DATATYPE DIGITS[RADIX] with
comments showing binary version of listed digits
left DWORD 321 ;101000001b
right DWORD 4247 ;1000010010111b
total DWORD ? ;uninitialized
diff DWORD ? ;uninitialized
;Define a string called message containing HELLO WORLD!
message BYTE '"Hello world!"'
;Calculate length of Array and move to var ArrayLength
Array WORD 1,2,4,8,16,32,64 ;Array
ArrayLength = ($ - Array) / 2
.code
main PROC
;Move left and right to respective registers
MOV eax,left
MOV ebx,right
;Add left var and right var and store in new var called total and move to
ecx
MOV total,eax
ADD total,ebx
MOV ecx,total
;Subtract left var and right var and store in new var called diff and move
to edx
MOV diff,eax
SUB diff,ebx
MOV edx,diff
;Move Array to esi
MOV esi,ArrayLength
call DumpRegs
exit
main ENDP
END main
当我调试时,我没有收到任何错误消息,但 IDE 不显示我需要的寄存器或其内容。
我到处搜索试图看看可能是什么问题并得到了一些答案并且能够找到一些关于在本网站上的 VS 中打开寄存器 window...
但我试图在我的 IDE 中找到这个 window,即使在启用地址级调试之后也是如此,但无济于事。我不知道这是我安装方式的问题还是 VS2017 中没有注册 window ...非常欢迎任何帮助
郑重声明,我使用的是 Visual Studio 2017
我试过在 call DumpRegs
之后添加一个等待,甚至添加一个断点,但这只会使 运行 停止,并且不会显示任何寄存器..
What it looks like after I add a breakpoint
感谢@Jester,我能够看到寄存器 window。 (请参阅 Visual Studio 文档中的 how to use the registers window。)
这可能是微不足道的,但我还是会说出来。为了查看寄存器 window,您需要在程序退出之前输入一个断点,或者使用 Irvine wait
宏或 call ReadChar
编写您的程序以自行暂停,或者相似。
暂停后,你可以通过调试window和windows子window到达寄存器window,瞧,你有寄存器内容可见。
在寄存器中右击window和selectUC及所有你想显示的数据