关于汇编语言中调试多个段的程序(不懂)

根据题目要求是在start之间插入自己编辑的代码,要求将a段和b段中的数据相加,将结果存入c段中。下面的start之间的代码是我自己写的,但是在编译的过程中出现了错误,错误提示在图片中

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 bx,0
        mov cx,8

    s:  add es:[bx],[bx]
        inc bx 
        loop s 

        mov ax,c 
        mov ds,ax 

        mov bx,0
        mov cx,8

    s0: mov [bx],es:[bx]
        inc bx 
        loop s0

        mov ax,4c00h
        int 21h

    code ends 

end start

图片说明

我复制你的编译的问题在add es:[bx],[bx]和mov [bx],es:[bx]指令部分,都是不能从内存到内存。