. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->直接定址表
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  检测点 16.1 的问题  [待解决] 回复[ 2次 ]   点击[ 469次 ]  
plagueing
[帖 主]   [ 发表时间:2011-05-09 21:39 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2009-07-16 14:51
assume cs:code
code segment
        a dw 1,2,3,4,5,6,7,8
        b dd 0

start:  mov si,0
        mov cx,8
      s:mov ax,a[si]
        add word ptr b[0],ax
        adc word ptr b[2],0
        add si,2
        loop s
                
        mov ax,4c00h
        int 21h
                
code ends
end start



其中:
add word ptr b[0],ax
adc word ptr b[2],0

(9): warning A4057: Illegal size for operand
(10): warning A4057: Illegal size for operand

为什么提示操作数不合法, 都是字型啊
ddiptg
[第1楼]   [ 回复时间:2011-05-12 10:32 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-05-10 10:43
b dd 0  

dd是定义双字型的数据 也就是32bit即4字节
b 是数据标号,定义了数据的地址也定义了数据的长度, 这样与b有关的操作符全部当作4个字节的数据来操作,与word ptr操作符一起用就不合法了

如果换成 b: dd 0
这样就合法了.
ddiptg
[第2楼]   [ 回复时间:2011-05-12 10:50 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-05-10 10:43
我错了,没有实验就没有发言权呀.
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved