鱼C论坛

 找回密码
 立即注册
查看: 2100|回复: 10

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

[复制链接]
发表于 2013-3-3 22:38:15 | 显示全部楼层 |阅读模式
2鱼币
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,[bx]
    mov dx,[bx+16]
    add ax,ds
   mov [bx+32],ax
   inc bx
   loop s
   mov ax 4c00h
   int 21h
code   ends
end start  
   
   
   
   

最佳答案

查看完整内容

好了 完成了 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 第二 如做 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 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,[bx]
        mov dx,[bx+16]
        add ax,dx
        mov [bx+32],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,[bx]
     mov dx,[bx+16]
     add ax,ds
    mov [bx+32],ax
该s:mov al,[bx]
mov dl,[bx+16]
add al,dl
mov [bx+32],al
当然也可以 把字节改成字 向上边的代码 不过我比较懒 d 那个段 只写了一个0 还好我用那个编译器没事一个段 的字节数一直是16的倍数

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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-3-4 12:37:04 | 显示全部楼层
不是吧     着代码错的好离谱  自己看书去
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-3-4 14:08:41 | 显示全部楼层
你写的程序很奇怪呃。。。
段只能有3个,你却定义了四个。而且没有数据段的假设
你这样不是一个好的编程习惯,只能说你是新手。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-4 16:49:25 | 显示全部楼层

嗯 我是新手  我是认为那3个数据段段地址是一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-4 16:50:36 | 显示全部楼层
mov dx,[bx+16]
    add ax,ds
这里打错了 应该是dx
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-3-4 18:57:54 | 显示全部楼层
谁抢了我的小红 发表于 2013-3-4 16:49
嗯 我是新手  我是认为那3个数据段段地址是一样的

怎么可能一样。。。
你还是再好好看看教程吧。
还有不要给段起一些很奇怪的名字(比如a, b, c,数据段就叫data,代码段就叫code,栈段就叫stack)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-3-4 21:54:07 | 显示全部楼层
话说 你这程序 A,B,C段 定义的是db 且只有 8个字节 当然 生成后会 默认给一行 16字节 masm615是这样
但是 你这段地址加b中的数据 加的是字 放到 c也是字  不知道你这程序要干什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-5 13:25:20 | 显示全部楼层
半生缘 发表于 2013-3-4 22:18
好了 完成了
assume cs:code
a segment

  我知道怎么解决的  我之前用过dl 但是后面我是add ax,dl 所以还是错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-5 13:29:04 | 显示全部楼层
半生缘 发表于 2013-3-4 21:54
话说 你这程序 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,[bx]

        mov ss:[bx],ax

        mov ax,es:[bx]

        add ss:[bx],ax

        inc bx

        loop s

        mov ax,4c00h

        int 21h

code ends

end start
  这是教材里面的一个题的答案 吧a断的数据加上b段的数据放到c段  为什么单里面定义的是字节 后面意识用的ax?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-3-5 13:41:33 | 显示全部楼层
谁抢了我的小红 发表于 2013-3-5 13:29
assume cs:code

a segment

他这是 覆盖啊 就是 算了1,2 再算2,3再算3,4
就这样覆盖 但是和容易出错的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-7 22:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表