I found a tutorial for writing a bootloader. It is all very clear to me except for 1 line. Here is some code.
Print:
lodsb
or al, al ;I don't get this line
jz PrintDone
mov ah, 0x0e
int 0x10
jmp Print
It has some other code that clears out the registers used by int 0x10. The only thing I do not understand is the or al, al line. If you OR something with it self you get what you started with right?
If anybody can answer this I will love them forever 🙂
The JZ instruction is a form of the JMP instruction except that the jump occurs only when the zero flag is set. The “OR AL, AL” sets the zero flag if al is zero. This is more efficient than using a CMP compare.