wuyaozi 发表于 2011-11-17 18:44:47

关于试验九

本帖最后由 wuyaozi 于 2011-11-17 18:47 编辑

assume cs:code;ds:data

data segment
db 'welcome to masm!'
data ends

code segment
start:mov ax,data
      mov ds,ax
      mov bx,0
      mov ax,0B872H
      mov es,ax
      mov si,0
      mov cx,16

s:mov al,
      mov es:,al      此处两行我写成 mov byte ptr es:,ds: 编译错误。我不知道错在哪里?望高手解答?
      mov byte ptr es:,2h
      
      mov al,
      mov es:0A0H,al
      mov byte ptr es:0A0H,24h
      
      mov al,
      mov es:140H,al
      mov byte ptr es:140H,71h
      
      add si,2
      inc bx

      loop s
   
      mov ax,4c00h
      int 21h

code ends

end start

Mr.C 发表于 2011-11-17 19:04:16

看来我得把汇编重新过一遍

kane080824 发表于 2011-11-17 19:22:48

es是段寄存器,不能当作通用寄存器来用

eons 发表于 2011-11-18 09:15:43

好像是es:和ds:不能同时传送数据,中间必须要有个通用寄存器做间接传送。
就好象data不能直接和ds挂钩一样,中间必须要有个通用寄存器做中介。

cfer 发表于 2011-11-18 23:52:56

4楼正解,两个内存单元之间不可以直接通信。

cyht33 发表于 2011-11-22 12:58:53

4楼正解,小甲鱼老师说了,他们2个不能直接发生关系的。。
不要想歪哈,思想要纯洁:lol

315775569 发表于 2012-7-3 22:25:58

Mr.C 发表于 2011-11-17 19:04 static/image/common/back.gif
看来我得把汇编重新过一遍

我每次遇到不懂得,我都是重新看的,痛苦!!!

路过夏天 发表于 2012-7-5 15:06:54

这个问题我也遇到过,百度过,应该是2个内存单元不能直接操作,必须要通过媒介寄存器
页: [1]
查看完整版本: 关于试验九