我正慢慢地试图进入osdev只是为了玩.
本教程有一个程序集等待驱动器准备就绪:
reset_drive:
mov ah, 0
int 13h
or ah, ah
jnz reset_drive
Run Code Online (Sandbox Code Playgroud)
我知道在中断之后,ah如果设备准备好,它将为零.但是做了or ah,ah什么?似乎有点多余......似乎什么都不做.(至少按照我的逻辑)它做了什么?
pha*_*t0m 12
它根据是否ah为零来设置/取消设置ZERO标志.
根据标志的状态,jnz reset_drive会跳转:只有当ah是不为零.
换句话说,它等待设备准备就绪,因为它在ah变为零后停止重复.