📄 bios.h
字号:
/* * (C) Copyright 2002 * Daniel Engstr鰉, Omicron Ceti AB, daniel@omicron.se * * See file CREDITS for list of people who contributed to this * project. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA */#ifndef _BIOS_H_#define _BIOS_H_#define OFFS_ES 0 /* 16bit */#define OFFS_GS 2 /* 16bit */#define OFFS_DS 4 /* 16bit */#define OFFS_EDI 6 /* 32bit */#define OFFS_DI 6 /* low 16 bits of EDI */#define OFFS_ESI 10 /* 32bit */#define OFFS_SI 10 /* low 16 bits of ESI */#define OFFS_EBP 14 /* 32bit */#define OFFS_BP 14 /* low 16 bits of EBP */#define OFFS_ESP 18 /* 32bit */#define OFFS_SP 18 /* low 16 bits of ESP */#define OFFS_EBX 22 /* 32bit */#define OFFS_BX 22 /* low 16 bits of EBX */#define OFFS_BL 22 /* low 8 bits of BX */#define OFFS_BH 23 /* high 8 bits of BX */#define OFFS_EDX 26 /* 32bit */#define OFFS_DX 26 /* low 16 bits of EBX */#define OFFS_DL 26 /* low 8 bits of BX */#define OFFS_DH 27 /* high 8 bits of BX */#define OFFS_ECX 30 /* 32bit */#define OFFS_CX 30 /* low 16 bits of EBX */#define OFFS_CL 30 /* low 8 bits of BX */#define OFFS_CH 31 /* high 8 bits of BX */#define OFFS_EAX 34 /* 32bit */#define OFFS_AX 34 /* low 16 bits of EBX */#define OFFS_AL 34 /* low 8 bits of BX */#define OFFS_AH 35 /* high 8 bits of BX */#define OFFS_VECTOR 38 /* 16bit */#define OFFS_IP 40 /* 16bit */#define OFFS_CS 42 /* 16bit */#define OFFS_FLAGS 44 /* 16bit */#define SEGMENT 0x40#define STACK 0x800 /* stack at 0x40:0x800 -> 0x800 *//* save general registers *//* save some segments *//* save callers stack segment .. *//* ... in gs */ /* setup my segments */ /* setup BIOS stackpointer */#define MAKE_BIOS_STACK \ pushal ; \ pushw %ds ; \ pushw %gs ; \ pushw %es ; \ pushw %ss ; \ popw %gs ; \ movw $SEGMENT,%ax ; \ movw %ax,%ds ; \ movw %ax,%es ; \ movw %ax,%ss ; \ movw %sp,%bp ; \ movw $STACK,%sp#define RESTORE_CALLERS_STACK \ pushw %gs ; /* restore callers stack segment */ \ popw %ss ; \ movw %bp,%sp ; /* restore stackpointer */ \ \ popw %es ; /* restore segment selectors */ \ popw %gs ; \ popw %ds ; \ \ popal /* restore GP registers */#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -