【发布时间】:2017-01-13 08:23:27
【问题描述】:
我正在创建一个小例程来使用lidt 指令加载idtr 寄存器。
我已经创建了这段代码 -
global load_idt
load_idt:
mov eax, esp
add eax, 4
lidt eax ;<-----------------LINE 9
ret
但是当我使用 Nasm 编译它时,我得到一个错误 -
kernel/kernel_start.asm:9: error: invalid combination of opcode and operands
我的编译命令是-
nasm kernel/kernel_start.asm -f elf32 -o kernel/kernel_start.o
谁能指出这个程序的错误?
【问题讨论】:
-
助记符是
LIDT m16&32...您的意思是lidt [eax]吗? -
我想使用
load_idt(<address-of-the-stored-idtr>)在C语言中调用函数。我必须使用[eax]吗?它不会指向 idtr 的值而不是它的地址吗? @Tommylee2k