. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->基础知识
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  mov指令问题  [已解决] 回复[ 10次 ]   点击[ 382次 ]  
lqwxf
[帖 主]   [ 发表时间:2007-11-13 21:10 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2007-11-13 21:08
如果把数据段(假设名称为data)地址赋给DS寄存器,要 
mov ax,data 
mov ds,ax 
为什么不能直接写成: 
mov ds,data呢??
ljm7315
[第1楼]   [ 回复时间:2007-11-13 21:48 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:6
注册日期:2007-11-13 20:16
地址也是一个二进制数,数值不能直接赋给段寄存器的,所以需要一个通用寄存器中转.
这是我个人的解释,不对的话请高手纠正下!
lqwxf
[第2楼]   [ 回复时间:2007-11-13 22:12 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2007-11-13 21:08
谢谢你的解答!
假如数据data存放在si中,如果要打si中的数mov到di中,
为什么要用
mov al,[si]
mov [di],al
而不用
mov di,si
呢?
我新手来的,上面两个好像语法都没错误,而我上机时用上面的就可以通过,而用下面的不可呢?希望高手
解说下!谢谢!
cxn
[第3楼]   [ 回复时间:2007-11-13 23:07 ]   [引用]   [回复]   [ top ] 
荣誉值:179
信誉值:6
注册日期:2007-07-09 19:18
mov al,[si] ;将ds:[si]内存单元中的字节数据放到al中
mov [di],al ;将al中的数据放到ds:[di]中

这两条指令不是将si的内容放到di中

mov di,si ;就是将si的内容放到di中
ljm7315
[第4楼]   [ 回复时间:2007-11-14 09:17 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:6
注册日期:2007-11-13 20:16
mov al,[si] ;将ds:[si]内存单元中的字节数据放到al中
mov [di],al ;将al中的数据放到ds:[di]中

这两条指令不是将si的内容放到di中

mov di,si ;就是将si的内容放到di中
------------------
回复:支持一下~~~~~~~~~~~~`
happy
[第5楼]   [ 回复时间:2007-11-14 11:18 ]   [引用]   [回复]   [ top ] 
荣誉值:32
信誉值:0
注册日期:2007-07-14 19:06
【回复】2楼:
你上边的指令和下边的指令都是正确的,只是指令的意义不同,实现的功能不同的。
mov al,[si] 
mov [di],al 
实现的是内存到内存的传送,要问为什么mov [di],[si]是错误的,也就是说为什么不能内存和内存直接传递呢?
执行指令要cpu来做,要实现内存到内存的传送,首先cpu需要把内存中的数据读进来,那么这个数据放到哪儿呢?寄存器就是暂存器,再将寄存器中的数据送到指定的内存单元中。
而mov di,si
实现的是寄存器和寄存器之间的传送。
lqwxf
[第6楼]   [ 回复时间:2007-11-14 12:35 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2007-11-13 21:08
谢谢各位的解答.
realfiona
[第7楼]   [ 回复时间:2007-11-14 13:50 ]   [引用]   [回复]   [ top ] 
荣誉值:6
信誉值:0
注册日期:2007-11-14 13:44
【回复】2楼:
你上边的指令和下边的指令都是正确的,只是指令的意义不同,实现的功能不同的。
mov al,[si] 
mov [di],al 
实现的是内存到内存的传送,要问为什么mov [di],[si]是错误的,也就是说为什么不能内存和内存直接传递呢?
执行指令要cpu来做,要实现内存到内存的传送,首先cpu需要把内存中的数据读进来,那么这个数据放到哪儿呢?寄存器就是暂存器,再将寄存器中的数据送到指定的内存单元中。
而mov di,si
实现的是寄存器和寄存器之间的传送。
------------------
回复:兄弟的想法很有道理 
      对比自己看到mov mem, mem 错误的时候 真让我汗颜
      当初只是记下这点,而没有深入去思考 为什么  。
Wednesday
[第8楼]   [ 回复时间:2007-11-19 18:07 ]   [引用]   [回复]   [ top ] 
荣誉值:43
信誉值:3
注册日期:2007-07-05 19:53
mov指令也这么多学问,有意思。
lianghongqian
[第9楼]   [ 回复时间:2007-11-19 19:01 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2007-11-17 19:59
mov al,[si] ;将ds:[si]内存单元中的字节数据放到al中
mov [di],al ;将al中的数据放到ds:[di]中

这两条指令不是将si的内容放到di中

mov di,si ;就是将si的内容放到di中
------------------
回复:对!就是这样的!支持一下
lqwxf
[第10楼]   [ 回复时间:2007-11-21 12:56 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2007-11-13 21:08
此贴由 贴主 于 [ 2007-11-21 12:56 ] 结贴。 结贴原因:问题已解决
得分情况: 1楼(ljm7315):1分   3楼(cxn):6分   4楼(ljm7315):1分   5楼(happy):1分   7楼(realfiona):6分   8楼(Wednesday):1分   9楼(lianghongqian):2分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved