我找到了编写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。如果你自己或它的东西你得到你开始的正确吗?
如果有人能回答这个问题,我会永远爱他们。)
答案 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