.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
这是mit 6.828类(class)的bootloader程序的起始部分。我想知道为什么我们需要清除方向标志。我明白清除方向标志的作用,但是清除它有什么必要?
最佳答案
如果引导加载程序将控制权转移给您的代码时恰好设置了方向标志,则字符串操作将不会按您期望的方式工作。大多数行为良好的引导加载程序可能不会这样做,但可以肯定的是,这是一个很好的做法。
关于assembly - 为什么要清除方向标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23965877/