为什么需要这种装配线

时间:2012-10-20 07:37:16

标签: assembly bootloader

我找到了编写bootloader的教程。除了1行之外,我都很清楚。这是一些代码。

Print:
    lodsb
    or al, al ;I don't get this line
    jz PrintDone
    mov ah, 0x0e
    int 0x10
    jmp Print

它有一些其他代码可以清除int 0x10使用的寄存器。我唯一不明白的是al al,al line。如果你自己或它的东西你得到你开始的正确吗?

如果有人能回答这个问题,我会永远爱他们。)

1 个答案:

答案 0 :(得分:3)

JZ指令是JMP指令的一种形式,只有在设置零标志时才会发生跳转。如果al为零,则“OR AL,AL”设置零标志。这比使用CMP比较更有效。

CMP AX,0        ;see if the number in ax is zero (zero flag set if so)
OR AX,AX        ;this does exactly the same but uses 2 bytes instead of 3
TEST AX,AX      ;again this is the same and uses only 2 bytes