汇编语言的loop指令

datareasegmentgradedw88,75,95,63,98,78,87,73,90,60rankdw10dup(?)datareaendsprognamseg... datarea segment
grade dw 88,75,95,63,98,78,87,73,90,60
rank dw 10 dup(?)
datarea ends
prognam segment
main proc far
assume cs:prognam,ds:datarea
start:
push ds
sub ax,ax
push ax
mov ax,datarea
mov ds,ax
mov di,10
mov bx,0
loop:
mov ax,grade[bx]
mov dx,0
mov cx,10
lea si,grade
next:
cmp ax,[si]
jg no_count
inc dx
no_count:
add si,2
loop next
mov rank[bx],dx
add bx.2
dec di
jne loop
ret
main endp
prognam ends
end start

这段代码我照抄书上的实验源代码的,问了老师后,老师说是jne loop的语法错误,但是我不知道怎么改才能让程序成功运行且执行正确功能(应该是累似高级语言里的冒泡法排序)
展开
 我来答
shanyufei2010
推荐于2018-04-24 · TA获得超过563个赞
知道小有建树答主
回答量:102
采纳率:0%
帮助的人:138万
展开全部
loop在汇编语言中是关键字,loop本身就是个指令,不能作为子程式入口名。可以将loop改为loop0 or loop1,只要符合命名规则就行。
更多追问追答
追问
上面的loop:
mov ax,grade[bx]
mov dx,0
mov cx,10
lea si,grade
我是想做一个循环的,这个用loop入口没问题吧
追答
我把你的程序拷下来编译了下(编译环境:MASMPlus),显示loop入口有error,所以我认为关键字作为入口名是不可以的。还有add bx.2这句有error(倒数第七行),中间应该是个逗号。
做而论道
高能答主

2011-11-08 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
修改如下:
……
no_count:
add si,2
oopl: ;这里加上一个标号
loop next
mov rank[bx],dx
add bx,.2 ;加上逗号.
dec di
jne oopl ;目的地改为 oopl
ret
main endp
prognam ends
end start

试试看吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
普_化
2011-11-07 · 超过24用户采纳过TA的回答
知道答主
回答量:49
采纳率:0%
帮助的人:63万
展开全部
shanyufei2010 的回答是正确的;loop是循环控制指令(无条件循环,格式是: loop 目标标号),所以不能作为标号,会引起误解.
追问
其实我的疑问重点不在这标号上,是怎么改倒数第5行
追答
倒数第五行的错误就是在于loop标号不对啊,你可以将它该后再测试一下,程序结构是对的.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
和黑猫学编程
2020-11-01
知道答主
回答量:84
采纳率:0%
帮助的人:4.2万
展开全部

汇编语言loop指令

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b982b32
2011-11-07 · TA获得超过246个赞
知道小有建树答主
回答量:507
采纳率:0%
帮助的人:307万
展开全部
呵呵
追问
哥们能帮下忙吗
追答
不太懂,我看那人挺有意思。最后你说他没找对问题。所以,呵呵
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式