📄 test-i386-vm86.s
字号:
.code16 .globl vm86_code_start .globl vm86_code_end#define GET_OFFSET(x) ((x) - vm86_code_start + 0x100)vm86_code_start: movw $GET_OFFSET(hello_world), %dx movb $0x09, %ah int $0x21 /* prepare int 0x90 vector */ xorw %ax, %ax movw %ax, %es es movw $GET_OFFSET(int90_test), 0x90 * 4 es movw %cs, 0x90 * 4 + 2 /* launch int 0x90 */ int $0x90 /* test IF support */ movw $GET_OFFSET(IF_msg), %dx movb $0x09, %ah int $0x21 pushf popw %dx movb $0xff, %ah int $0x21 cli pushf popw %dx movb $0xff, %ah int $0x21 sti pushfl popl %edx movb $0xff, %ah int $0x21 #if 0 movw $GET_OFFSET(IF_msg1), %dx movb $0x09, %ah int $0x21 pushf movw %sp, %bx andw $~0x200, (%bx) popf#else cli#endif pushf popw %dx movb $0xff, %ah int $0x21 pushfl movw %sp, %bx orw $0x200, (%bx) popfl pushfl popl %edx movb $0xff, %ah int $0x21 movb $0x00, %ah int $0x21int90_test: pushf pop %dx movb $0xff, %ah int $0x21 movw %sp, %bx movw 4(%bx), %dx movb $0xff, %ah int $0x21 movw $GET_OFFSET(int90_msg), %dx movb $0x09, %ah int $0x21 iret int90_msg: .string "INT90 started\n$" hello_world: .string "Hello VM86 world\n$"IF_msg: .string "VM86 IF test\n$"IF_msg1: .string "If you see a diff here, your Linux kernel is buggy, please update to 2.4.20 kernel\n$"vm86_code_end:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -