主题:求助关于MOV指令的用法的一个实例
风一般的女孩
[专家分:50] 发布于 2006-11-19 20:44:00
我在书上看了一些关于MOV指令的用法
比如 立即数不能直接传段寄存器,目的操作数不能是CS,两个存储器之间不能直接传送, 等等
书上也有一个例子是
段地址必须通过寄存器如AX寄存器传送到DS寄存器
MOV AX,DATA_SEG
MOV DS,AX
在这个实例中我怎么也看不出为什么要通过AX寄存器来传送到DS
还有 这个应该是传代码段的段地址
MOV AX,DATA_SEG 这句代码中的 DATA_SEG 是采用的什么寻址方式?
回复列表 (共13个回复)
沙发
菜鸟CHEN [专家分:30] 发布于 2006-11-19 22:24:00
这个DATA_SEG的段地址是当DEBUG将程序载入后,自动分配给它的,叫安全空间。
段地址默认在DS中,但前255个字节是PSP的,从第256个字节开始就是代码了,即从DS:0100开始。
板凳
天空未蓝 [专家分:360] 发布于 2006-11-20 07:34:00
MOV AX,DATA_SEG
MOV DS,AX
这是规定的数据段基址。人家规定必须这么写才能规定段基址,你有什么办法[em17]
3 楼
风一般的女孩 [专家分:50] 发布于 2006-11-20 12:49:00
谢谢大家的回复
我知道这是规定必须这么写才能规定段基址
但以书上的语气来看 意思好像是 如果写成 MOV DS,DATA_SEG
就触犯了MOV指令的一些规定,
所以必须通过寄存器如AX寄存器 传送到DS寄存器
我就是问如果写成MOV DS,DATA_SEG 那有没有触犯了MOV指令的规定
(我先不管这样能不能规定段基址 只讨论MOV指令)
4 楼
robberlv [专家分:10] 发布于 2006-11-20 15:43:00
mov dsc, src
dsc不能是cs
5 楼
风一般的女孩 [专家分:50] 发布于 2006-11-20 17:57:00
谢谢 不过答非所问
6 楼
天空未蓝 [专家分:360] 发布于 2006-11-20 18:04:00
没有,只要你不要直接把立即数往里送就行。
7 楼
风一般的女孩 [专家分:50] 发布于 2006-11-20 18:10:00
又是天空未蓝大哥啊 呵呵
谢谢 又替我解决了问题
哎 最近下定决心了一定要把汇编语言学好
8 楼
天空未蓝 [专家分:360] 发布于 2006-11-20 22:31:00
呵呵
汇编其实也不难的,就是实际使用感觉会比较麻烦。
女孩是在校学生吧?
9 楼
风一般的女孩 [专家分:50] 发布于 2006-11-20 22:39:00
恩 是的 现在大三了 学软件好累啊
10 楼
天空未蓝 [专家分:360] 发布于 2006-11-21 17:02:00
哦~
呵呵软件工程啊?
我也是大三的~不过是学信息安全的,学校不是很好。
汇编才开始学一个月。。。
我来回复