《汇编语言》实验五(5)的问题
定义两个段assume cs:codea segmentdb 1,2,3,4,5,6,7,8a endsb segmentdb 1,2,3,4,5,6,7,8b ends
为什么 出现如下内存分配:为什么08 后面是 00 00 00 。。。而不是01 02 03 。。。
因为每一个段的空间是16(010H)的倍数来定义的
所以不满16个字节就补全 超出比如说17个字节 那就是两个16 = 32字节
段地址*16+ 偏移地址
语文没学好。。不知道解答你的疑惑了么 那段地址*16+ 偏移地址写上去是什么意思 b232wang 发表于 2014-11-17 06:37
因为每一个段的空间是16(010H)的倍数来定义的
所以不满16个字节就补全 超出比如说17个字节 那就是两个16 ...
那段地址*16+ 偏移地址写上去是什么意思 b232wang 发表于 2014-11-17 06:37
因为每一个段的空间是16(010H)的倍数来定义的
所以不满16个字节就补全 超出比如说17个字节 那就是两个16 ...
还有为什么 每一个段的空间是16(010H)的倍数????是因为段地址*16+ 偏移地址 的原因吗?? 你不是分配了两个段a和b嘛,A段分配完后,再分配b时,b地址自动加1了,这个是段地址,段地址要乘以16才是物理地址,所以就有了8后面是0,因为他们是16位的 说白了 我觉得这是开发软件(编译器)的问题
这样方便我们去调用
它这么设计 我觉得很好啊
这样每一次你可以很轻松的找到首地址 直接ds+1 或者 偏移地址+010h
每一段的空间是16的倍数 我觉得也是为了方便我们去计算和使用
个人见解 :lol:
页:
[1]