Visual Studio调试时内存窗口无法显示指定字符串的问题求助
汇编代码调试问题排查与解决
问题根源分析
你的代码逻辑本身是正确的——循环将quote的所有字节(包括末尾的终止0)完整复制到message数组中,理论上数据段内应该同时存在两个完全相同的字符串。调试时未看到两次显示,大概率是调试操作或内存观察方式的问题。
具体排查与解决步骤
- 定位正确的内存地址
在调试器中,先查询message符号对应的内存地址(比如MASM调试器可用? message命令),然后将内存窗口跳转到该地址。不要仅停留在quote的地址范围查看,否则只能看到一处字符串。 - 验证循环执行完整性
在循环标签LP处设置断点,单步执行循环,观察寄存器esi(偏移量)和ecx(循环计数器)的变化,确认循环执行了SIZEOF quote次(共16次,含终止0),确保每个字符都被正确复制到message中。 - 锁定调试会话
原代码执行到ret后会直接退出调试会话,可能导致你还没来得及查看内存就结束了。可以在ret前添加调试中断指令int 3,让程序在复制完成后暂停,方便你查看内存:.386 .model flat .data quote byte "Machines do feel",0 message byte SIZEOF quote DUP(0),0 .code start proc mov esi,0 mov ecx,SIZEOF quote LP: mov al, quote[esi] ; 从quote读取字符 mov message[esi],al ; 写入message inc esi loop LP int 3 ; 调试中断,暂停程序 ret start endp end start
内容的提问来源于stack exchange,提问作者Human .01
相关产品推荐
相关产品推荐

