冒泡排序问题

GGJJyangjinhan 2009-05-10 12:44:32
y:ptr dword,
h:dword

mov ecx,h
dec ecx
l1:push ecx
mov esi,y
l2:mov eax,[esi]
cmp [esi+4],eax
jg l3
xchg eax,[esi+4]
mov [esi],eax
l3:add esi,4
loop l2

pop ecx
loop l1
l4:ret
yang endp


问题1 这段程序整个是在利用栈操作吗

问题2 其中eax在这里起到什么作用?

问题3 add esi,4是起到交换作用的吗?是的话我怎么也想不明白这样就能交换2个数。

问题4 ecx是被用作计数器吧,循环几次?如果不是用作计数那是做什么的?
mov ecx,h
dec ecx
l1:push ecx
这个已经被压入栈了还能计数?


...全文
84 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
vip_521 2009-05-11
  • 打赏
  • 举报
回复
想说的都被说了呢?
积分、 嘿嘿
BAYNPU 2009-05-10
  • 打赏
  • 举报
回复
后面这二个问题不做详细解说了,你猜也能猜得出来.
goodider 2009-05-10
  • 打赏
  • 举报
回复
1楼说的没错。
BAYNPU 2009-05-10
  • 打赏
  • 举报
回复
问题1 这段程序整个是在利用栈操作吗

问题2 其中eax在这里起到什么作用?
先回答这2个问题:
1、利用堆栈进行数据交换。
2、EAX起到保存返回值的作用。

y:ptr dword,
h:dword

还有这二个变量数据你必须弄清楚,第一个是PTR DWORD,第二个是DWORD,第一个PTR DWORD传送数据是先从低字节,然后再传送高字节.

21,500

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧