奇怪loopz为什么要使用pushfd跟popfd

raygts 2006-04-20 09:18:04
这是loop版,寻找数组中不为0的数
L1:
CMP WORD PTR [ebx],0000H

jnz found
add ebx,2

loopz L1
jmp notFound

改为使用loopz 后:
L1:
CMP WORD PTR [ebx],0000H
pushfd ;必须添加
jnz found
add ebx,2
popfd ;必须添加
loopz L1
jmp notFound
定义一数组:intArray SWORD 0,0,0,0,1,20,-9,0如果loopz不是用pushfd跟popfd就无法寻找到非零的数??
为什么呢????为什么loop就没问题呢?????奇怪???

...全文
223 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zara 2006-04-20
  • 打赏
  • 举报
回复
因为 add ebx, 2 指令破坏了 cmp 的 ZF 结果, 而且由于 ebx 为指针, 通常肯定不会为 0 的, 故致 loopz 条件不成立. 前面有 cmp ... jnz 指令对, 后面用 loop 就足够了

21,453

社区成员

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

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