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工作的.我知道它会测试是否已经打印出字符串中的所有字符?但我不明白逻辑.
如果al为0(或者更确切地说,结果or al, al为0,仅在al为0时发生),则它设置零标志.跳转(jz),测试零标志并跳转(如果已设置).