.set PROT_MODE_CSEG, 0x8 # kernel code segment selector
.set PROT_MODE_DSEG, 0x10 # kernel data segment selector
.set CR0_PE_ON, 0x1 # protected mode enable flag
.globl start
start:
.code16 # Assemble for 16-bit mode
cli # Disable interrupts
cld # clear direction flag -> String operations increment
# Set up the important data segment registers (DS, ES, SS).
xorw %ax,%ax # Segment number zero
movw %ax,%ds # -> Data Segment
movw %ax,%es # -> Extra Segment
movw %ax,%ss # -> Stack Segment这是麻省理工学院6.828课程引导程序的起始部分。我想知道为什么我们需要清除方向标志。我明白什么是清除方向标志,但有什么需要清除它呢?
发布于 2014-05-31 03:02:06
如果在引导加载程序将控制转移到您的代码时设置了方向标志,则字符串操作将不会按照您预期的方式工作。大多数行为良好的引导程序可能不会这样做,但这是一个很好的实践。
https://stackoverflow.com/questions/23965877
复制相似问题