IT工作室 发表于 2013-7-24 22:12:01

要求编写code段中代码,将a段和b段中数据依次相加,把结果存到

王爽第6章习题,要求编写code段中代码,将a段和b段中数据依次相加,把结果存到c段中assumecs:code
a       segment
          ab1,2,3,4,5,6,7,8
a       ends

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

c       segment
          ab   0,0,0,0,0,0,0,0
c       ends

code    segment
start:?
code    ends
end   start
求详细解答 谢谢

vitamin 发表于 2013-7-24 22:12:02

huanxiangzhe2 发表于 2013-7-25 15:38 static/image/common/back.gif
logite这位鱼友,我想知道为什么我的程序执行不下去,帮我看看吧,我并不是想得到一段可执行代码。希望帮我 ...

c在masm中属于关键字。

Dardy 发表于 2013-7-24 23:20:44

assumecs:code
a       segment
          db1,2,3,4,5,6,7,8
a       ends

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

d       segment
          db   0,0,0,0,0,0,0,0
d      ends

code    segment
                ;d段和ES挂勾
start:         mov ax,d
                mov es,ax
                ;把a段的数据传到d段
                mov ax,a
                mov ds,ax
                mov bx,0
                mov cx,8
        s:        mov al,ds:
                mov es:,al
                inc bx
                loop s
                ;(b段和DS挂勾)ES段和B段相加
                mov ax,b
                mov ds,ax
                mov bx,0
                mov cx,8
        s1:        mov dl,ds:
                add es:,dl
                inc bx
                loop s1
               
                mov 4c00h
                int 21h
code    ends
end   start

huanxiangzhe2 发表于 2013-7-25 07:57:14

本帖最后由 huanxiangzhe2 于 2013-7-25 07:59 编辑

assume cs:code

code segment
start:mov ax,a
                        mov ds,ax
                        
                        mov ax,c
                        mov ss,ax
                        mov sp,8H
                        
                        mov cx,4H
                        mov bx,8H
         s1:sub bx,2H
                        push ds:
                        loop s1
                        
                        mov ax,b
                        mov ds,ax
                        mov bx,0H
                        mov cx,4H
          s2:pop ax
            add ax,
                        mov ,ax
                        add bx,2H
                        loop s2
                        
                        
         mov cx,4H
      s3:mov bx,8H
                        sub bx,2H
                        push ds:                        
                        loop s3                        
                        
                        mov ax,4c00H
                        int 21H
code ends

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

end start
为什么我的这段代码,执行到S1就不行了?求高人指点。

logite 发表于 2013-7-25 13:06:17

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
d segment
   db 0,0,0,0,0,0,0,0
d ends
code segment
start:
      mov ax,a
          mov ds,ax                     ;设置a段为数据段
          mov ax,b
          mov es,ax                     ;b段为附加段
          mov ax,d
          mov ss,ax                     ;使用栈段来保存结果 由于本要用的编译器不能用c来做标号所以用了d
       
          mov bx,0
          mov cx,8                     ;循环次数为8次
s:
      mov al,                        ;将数据段0单元内容传送给al
          add al,byte ptr es:    ;再将b段也就是附加段的0单元内容与al相加
          mov byte ptr ss:,al    ;结果传送到第三个段ss段 这里只是把它看作一个段并没当作栈
          inc bx                           ;bx加1 也就是偏移加1
          loop s                        ;开始循环
          
          mov ax,4c00h
          int 21h
code ends
endstart

huanxiangzhe2 发表于 2013-7-25 15:38:09

logite这位鱼友,我想知道为什么我的程序执行不下去,帮我看看吧,我并不是想得到一段可执行代码。希望帮我解答一下我的错误,谢谢。

zkbutt 发表于 2013-7-25 16:18:33

huanxiangzhe2 发表于 2013-7-25 15:38
logite这位鱼友,我想知道为什么我的程序执行不下去,帮我看看吧,我并不是想得到一段可执行代码。希望帮我 ...

什么不行了 请详细描述 我看了 s1 没发现问题 要不你把abc段移上面去

huanxiangzhe2 发表于 2013-7-25 18:25:08

哥们,就是在按步执行的时候,s1循环两次就报错,你执行一下看看吧,不知道哪里错了。

紸锭↗噯伱□ 发表于 2013-8-28 14:08:25

编译器里一个段貌似不能用c来命名

Crazy迷恋. 发表于 2013-8-28 17:08:22

C为关键字哦~~~如果朋友 使用高亮的 编辑器会发现它是高亮的。

shi_1236 发表于 2013-9-3 13:14:33

{:1_1:}顶。。。。{:1_1:}
页: [1]
查看完整版本: 要求编写code段中代码,将a段和b段中数据依次相加,把结果存到