或者al,汇编语言

Qua*_*ale 2 assembly

print_string:
   lodsb        ; grab a byte from SI
   cmp al, 0
   ;or al, al  ; logical or AL by itself
   jz .done   ; if the result is zero, get out

   mov ah, 0x0E
   int 0x10h
Run Code Online (Sandbox Code Playgroud)

我想知道它是如何or al, al工作的.我知道它会测试是否已经打印出字符串中的所有字符?但我不明白逻辑.

Tyl*_*ler 6

如果al为0(或者更确切地说,结果or al, al为0,仅在al为0时发生),则它设置零标志.跳转(jz),测试零标志并跳转(如果已设置).

  • 它会工作.我想这并不重要.通常有可能在组装中做同样的事情. (2认同)
  • 有些人更喜欢“OR”,有些人更喜欢“AND”或“TEST”。IMO,`test` 是必须用于检查零的指令。它的定义考虑到了这个目标。 (2认同)