You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 22:08:12