. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  问题3.2的困惑(可以直接传数据到某一个内存地址吗?)  [待解决] 回复[ 8次 ]   点击[ 531次 ]  
sleepinglion
[帖 主]   [ 发表时间:2010-07-18 23:18 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-07-13 23:22
问题3.2中有下面几个指令
MOV BX,1000H
MOV DS,BX
MOV [0],AL
对于MOV [0],AL我感到很困惑,据我所知,是不能将数据移入一个内存地址的啊。而且别的汇编书本是这么说的。我也写了一段汇编程序进行了验证。结果编译的时候,出现了错误:提示不能直接使用内存的。为什么这本书上面说可以呢?
mouse
[第1楼]   [ 回复时间:2010-07-19 09:37 ]   [引用]   [回复]   [ top ] 
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34
实验:
C:\DOCUME~1\ADMINI~1>debug
-a
0D03:0100 mov bx,1000
0D03:0103 mov ds,bx
0D03:0105 mov [0],al
0D03:0108
-

证明代码没问题。

答案能在书中找到。
youminlove
[第2楼]   [ 回复时间:2010-09-22 05:36 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-08-30 19:10
代码是没有问题的,嗯,会不会是你CS:IP所指向的是ROM,只能读不能写,但是也最多是没的反应啊,也不会出错提示吧
shawyi
[第3楼]   [ 回复时间:2010-10-29 14:51 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-10-27 15:29
你可以记错了,mov指令不能实现内存与内存之间的互传
aik
[第4楼]   [ 回复时间:2010-12-02 19:59 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-12-02 00:12
经过试验是可以的,你错的应该是al,应该改回ax,【0】表示的是字节地址,有16位,二al有8位,明显不可以传
hstking
[第5楼]   [ 回复时间:2010-12-07 22:38 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-12-06 09:12
mov bx,1000  数据传给通用寄存器
mov ds,bx    通用寄存器传给数据段地址寄存器
mov [0],al   通用寄存器低8位,传给内存。

都是可以传的啊。别的书上面应该说的是,数据不能直接传给内存吧?
这个是间接传送。没有问题。
wuxbeyond
[第6楼]   [ 回复时间:2010-12-15 16:02 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-09-07 16:15
应该是 mov ds:[0],al  才对。
wuxbeyond
[第7楼]   [ 回复时间:2010-12-15 16:04 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-09-07 16:15
mov [0],al   通用寄存器低8位,传给内存。 
这句编译是不会错好像,但执行的时候CPU把[0]是当做一个数字0看待,而不是一个地址。所以需要加上DS:   这些书上有 大家意下如何
wuxbeyond
[第8楼]   [ 回复时间:2010-12-15 16:08 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-09-07 16:15
书上 112页
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved