回 帖 发 新 帖 刷新版面

主题:求助关于MOV指令的用法的一个实例

我在书上看了一些关于MOV指令的用法 

比如  立即数不能直接传段寄存器,目的操作数不能是CS,两个存储器之间不能直接传送,  等等
书上也有一个例子是

段地址必须通过寄存器如AX寄存器传送到DS寄存器

MOV  AX,DATA_SEG
MOV  DS,AX

在这个实例中我怎么也看不出为什么要通过AX寄存器来传送到DS

还有 这个应该是传代码段的段地址  
 MOV  AX,DATA_SEG   这句代码中的 DATA_SEG 是采用的什么寻址方式?

回复列表 (共13个回复)

沙发

这个DATA_SEG的段地址是当DEBUG将程序载入后,自动分配给它的,叫安全空间。
段地址默认在DS中,但前255个字节是PSP的,从第256个字节开始就是代码了,即从DS:0100开始。

板凳


MOV  AX,DATA_SEG
MOV  DS,AX
这是规定的数据段基址。人家规定必须这么写才能规定段基址,你有什么办法[em17]

3 楼


谢谢大家的回复
我知道这是规定必须这么写才能规定段基址

但以书上的语气来看  意思好像是  如果写成  MOV  DS,DATA_SEG
就触犯了MOV指令的一些规定,
所以必须通过寄存器如AX寄存器 传送到DS寄存器

我就是问如果写成MOV  DS,DATA_SEG  那有没有触犯了MOV指令的规定  
(我先不管这样能不能规定段基址  只讨论MOV指令)

4 楼

mov dsc, src
dsc不能是cs

5 楼


谢谢  不过答非所问

6 楼


没有,只要你不要直接把立即数往里送就行。

7 楼

又是天空未蓝大哥啊  呵呵
谢谢  又替我解决了问题

哎 最近下定决心了一定要把汇编语言学好  

8 楼


呵呵
汇编其实也不难的,就是实际使用感觉会比较麻烦。
女孩是在校学生吧?

9 楼


恩  是的  现在大三了   学软件好累啊

10 楼


哦~

呵呵软件工程啊?

我也是大三的~不过是学信息安全的,学校不是很好。

汇编才开始学一个月。。。

我来回复

您尚未登录,请登录后再回复。点此登录或注册