空瓶氧气 发表于 2013-7-11 22:33:44

包含多个段的程序

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,0
                mov bx,8
                mov dx,10h
               
                mov cx,8
        s:        mov ds:,ds:
                add ds:,ds:
                inc ax
                inc bx
                inc dx
                loop s
               
                mov ax,4c00h
                int 21h
               
               
        code ends
end start
怎么错了?

281595933 发表于 2013-7-11 23:15:39

楼主`~!看了你的代码发现有两个问题
c segment
db 0,0,0,0,0,0,0,0
c ends
这段代码前面的标号“c"在编译器里面至少是你使用的MASM版本是认为错误的,改成其他的就行
代码的23和24行的错误就是你没使用寄存器交换数据,段与段之间直接交换数据时不行的

Dardy 发表于 2013-7-11 23:47:09

add也不能两个都是内存单元。

怡静 发表于 2013-7-12 00:46:40

Dardy 发表于 2013-7-11 23:47 static/image/common/back.gif
add也不能两个都是内存单元。

回答的不错。加油!

小甲鱼 发表于 2013-7-12 02:12:18

Dardy 发表于 2013-7-11 23:47 static/image/common/back.gif
add也不能两个都是内存单元。

Mark,申请转正的时候提醒我给你颁发一个乐于助人的勋章~~~

Dardy 发表于 2013-7-12 02:13:39

小甲鱼 发表于 2013-7-12 02:12 static/image/common/back.gif
Mark,申请转正的时候提醒我给你颁发一个乐于助人的勋章~~~

这想法早准备好了。

空瓶氧气 发表于 2013-7-12 11:15:29

281595933 发表于 2013-7-11 23:15 static/image/common/back.gif
楼主`~!看了你的代码发现有两个问题
c segment
db 0,0,0,0,0,0,0,0


o 确实 换了就行了

空瓶氧气 发表于 2013-7-12 11:18:19

Dardy 发表于 2013-7-11 23:47 static/image/common/back.gif
add也不能两个都是内存单元。

哦 ,两个内存单元的都不醒 还是只有add不行?

281595933 发表于 2013-7-13 10:11:44

要通过寄存器转存,比如把源内存单元数据存到通用寄存器里,在把寄存器的数据存到目的内存单元。

★远处的灯火 发表于 2013-7-13 20:26:08

本帖最后由 ★远处的灯火 于 2013-7-13 20:29 编辑

assume cs:code,ds:data

data segment
      db 1,2,3,4,5,6,7,8
      db 1,2,3,4,5,6,7,8
      db 0,0,0,0,0,0,0,0
data ends

code segment
start:      mov ax,data
                mov ds,ax
                mov bx,0
                mov cx,8
             s: mov ax,
                mov ds:,ax
                mov ax,
                add ,ax
                inc bx
                loop s
               
                mov ax,4c00h
                int 21h
               
               
code ends
end start
照我这个代码试一试。{:7_169:}

ziheng99 发表于 2013-7-20 12:16:57

★远处的灯火 发表于 2013-7-13 20:26 static/image/common/back.gif
assume cs:code,ds:data

data segment


成功了哎成功了哎成功了哎

大娱乐家_╮ 发表于 2013-7-24 13:01:02

回答的不错。加油!
页: [1]
查看完整版本: 包含多个段的程序