📄 main.s
字号:
.file "main.c".lcomm _startup_time,16 .section .text_time_init: pushl %ebp movl %esp, %ebp pushl %ebx subl $52, %espL2: subl $8, %esp pushl $112 pushl $128 call _outportb addl $16, %esp subl $12, %esp pushl $113 call _inportb addl $16, %esp andl $255, %eax movl %eax, -40(%ebp) subl $8, %esp pushl $112 pushl $130 call _outportb addl $16, %esp subl $12, %esp pushl $113 call _inportb addl $16, %esp andl $255, %eax movl %eax, -36(%ebp) subl $8, %esp pushl $112 pushl $132 call _outportb addl $16, %esp subl $12, %esp pushl $113 call _inportb addl $16, %esp andl $255, %eax movl %eax, -32(%ebp) subl $8, %esp pushl $112 pushl $135 call _outportb addl $16, %esp subl $12, %esp pushl $113 call _inportb addl $16, %esp andl $255, %eax movl %eax, -28(%ebp) subl $8, %esp pushl $112 pushl $136 call _outportb addl $16, %esp subl $12, %esp pushl $113 call _inportb addl $16, %esp andl $255, %eax movl %eax, -24(%ebp) subl $8, %esp pushl $112 pushl $137 call _outportb addl $16, %esp subl $12, %esp pushl $113 call _inportb addl $16, %esp andl $255, %eax movl %eax, -20(%ebp) movl -40(%ebp), %ebx subl $8, %esp pushl $112 pushl $128 call _outportb addl $16, %esp subl $12, %esp pushl $113 call _inportb addl $16, %esp andl $255, %eax cmpl %eax, %ebx jne L2 movl -40(%ebp), %eax movl %eax, %ecx andl $15, %ecx movl -40(%ebp), %eax movl %eax, %edx sarl $4, %edx movl %edx, %eax sall $2, %eax addl %edx, %eax addl %eax, %eax leal (%ecx,%eax), %eax movl %eax, -40(%ebp) movl -36(%ebp), %eax movl %eax, %ecx andl $15, %ecx movl -36(%ebp), %eax movl %eax, %edx sarl $4, %edx movl %edx, %eax sall $2, %eax addl %edx, %eax addl %eax, %eax leal (%ecx,%eax), %eax movl %eax, -36(%ebp) movl -32(%ebp), %eax movl %eax, %ecx andl $15, %ecx movl -32(%ebp), %eax movl %eax, %edx sarl $4, %edx movl %edx, %eax sall $2, %eax addl %edx, %eax addl %eax, %eax leal (%ecx,%eax), %eax movl %eax, -32(%ebp) movl -28(%ebp), %eax movl %eax, %ecx andl $15, %ecx movl -28(%ebp), %eax movl %eax, %edx sarl $4, %edx movl %edx, %eax sall $2, %eax addl %edx, %eax addl %eax, %eax leal (%ecx,%eax), %eax movl %eax, -28(%ebp) movl -24(%ebp), %eax movl %eax, %ecx andl $15, %ecx movl -24(%ebp), %eax movl %eax, %edx sarl $4, %edx movl %edx, %eax sall $2, %eax addl %edx, %eax addl %eax, %eax leal (%ecx,%eax), %eax movl %eax, -24(%ebp) movl -20(%ebp), %eax movl %eax, %ecx andl $15, %ecx movl -20(%ebp), %eax movl %eax, %edx sarl $4, %edx movl %edx, %eax sall $2, %eax addl %edx, %eax addl %eax, %eax leal (%ecx,%eax), %eax movl %eax, -20(%ebp) movl -24(%ebp), %eax decl %eax movl %eax, -24(%ebp) subl $12, %esp leal -40(%ebp), %eax pushl %eax call _getStartTime addl $16, %esp movl %eax, _startup_time movl -4(%ebp), %ebx leave ret .p2align 2LC0: .ascii "------MINIOS is running------\12\0".globl _main_main: leal 4(%esp), %ecx andl $-16, %esp pushl -4(%ecx) pushl %ebp movl %esp, %ebp pushl %ecx subl $4, %esp call _clrscr subl $12, %esp pushl $LC0 call _printk addl $16, %esp call _sched_init call _char_drv_init subl $12, %esp pushl $33 call _inportb addl $16, %esp movl $0, %edx movb %al, %dl movl $254, %eax andl %edx, %eax subl $8, %esp pushl %eax pushl $33 call _outportb addl $16, %esp/APP sti; movl %esp,%eax;pushl $0x17;pushl %eax;pushfl;pushl $0x0f;pushl $L;iret;L:;movl $0x17,%eax;movw %ax,%ds;movw %ax,%es;movw %ax,%fs;movw %ax,%gs;/NO_APP subl $12, %esp pushl $_task1 call _task_init addl $16, %esp subl $12, %esp pushl $_task2 call _task_init addl $16, %espL6: call _init jmp L6.globl _sched_init_sched_init: pushl %ebp movl %esp, %ebp subl $24, %esp movl $0, -4(%ebp) jmp L9L10: movl -4(%ebp), %edx movl %edx, %eax sall $4, %eax addl %edx, %eax sall $3, %eax addl %edx, %eax sall $2, %eax movl $-1, _task(%eax) movl -4(%ebp), %edx movl %edx, %eax sall $4, %eax addl %edx, %eax sall $3, %eax addl %edx, %eax sall $2, %eax movl $-1, _task+20(%eax) movl -4(%ebp), %edx movl %edx, %eax sall $4, %eax addl %edx, %eax sall $3, %eax addl %edx, %eax sall $2, %eax movl $-1, _task+24(%eax) movl -4(%ebp), %edx movl %edx, %eax sall $4, %eax addl %edx, %eax sall $3, %eax addl %edx, %eax sall $2, %eax movl $-1, _task+28(%eax) movl -4(%ebp), %edx movl %edx, %eax sall $4, %eax addl %edx, %eax sall $3, %eax addl %edx, %eax sall $2, %eax movl $-1, _task+32(%eax) incl -4(%ebp)L9: cmpl $2, -4(%ebp) jle L10 movl $1, _process_id movl $0, _p_current movl $0, _p_current movl $0, _p_previous movl $0, _p_ready movl $0, _p_head movl __tss0, %eax subl $8, %esp pushl %eax pushl $0 call _set_tss_desc addl $16, %esp movl __ldt0, %eax subl $8, %esp pushl %eax pushl $0 call _set_ldt_desc addl $16, %esp/APP pushfl;andl $0xffffbfff,(%esp);popfl;/NO_APP movl $40, %eax/APP lldt %ax;/NO_APP movl $32, %eax/APP ltr %ax;/NO_APP leave ret.globl _init_init: pushl %ebp movl %esp, %ebp subl $24, %espL14: subl $12, %esp pushl $48 call _putchar addl $16, %esp movl $0, -4(%ebp) jmp L15L16: incl -4(%ebp)L15: cmpl $16382, -4(%ebp) jbe L16 jmp L14.globl _task1_task1: pushl %ebp movl %esp, %ebp subl $24, %espL20: subl $12, %esp pushl $65 call _putchar addl $16, %esp movl $0, -4(%ebp) jmp L21L22: incl -4(%ebp)L21: cmpl $16382, -4(%ebp) jbe L22 jmp L20.globl _task2_task2: pushl %ebp movl %esp, %ebp subl $24, %espL26: subl $12, %esp pushl $66 call _putchar addl $16, %esp movl $0, -4(%ebp) jmp L27L28: incl -4(%ebp)L27: cmpl $16382, -4(%ebp) jbe L28 jmp L26.comm _desc,1008.comm _task,1648.comm _process_id,16.comm _p_current,16.comm _p_previous,16.comm _p_ready,16.comm _p_head,16 .ident "GCC: (GNU) 4.2.1"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -