Debugging 使用Visual Studio调试ASM-将不显示注册内容
我一直在为一个类做一个汇编语言项目,虽然我最终能够解决代码中的所有问题(我相信),但我现在似乎无法显示寄存器内容 这是我的密码Debugging 使用Visual Studio调试ASM-将不显示注册内容,debugging,assembly,visual-studio-2017,masm,irvine32,Debugging,Assembly,Visual Studio 2017,Masm,Irvine32,我一直在为一个类做一个汇编语言项目,虽然我最终能够解决代码中的所有问题(我相信),但我现在似乎无法显示寄存器内容 这是我的密码 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
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在这个网站上
但即使启用了地址级调试,我也试图在IDE中找到此窗口,但没有成功。我不知道这是我如何安装的问题还是VS2017中没有注册窗口。。。欢迎任何帮助
作为记录,我正在使用Visual Studio 2017
我尝试在
调用DumpRegs
之后添加一个等待,甚至添加一个断点,但这只会暂停运行,不会显示任何寄存器
多亏了@Jester,我才能够看到寄存器窗口。(请参见Visual Studio文档中的。) 这可能是微不足道的,但我还是要说出来。要查看注册表窗口,您需要在程序退出前输入断点,或使用Irvine
wait
宏或call ReadChar
或类似命令编写程序以自行暂停
暂停后,您可以通过“调试窗口”和“窗口”子窗口进入“注册”窗口,瞧,您可以看到注册内容。在“注册”窗口中单击鼠标右键,然后选择UC和所有要显示的数据。@Jester:我想知道,但是如果您有调试器,插入调试打印调用主要是浪费时间。希望有人真的在使用调试器是不是太过分了?@PeterCordes一定又是个复古主义者,试图在没有调试器的情况下调试asm。。。我可以有点。。。像越战老兵一样,我想他们也能和其他战争联系起来。很高兴回忆起那些日子,我盯着纸,试图找出哪条指令不是我在大脑中模拟的,而CPU将执行它。还有压力,在周末之前修复它,就像周六我被允许坐在电脑后面2小时一样,这是再次尝试修复版本的唯一机会。。。现在可能太容易了,有了所有这些调试器的东西,每个口袋里都有硬件…@Ped7g:我妈妈在大学里修了一门汇编语言课程。当您必须在穿孔卡片上提交程序,以便在大型机上运行,然后在稍后某个时间返回结果时,您实际上需要仔细检查您的代码。例如
调用ReadChar
或类似程序。有些版本的irvine显然也有一个wait
宏。另外,visual studio可能有一个保持窗口打开的设置,或者您可以从cmd
提示符运行代码。请参阅。还要确保您创建了一个控制台项目,而不是gui项目。