鱼C论坛

 找回密码
 立即注册
查看: 1995|回复: 7

王爽汇编第二版 实验5(6)的疑惑

[复制链接]
发表于 2014-1-10 14:14:08 | 显示全部楼层 |阅读模式
1鱼币
实验5 编写、调试具有多个段的程序
(6)程序如下,编写code段中代码,用PUSH指令将A段中的前8个字型数据,逆序存储到B段中。
assume cs:code
a segment
    dw 1,2,3,4,5,6,7,8
a ends
b segment
    dw 0,0,0,0,0,0,0,0
b ends
code segment
start: mov ax,a
       mov ds,ax   ;ds指向a段
       mov ax,b
       mov bx,0    ;ds:bx指向a段的第1个单元
       mov ss,ax
       mov sp,16   ;设置栈顶指向b:16
       mov cx,8
    s: push [bx]
       add bx,2
       loop s      ;将a段中0~16个单元逆次入栈
code ends
end start
以上为网络答案,这段内容中定义了a段和b段,并且把b段当作栈来使用了,请问为什么第一行只有assume cs:code
按照道理第一行应该是 assume cs:code,ds:a,ss:b
难道说这些假设关联"ds:a,ss:b"可有可无吗?
请教各位高手,小弟在此谢谢了!

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-1-10 14:42:41 | 显示全部楼层
我在百度了下,发现这个答案感觉比较合意
“assume只是告诉编译器用的,我感觉在8086汇编下没什么大作用,在win32汇编下作用就大了,主要用来关联结构体等数据”
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-1-10 15:00:18 | 显示全部楼层

谢谢,不过还是没有正面回答我的问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-1-11 01:21:46 | 显示全部楼层
本帖最后由 dlzhwm 于 2014-1-12 00:13 编辑

以上为网络答案,这段内容中定义了a段和b段,并且把b段当作栈来使用了,请问为什么第一行只有assume cs:code

因为分段和段名是编程者决定的,只是通过assume cs:code伪指令告诉编译器CODE(也可以起别的名称)是代码段而已,编译器就会把CODE所在段地址给CS。

按照道理第一行应该是 assume cs:code,ds:a,ss:b

理解太机械,A不可以定义为SS:A吗?B不可以定义为DS:B吗?不是规定要这样,是编程者自己
如何使用就如何定义。

难道说这些假设关联"ds:a,ss:b"可有可无吗?

这要看编程者和解决问题的需要而定。也可以说在第一行"ds:a,ss:b"可有可无。
希望对你有帮助。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-1-13 21:19:54 | 显示全部楼层
计算机要知道一个程序从哪里开始就要知道end后面接的是什么 而end后面接的就是一个程序的开始 这个开始是一个标号 assume告诉编译器 那些段有标号 一个程序必须要有代码 所以要有个开始 所以assume cs:****必须要 而段是程序员假想的
不知道是不是你想要的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-1-15 09:08:53 | 显示全部楼层
sd53852728 发表于 2014-1-13 21:19
计算机要知道一个程序从哪里开始就要知道end后面接的是什么 而end后面接的就是一个程序的开始 这个开始是一 ...

首先谢谢你的回答,我还是想追问一下,如果同样是定义了多个段,但是assume不申明这些段也是可以的,而申明了会让指令显得很有条理性? 最后就是说申明与不申明是根据具体情况而定的,我这样理解对吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-1-15 12:47:31 | 显示全部楼层
也算是对的吧:shock:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-1-15 20:42:36 | 显示全部楼层
这都是些什么回答啊,自己不懂看看就得了,不要出来误导别人好不啦,这是我的感觉,不要喷我,没意思。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-28 11:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表