当前位置: 代码迷 >> 汇编语言 >> 请问关于org指令报错:instruction expected
  详细解决方案

请问关于org指令报错:instruction expected

热度:7533   发布时间:2013-02-26 00:00:00.0
请教关于org指令报错:instruction expected
源码如下:
%include "pm.inc"

org 07c00h
jmp LABEL_BEGIN

[SECTION .gdt]
LABEL_GDT: Descriptor 0, 0, 0
LABEL_DESC_CODE32: Descriptor 0, SegCode32Len-1, DA_C+DA_32
LABEL_DESC_VIDEO: Descriptor 0b8000h, 0ffffh, DA_DRW

GdtLen equ $-LABEL_GDT
GdtPtr dw GdtLen-1
dd 0

SelectorCode32 equ LABEL_DESC_CODE32-LABEL_GDT
SelectorVideo equ LABEL_DESC_VIDEO-LABEL_GDT


[SECTION .s16]
[BITS 16]
LABEL_BEGIN:
mov ax, cs
mov ds, ax
mov es, ax
mov ss, ax
mov sp, 0100h

xor eax, eax
mov ax, cs
shl eax, 4
add eax, LABEL_SEG_CODE32
mov word [LABEL_DESC_CODE32+2], ax
mov eax, 16
mov byte [LABEL_DESC_CODE32+4], al
mov byte [LABEL_DESC_CODE32+7], ah

xor eax, eax
mov ax, ds
shl eax, 4
add eax, LABEL_GDT
mov dword [GdtPtr+2], eax

lgdt [GdtPtr]
cli

in al, 92h
or al, 00000010b
out 92h, al

mov eax, cr0
or eax, 1
mov cr0, eax

jmp dword SelectorCode32:0


[SECTION .s32]
[BITS 32]
LABEL_SEG_CODE32:
mov ax, SelectorVideo
mov gs, ax
mov edi, (80*11+79)*2
mov ah, 0ch
mov al, 'P'
mov [gs:edi], ax

jmp $

SegCode32Len equ $-LABEL_SEG_CODE32

想编译成linux下可执行程序,于是用命令:
nasm -f elf pmboot.asm -o pmboot.bin
编译器报错:
pmboot.asm:4:error:parser:instruction expected
直接用命令nasm pmboot.asm -o pmboot.bin不报错。
请高手指点如何在linux下将此程序编译成可执行程序!


------解决方案--------------------------------------------------------
你这个是引导扇区类的内容吧,不能说是 linux 的,缺省的 bin 类才是最合适的
------解决方案--------------------------------------------------------
你这里面不少的特权指令,比如操作端口、装载 gdt ,linux 下恐怕也执行不了吧,虽然我对 linux 不熟
------解决方案--------------------------------------------------------
用Bochs调试一下引导代码,可以参考:自己动手写操作系统
  相关解决方案