sslas 发表于 2011-7-19 00:15:57

问题7,9的代码编译不了有错误提示

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,stacksg
      mov ss,ax
          mov sp 16
          mov ax,datasg
          mov ds,ax
          mov bx,0
          
          mov cx,4
s0: push cx
      mov si,0
          mov cx,4
   s: mov al,
          and al,11011111b
          mov ,al
          inc si
          loop s
          
          add bx,16
          pop cx
          loop s0
          
          mov ax,4c00h
          int 21h
codesg ends

#########################################################
D:\resource\folder>masm 1.txtMicrosoft (R) MASM Compatibility DriverCopyright (C) Microsoft Corp 1993.All rights reserved.
Invoking: ML.EXE /I. /Zm /c /Ta 1.txt
Microsoft (R) Macro Assembler Version 6.15.8803      Patched for you by promethee in the year 2001 - enjoyCopyright (C) Microsoft Corp 1981-2000.All rights reserved.
Assembling: 1.txt1.txt(16) : error A2008: syntax error : in instruction1.txt(25) : error A2070: invalid instruction operands1.txt(27) : error A2070: invalid instruction operands

这是为什么呢?

a89361461 发表于 2011-7-19 11:04:47

第16行代码 SP 后加个逗号,不加逗号编译器认为只有操作符,没有操作数。 还有就是代码 最后加
end start 。我就弄了这两个地方,就编译通过了。

sslas 发表于 2011-7-19 12:49:37

谢谢楼上 按你说的做还是不行,还要把改成才可以不知道为什么

sslas 发表于 2011-7-19 13:19:06

我 编译过只看到D:\resource\folder>debug 1.exe
-r
AX=0000BX=0000CX=0081DX=0000SP=0000BP=0000SI=0000DI=0000
DS=13D8ES=13D8SS=13E8CS=13EDIP=0000   NV UP EI PL NZ NA PO NC
13ED:0000 B8E813      MOV   AX,13E8
-d 13d8:0 3f
13D8:0000CD 20 FF 9F 00 9A F0 FE-1D F0 4F 03 E5 0D 8A 03   . ........O.....
13D8:0010E5 0D 17 03 E5 0D D4 0D-01 01 01 00 02 FF FF FF   ................
13D8:0020FF FF FF FF FF FF FF FF-FF FF FF FF 92 13 4C 01   ..............L.
13D8:0030A5 12 14 00 18 00 D8 13-FF FF FF FF 00 00 00 00   ................为什么不是别人这样呢?-d0c4e:0 3f

0C4E:0000  31 2E 20 64 69 73 70 6C-61 79 20 20 20 20 20 20   1. display

0C4E:0010  32 2E 20 62 72 6F 77 73-20 20 20 20 20 20 20 20   2. brows

0C4E:0020  33 2E 20 72 65 70 6C 61-63 65 20 20 20 20 20 20   3. replace

0C4E:0030  34 2E 20 6D 6F 64 69 66-79 20 20 20 20 20 20 20   4. modify

a89361461 发表于 2011-7-19 18:14:02

sslas 发表于 2011-7-19 12:49 static/image/common/back.gif
谢谢楼上 按你说的做还是不行,还要把改成才可以不知道为什么

呵呵,可能是编译器版本不同。

a89361461 发表于 2011-7-19 18:28:22

本帖最后由 a89361461 于 2011-7-19 18:32 编辑

sslas 发表于 2011-7-19 13:19 http://bbs.fishc.com/static/image/common/back.gif
我 编译过只看到为什么不是别人这样呢?

这是我执行后看到的结果,你的IP为0,代码并没有执行。你看到的当然是DS段原先的数据啦。先猛按 T 执行完就能看到了。{:5_109:}

阿姨哦A 发表于 2011-7-19 19:44:49

sslas 发表于 2011-7-19 12:49 static/image/common/back.gif
谢谢楼上 按你说的做还是不行,还要把改成才可以不知道为什么

我和你出现了一样的问题。
页: [1]
查看完整版本: 问题7,9的代码编译不了有错误提示