标题:帮小弟解决这道问题,,求!
只看楼主
小兵打将
Rank: 1
等 级:新手上路
帖 子:47
专家分:5
注 册:2011-4-24
结帖率:70.59%
已结贴  问题点数:0 回复次数:1 
帮小弟解决这道问题,,求!
我要把a中的数据与b中的数据相加后赋值给d中的数据,,代码如下,哪里出错了

assume cs:code,ds:a,ss:b,es:d
a segment
    dw 1,2,3,4,5,6,7,8
a ends

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

d segment
    dw 0,0,0,0,0,0,0,0
d ends

code segment
start:
       mov bx,0
       mov cx,8
     s:mov ax,ds:[bx]
       add ax,ss:[bx]
       add es:[bx],ax
       add bx,2
       loop s
       mov ax,4c00h
       int 21h
code ends
end start
      
搜索更多相关主题的帖子: start 
2011-08-27 16:42
ganbikai
Rank: 2
等 级:论坛游民
帖 子:20
专家分:17
注 册:2011-8-24
得分:10 
以下是引用小兵打将在2011-8-27 16:42:50的发言:

我要把a中的数据与b中的数据相加后赋值给d中的数据,,代码如下,哪里出错了

assume cs:code,ds:a,ss:b,es:d
a segment
    dw 1,2,3,4,5,6,7,8
a ends

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

d segment
    dw 0,0,0,0,0,0,0,0
d ends

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

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

d segment
    dw 0,0,0,0,0,0,0,0
d ends

code segment
【assume cs:code,ds:a,ss:b,es:d】这句的意思是 假设 CS是code  ds是a ss是b es是d  假设的不可信  而且
这些是伪指令  CPU认不出来。 A DW定义的1,2,3,4,5,6,7,8定义到什么地方 我们不知道  编译器知道     编译器会把A翻译成一个段地址 偏移为0 顺序存放这些数据 这道题目是让你把A定义的1,2,3,4,5,6,7,8 + B DW2,3,4,4,5,6,7,8 这是数据相加 那么肯定是用DS指向这里
既然编译器会把A翻译成一个段地址 你把这个地址先给mov ax,a 然后mov ds,ax 那么DS和A就相等了  他们指向同一个地址   这样那个A 定义的DW 12345678 就能正确的找到了  就可以++ --了
我才学到第7章  以个人的理解 只能帮到这些了

[ 本帖最后由 ganbikai 于 2011-8-27 23:34 编辑 ]
2011-08-27 23:10



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-348525-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.662270 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved