谁抢了我的小红 发表于 2013-3-3 22:38:15

为什么编译时提示 operator expectde 错误 代码如下

assume cs:code
a segment
    db 1,2,3,4,5,6,7,8
a ends
b segment
    db 1,2,3,4,5,6,7,8
b ends
c segment
    db 0,0,0,0,0,0,0,0
c ends
code segment
start:mov ax,a
      mov ds,ax
   mov bx,0
   mov cx,8
s:mov ax,
    mov dx,
    add ax,ds
   mov ,ax
   inc bx
   loop s
   mov ax 4c00h
   int 21h
code   ends
end start
   
   
   
   

半生缘 发表于 2013-3-3 22:38:16

好了 完成了
assume cs:code
a segment
   dw 1,2,3,4,5,6,7,8
a ends

b segment
   dw 1,2,3,4,5,6,7,8
b ends

d segment
        dw 0
d ends

code segment
start:        mov ax,a
        mov ds,ax
        mov bx,0
        mov cx,8
s:        mov ax,
        mov dx,
        add ax,dx
        mov ,ax
        inc bx
        inc bx
        loop s

        mov ax,4c00h
        int 21h
code ends
end start

第一 不知道为什么 c segment 不让定义 我改成了 d
第二如做你的意图是 用 a中的数据 加上 b中的数据 放到d中那么 你好像因该用 字节吧
s:mov ax,
   mov dx,
   add ax,ds
    mov ,ax
该s:mov al,
mov dl,
add al,dl
mov ,al
当然也可以 把字节改成字 向上边的代码 不过我比较懒 d 那个段 只写了一个0 还好我用那个编译器没事一个段 的字节数一直是16的倍数

最后一个 mov ax,4c00h 你的少逗号了

向往青莲 发表于 2013-3-4 12:37:04

不是吧   着代码错的好离谱自己看书去

七月之变 发表于 2013-3-4 14:08:41

你写的程序很奇怪呃。。。
段只能有3个,你却定义了四个。而且没有数据段的假设
你这样不是一个好的编程习惯,只能说你是新手。

谁抢了我的小红 发表于 2013-3-4 16:49:25

七月之变 发表于 2013-3-4 14:08 static/image/common/back.gif
你写的程序很奇怪呃。。。
段只能有3个,你却定义了四个。而且没有数据段的假设
你这样不是一个好的编程 ...

嗯 我是新手我是认为那3个数据段段地址是一样的

谁抢了我的小红 发表于 2013-3-4 16:50:36

mov dx,
    add ax,ds
这里打错了 应该是dx

七月之变 发表于 2013-3-4 18:57:54

谁抢了我的小红 发表于 2013-3-4 16:49 static/image/common/back.gif
嗯 我是新手我是认为那3个数据段段地址是一样的

怎么可能一样。。。
你还是再好好看看教程吧。
还有不要给段起一些很奇怪的名字(比如a, b, c,数据段就叫data,代码段就叫code,栈段就叫stack)

半生缘 发表于 2013-3-4 21:54:07

话说 你这程序 A,B,C段 定义的是db 且只有 8个字节 当然 生成后会 默认给一行 16字节 masm615是这样
但是 你这段地址加b中的数据 加的是字 放到 c也是字不知道你这程序要干什么

谁抢了我的小红 发表于 2013-3-5 13:25:20

半生缘 发表于 2013-3-4 22:18 static/image/common/back.gif
好了 完成了
assume cs:code
a segment


我知道怎么解决的我之前用过dl 但是后面我是add ax,dl 所以还是错了

谁抢了我的小红 发表于 2013-3-5 13:29:04

半生缘 发表于 2013-3-4 21:54 static/image/common/back.gif
话说 你这程序 A,B,C段 定义的是db 且只有 8个字节 当然 生成后会 默认给一行 16字节 masm615是这样
但是...

assume cs:code

a segment

      db 1,2,3,4,5,6,7,8

a ends

b segment

      db 1,2,3,4,5,6,7,8

b ends

c segment

      db 0,0,0,0,0,0,0,0

c ends

code segment

start:

      mov ax,a

      mov ds,ax

      mov ax,b

      mov es,ax

      mov ax,c

      mov ss,ax

      mov bx,0

      mov cx,8

s:      mov ax,

      mov ss:,ax

      mov ax,es:

      add ss:,ax

      inc bx

      loop s

      mov ax,4c00h

      int 21h

code ends

end start
这是教材里面的一个题的答案 吧a断的数据加上b段的数据放到c段为什么单里面定义的是字节 后面意识用的ax?

半生缘 发表于 2013-3-5 13:41:33

谁抢了我的小红 发表于 2013-3-5 13:29 static/image/common/back.gif
assume cs:code

a segment


他这是 覆盖啊 就是 算了1,2 再算2,3再算3,4
就这样覆盖 但是和容易出错的
页: [1]
查看完整版本: 为什么编译时提示 operator expectde 错误 代码如下