Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Debugging 使用Visual Studio调试ASM-将不显示注册内容_Debugging_Assembly_Visual Studio 2017_Masm_Irvine32 - Fatal编程技术网

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项目。