我必须在字符串中找到子字符串的(开始)位置。我在AL
中逐字节加载字符串,并使用SCASB
进行比较。如何检查字节是否相等或SCASB
是否为真?
clc
scasb ;compare the value from al with <es:di>
;al is loaded from <ds:si>(lodsb)
;I noticed that when the values are equal
;cf and af are 1
jnc nextElem ;if cf is 0 go to the next element
lahf
cmp ah,0
je nextElem ;if af is 0 go to next elem
问题是LAHF
没有带来我期望的值啊,意思是不是0或1,我不知道是否有任何其他方法来检查{{1}中的值并且是平等的。
答案 0 :(得分:1)
我稍微更改了代码,就是这样:
document.querySelector("#foo").addEventListener(function() {
Video.init(...)
});
答案 1 :(得分:1)
如果你不想使用跳转指令,你可以使用&#34; RepNE ScaSB&#34;字符串指令,要查找上一个不匹配字符(CX)的偏移量,您可以写:
ClD {Clear string direction flag}
XOr AL,AL {Set AL's reg. with the character to find (0)}
Mov CX,0FFFFH {Set CX's reg. with maximum length of the string}
RepNE ScaSB {Search null and decrease CX's reg.}
LAHF {Load FZero flag into AH (Bit6)}
Not CX {Set CX with the number of char scanned}
ShL AH,1 {...}
ShL AH,1 {... FCarry is set with (FZero after scan)}
SbB CX,0 {If it founds 0 decrease CX's reg.}
如果CX = 65535,您还没找到该角色。
嗨!
答案 2 :(得分:0)
$myString = "[";
if ($result=mysqli_query($conn,$sql)) {
while ($row=mysqli_fetch_row($result)) {
$locs_json = sprintf(json_encode(array("lat"=>"%s", "lng"=>"%s", "dragable"=>"false")),$row[0],$row[1]);
$locs = $locs_json.",";
$myString .= $locs;
}
mysqli_free_result($result);
$myString = rtrim($myString, ",");
}
$myString .= "]";
print $myString;
,Scasb
仅在字符串上使用时才有用,在CX寄存器中使用长度/计数器。以下是cmpsb
在8086 asm中实现的:
http://techref.massmind.org/techref/language/asm/x86/stdlib/STRSTR.ASM
这个想法是使用strstr
和repne前缀(重复但不相等)来查找字符串中的第一个子字符串。如果找到,则使用scasb
比较字符串的其余部分。