【发布时间】:2014-06-10 15:25:33
【问题描述】:
我为大学作业编写了一个小程序,它是关于用 3x7 Matrix 的 第二列 减去 1x3 Vector 并将结果存储在 1x3 VectorR .
我已经完成它得到正确的答案,但有件事真的引起了我的注意:
使用 Turbo Debugger 我注意到 Data Segment 中的结果(十六进制值)的存储(或可能只是显示)与我的示例结果不同老师给了:
老师的成绩:
我的结果:
我知道这些结果不同,但它们是正确的。我希望这些值以以下方式存储(例如):
0103
04FD
0606
0A0A
0B0B
但它的存储方式类似于(例如)
0103
04FD06
06
0A0A
0B
0B
据我所知,ds: 和这些值之间的值是内存方向,但我猜它们的长度相同(32 位架构为 32 位),但似乎有些有更多/长度更短。当然这只是我的猜测。所以,我的问题是:
为什么这些值以这种方式存储?在某些方向上拥有像 050908 这样的值,而在其他方向上只有 05 是什么意思?或者...它是否依赖于调试器?
编辑:这是ds 查看程序开头的方式:
- 红色:一些变量
-
黄色:
Vector值 -
黑色:
VectorR值
【问题讨论】:
-
内存中只有字节,没有结构。根据调试信息,不同的打印输出可能只是来自调试器的友好服务。
-
您只是看到不同的最终结果(为什么?Turbo 调试器专家...去吧)。内容是相同的 - 您可以通过查看实际数据左侧的偏移量来验证。
-
@MichaelFoukarakis 这是有道理的。那么,左边
ds:xxxx中的值是内存地址对吗? -
@Christian:看起来确实是这样,我猜是这样。
标签: debugging assembly masm tasm