注册 登录
编程论坛 汇编论坛

想请教一下这段代码的错误是不是如同我想的那样

oped02 发布于 2022-12-24 11:04, 2385 次点击
只有本站会员才能查看附件,请 登录

这段代码应该是用来实现将一个给定大小的数组(长度为十)进行从小到大的冒泡排序
题目说这里面有两个错误
我找到了两个但感觉不是特别确认
第一个是如果使用了si和di的话,应该使用串指令来取代mov
第二个是后面LEN*2那个*2应该要去掉,不然感觉会越界
2 回复
#2
Valenciax2022-12-25 17:13
1.
MOV BX, ARRAY[DI+1] ; 应该是 MOV BX, ARRAY[DI+2] ,因为数组是word,相邻的元素差2,不是1
MOV ARRAY[DI+1], AX  ;应该是 MOV ARRAY[DI+2], AX ,同上,但可以视为同一错误

2.
CMP DI, LEN*2 ; 应该是  应该是CMP DI,(LEN-1)*2, 数组个数=10,  内圈比较只须9次 (数组个数-1)
#3
oped022022-12-25 21:04
回复 2楼 Valenciax
谢谢您的解答
这样看来我对汇编的理解还是很淡薄
祝您圣诞节快乐
1