![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
loope和loopne就是比loop多了一个测试ZF标志位的东西。
loope是只有在CX不等于0和ZF=1的情况下才执行循环。
loopne是是只有在CX不等于0和ZF=0的情况下才执行循环。
例子:
assume cs:code,ds:data
data segment
buff db 12,45,67,23,0FFH
data ends
code segment
start:
mov ax,data
mov ds,ax
mov bx,offset buff
mov cx,100
circle:
inc byte ptr [bx]
inc bx
cmp byte ptr [bx],0FFH
loopne circle
mov ax,4C00H
int 21H
code ends end start
扩展资料
loop closure detection与place recognition有很多相似之处,它们所使用的方法很多都是相通的,可以说place recognition是loop closure detection的支撑。
不同点:
它们对应的性能评价指标有些不同:
(1)place recognition主要关注算法对视角变化和光照变化的鲁棒性,具体说来就是Precision和Recall的取值
(2)由于loop closure detection是slam的一个模块,所以loop closure detection除了关注算法对视角变化和光照变化的鲁棒性外,还关注算法的时间性能。
尽管有些place recognition算法也关注算法的时间性能,但是place recognition主要关心的是算法的离线时间性能,也就是place recognition关注判断某张图片所对应的位置是否在整个数据集(数据集大小固定)中对应的位置出现所用的时间。
而loop closure detection关注的是算法的在线性能,也就是随着算法的时间性能随着机器人采集的图片增长的变化趋势。
因此,如果一种place recognition算法仅能做离线工作,那它就不能移植成loop closure detection算法。
反之,如果一种place recognition算法能做在线工作,那它就能移植成loop closure detection算法,这时place recognition和loop closure detection的方法的核心是一样的。
参考资料来源:百度百科——Loop
![](https://ecmb.bdimg.com/kmarketingadslogo/fc48c2040562611dd976dfc267a3114a_60_60.jpg)
2023-06-12 广告
loope和loopne就是比loop多了一个测试ZF标志位的东西
loope是只有在CX不等于0和ZF=1的情况下才执行循环
loopne是是只有在CX不等于0和ZF=0的情况下才执行循环
如你所愿,例子:
assume cs:code,ds:data
data segment
buff db 12,45,67,23,0FFH
data ends
code segment
start:
mov ax,data
mov ds,ax
mov bx,offset buff
mov cx,100
circle:
inc byte ptr [bx]
inc bx
cmp byte ptr [bx],0FFH
loopne circle
mov ax,4C00H
int 21H
code ends
end start
这个程序的作用是将一个以字符0FFH为结束符的整数数组的元素全部加一
我这个例子没有什么实际的意义,正常的程序不会用可能用到的数字做结束标记的
当cmp byte ptr [bx],0FFH中[bx]指向的字节就是0FFH的时候ZF就变成了0,这时候就算CX不是0,但由于ZF=1了,所以loopne执行循环的条件就不存在了,所以退出循环
其实在我提供的那个例子里CX只起到了一个上限的作用,也就说如果数组的长度大于100的话,后面的元素就不管了
其实就是节省了一条jz或者是jnz指令
翻译成C语言就是这样:
for (i=0;i<=XX;i++)
{
...
if (XX) break;
...
}