dyingstraw 发表于 2016-12-15 18:21:20

关于内存存储位置的

我觉得应该选b,大家怎么看

Kotori 发表于 2016-12-16 09:15:17

这里存放的是是一个字符串,应该是顺序的。
如果是放数值才是高位在后吧。

兰陵月 发表于 2016-12-16 09:45:17

本帖最后由 兰陵月 于 2016-12-16 16:27 编辑

Kotori 发表于 2016-12-16 09:15
这里存放的是是一个字符串,应该是顺序的。
如果是放数值才是高位在后吧。

2楼的回复是否是正确的,我现在还没搞明白~{:10_323:}

兰陵月 发表于 2016-12-16 15:00:41

本帖最后由 兰陵月 于 2016-12-16 17:11 编辑

NUM1        DW                '5D'


不知道这样理解是否正确
'   '中间是字符串,既然是字符串,那就顺序存放的,且一个字符就是占用一个字节,这是王爽汇编书上的解释~
我的理解是:
NUM1        DW                '5D',
实际上与NUM1        DW                3544H等价,这样不难明白了!



~~可以上机验证一下~编写一个存放数据的空程序


编译好之后,用debug查看数据存储情况~
可以看出,存放的值为3544,所以答案应该是A


附:经过实验,用DW定义字符串时,字符串的长度不能超过一个字的长度~否则编译器将会报错,我想如果用DD定义字符串,是不是一个字符串的长度就不能超过一个双字呢,经过上级调试,确实是的~


既然用DW和DD来定义字符串有这样的规矩,那也从侧面说明当用DW或者DD来定义字符串的时候,是把要定义的字符串当作数字来处理的。因此‘5D’在DW看来,它就是3544H,所以才有上述结果。但DB由于是专门用来定义字符串的,所以它没有相应的限制。这可能编译器的规则问题吧

没学过计算机硬件原理,所以有些东西不知道是不是牵强附会~请批评

兰陵月 发表于 2016-12-19 10:24:48

本帖最后由 兰陵月 于 2016-12-19 10:26 编辑

来自《80X86汇编语言程序设计教程》(杨季文 等编著钱培德审)

第69页—第70页




其中的解释如下:




我也没搞明白其中的为什么?
但是我想记住这个规则应该很容易,
以后碰到类似的情况直接套用就是了
页: [1]
查看完整版本: 关于内存存储位置的