来学习编程 发表于 2016-12-8 17:00:29

实验5的疑惑???

本帖最后由 来学习编程 于 2016-12-9 09:41 编辑

源程序的开始assume cs:code (ds:a)没有关联DS段,为什么程序里面可以直接使用????

兰陵月 发表于 2016-12-9 12:28:48

程序里已经有指令将ds和a进行了联系,即:
movax,a
movds,ax
前面assume cs:code,是因为程序里没有地方进行了实际关联。而且CS:IP这玩意儿除非跳转类型指令或语句,基本CS:IP就是这么平坦执行下去的。

所以我的理解是如果在程序里进行了段寄存器和段的实际挂钩(即有相关的指令或伪指令),就无须在assume里进行说明。

来学习编程 发表于 2016-12-9 13:21:01

兰陵月 发表于 2016-12-9 12:28
程序里已经有指令将ds和a进行了联系,即:
movax,a
movds,ax


谢谢你的解答,但是我还是不明白,为什么程序不写成这种形式:assume cs:code,ds:data,ss:stack

zealstar 发表于 2016-12-10 07:41:16

本帖最后由 zealstar 于 2016-12-11 08:07 编辑

assume只是伪指令,给编译器看的。
页: [1]
查看完整版本: 实验5的疑惑???