1

ブートローダーを作成するためのチュートリアルを見つけました。1行を除いて、すべて非常に明確です。ここにいくつかのコードがあります。

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

int 0x10 で使用されるレジスタをクリアするコードが他にもあります。私が理解していない唯一のことは、またはアル、アル行です。あなたがそれ自体で何かをORすると、あなたが始めたものを手に入れることができますか?

誰かがこれに答えることができれば、私は彼らを永遠に愛します:)

4

1 に答える 1

4

JZ 命令は、ゼロ フラグが設定されている場合にのみジャンプが発生することを除いて、JMP 命令の形式です。"OR AL, 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
于 2012-10-20T07:47:29.370 に答える