标题:[求助]求教有一道简单的编程题不知问题是出在哪里
只看楼主
syb8888
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-7-30
 问题点数:0 回复次数:3 
[求助]求教有一道简单的编程题不知问题是出在哪里

data1 segment
aa DB dup(10)
data1 ends

stack segment stack
db 100 dup(0)
stack ends

code segment
assume cs:code;ds:data1;ss:stack
start:
mov ax,data1
mov ds,ax
xor ax,ax
mov bx,ax
mov cx,10
don: mov al,[aa+bx]
inc bx
loop don
code ends
end start
在编译时一直有错

搜索更多相关主题的帖子: start 
2006-07-30 08:49
yuki
Rank: 2
等 级:新手上路
威 望:5
帖 子:508
专家分:0
注 册:2005-2-4
得分:0 
以下是引用syb8888在2006-7-30 8:49:54的发言:

data1 segment
aa DB dup(10) ;这里没有指定aa的大小,或许可以改为aa db 10 dup(0)
data1 ends

stack segment stack ;这里会发生警告原因是stack是编译器的保留字
db 100 dup(0) ;16位程序,栈的每个单元是2个字节,也就是一个字吧,最好定义成dw类型
stack ends

code segment
assume cs:code;ds:data1;ss:stack ;语法问题,不要用分号隔开,用逗号
start:
mov ax,data1
mov ds,ax
xor ax,ax ;上面错误改正后可以编译,但我觉得程序上有问题,可能会崩溃,ax到这里应该存放的是ds的段地址吧,那么取个异或变成0000H那么移入bx后再用间接访问内存好像会有问题。
mov bx,ax
mov cx,10
don: mov al,[aa+bx]
inc bx
loop don
code ends
end start
在编译时一直有错

[此贴子已经被作者于2006-7-30 10:25:43编辑过]


我们都在命运湖上荡舟划桨,波浪起伏使我们无法逃离孤行;如果我们迷失方向,波浪将指引我们穿过另一天曙光
2006-07-30 10:04
syb8888
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-7-30
得分:0 

谢谢

2006-07-30 10:22
rodney
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-7-28
得分:0 
堆栈定义有问题,况且你还要把堆栈赋值给ss段.不然可以不用定义的.
堆栈定义:
[CODE]
stack segment stack
dw 100 dup(0)
tos label word
stack ends
[/CODE]
代码段可以这样写:
[CODE]
code segment
assume cs:code;ds:data1;ss:stack
start:
mov ax,stack
mov ss,ax
lea sp,tos
push ds
xor ax,ax
push ax
mov ax,data1
mov ds,ax
mov bx,ax
mov cx,10
don: mov al,[aa+bx]
inc bx
loop don
ret
code ends
end start
[/CODE]

2006-07-30 15:44



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




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

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