或者al,汇编语言

时间:2014-03-02 04:27:30

标签: 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

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

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

如果结果为0(即当al = 0时),

or al, al设置零标志,就像cmp al, 0那样。这两个操作之间的有用区别是or al, al在x86架构上的编码较小。