我正在尝试逐渐进入操作系统开发以便进行实验。
这篇教程有一段汇编代码可以等待驱动器准备好:
reset_drive:
mov ah, 0
int 13h
or ah, ah
jnz reset_drive
在中断后,如果设备准备就绪,ah
将为零。但 or ah,ah
这段代码是什么意思?看起来有点多余...它似乎什么也没做(至少根据我的逻辑)。它是用来做什么的?
test ah,ah
相比非常糟糕,特别是对于高8位寄存器来说更是如此,因为在Intel CPU上写入它们会导致部分寄存器合并问题,即使是Skylake也是如此。 - Peter Cordes