风幻影 发表于 2012-3-7 17:59:32

MASM汇编错误信息说明看不懂

源代码如下:


assume cs:codesg,ss:stacksg,ds:datasg
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
datasg segment
db'1. display      '
db'2. brows      '
db'3. replace      '
db'4. modify       '
datasg ends
codesg segment
start:mov ax,datasg
      mov ds,ax
      mov ax,stacksg
      mov ss,ax
      mov sp,16
      mov bx,0
      mov cx,4
      s:push,cx
      mov si,0
      mov cx,4
      s1:mov al,..3
         and al,11011111b
         mov 4,al
         inc si
         loop s1
      add bx,16
      pop cx
      loop s
       mov ax,4c00h
       int 21h
codesg ends
end start

用MASM5.0编译的时候提示:test.asm(19): warning A4101: Missing data; zero assumed
百度到的说明是:说明:此错误信息提示源程序中第19行的指令少了操作数,即单操作数指令缺少操作数或双操作数指令缺少一个操作数。
修改:给指令加上适当的操作数。

可是我并没少操作数啊,为什么啊为什么,编译连接运行居然都通过了,只想知道为什么会报错?

dagger 发表于 2012-3-7 18:11:21

push后面应该没逗号吧

莫名其妙 发表于 2012-3-8 10:14:26

s:push,cx; pushcx 中间木有,号

s1:mov al,..3这里的.是什么意思?要么写成3 要么

风幻影 发表于 2012-3-8 12:10:15

本帖最后由 风幻影 于 2012-3-8 12:15 编辑

莫名其妙 发表于 2012-3-8 10:14 http://bbs.fishc.com/static/image/common/back.gif
s:push,cx; pushcx 中间木有,号

s1:mov al,..3这里的.是什么意思?要么写成3 要么

确实是‘,’的错误,重新编译了一下,问题果然解决了
\书上讲的有加点,就是不是像我这样加的,所以我加了试试看行不行,书上只是说在[寄存器]后面接常数(idata)的时候加点,不过好像怎么加都行,就是看着有点乱

莫名其妙 发表于 2012-3-8 12:53:58

风幻影 发表于 2012-3-8 12:10 static/image/common/back.gif
确实是‘,’的错误,重新编译了一下,问题果然解决了
\书上讲的有加点,就是不是像我这样加的,所以我 ...

个人感觉 还是 这样的形式好辨认

_________ 发表于 2012-3-17 21:49:11

问题在19行
页: [1]
查看完整版本: MASM汇编错误信息说明看不懂