系统的简单注解 - 3 00_header.asm文件

本文介绍了00_header.asm文件的内容,该文件定义了一系列用于操作系统内核的常量和进程控制块结构体。其中包括代码段、数据段的选择子,内存地址等关键信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



00_header.asm文件用于保存代码中使用的一些常量。

其中,“struc proc_ctrl”结构体为进程控制块,用于保存系统/用户进程的核心信息。该结构体在“04_process.asm”文件中被广泛使用。

;===============================================================================
;===                             该处用于保存常量                            ===
;===============================================================================
	 flat_4gb_code_seg_sel    equ 0x0008          ;平坦模式的代码段选择子
	 flat_mode_code           equ 0x0008          ;平坦模式的代码段选择子 
	 flat_mode_data           equ 0x0010          ;平坦模式的数据段选择子
	 
;-------------------------------------------------------------------------------
	 show_mem_addr            equ 0xc00b8000      ;文本显示区域的起始地址
     pic_mem_addr             equ 0xc00a0000      ;图形显示区域的起始地址	 
	 gdt_base_address         equ 0xc0008000      ;gdt表的虚拟地址   
     idt_linear_address       equ 0xc0019000      ;中断描述符表的线性基地址(100K处)	
     mouse_buf_addr           equ 0xc0020000      ;存放鼠标数据的缓冲区基地址      
     mouse_buf_end            equ 8192            ;存放鼠标数据的缓冲区大小(一共8K)
     keyboard_buf_addr        equ 0xc0023000      ;存放键盘数据的缓冲区基地址      
     keyboard_buf_end         equ 4096            ;存键盘数据的缓冲区大小(一共4K,到0xc0024000)	 
     sound_file_address       equ 0xc0030000      ;音乐文件存放的内存地址	 
	 
;-------------------------------------------------------------------------------
     ;常数,ldt表中代码段的高双字 base-0x0;TYPY-8 只执行;P-1;DPL-3;DT-1;G-1;D-1;limit-0xf;base-0;
     ldt_code_high_dd         equ 0x00cff800      	 
     ;常数,ldt表中代码段的低双字 limit-0xffff;base-0x0;
     ldt_code_low_dd          equ 0x0000ffff      
     ;常数,ldt表中数据段的高双字 base-0x0;TYPY-2 读/写;P-1;DPL-3;DT-1;G-1;D-1;limit-0xf;base-0;
     ldt_data_high_dd         equ 0x00cff200      
     ;常数,ldt表中数据段的低双字 limit-0xffff;base-0x0;     
     ldt_data_low_dd          equ 0x0000ffff      

;-------------------------------------------------------------------------------
     task_running             equ 0xa5a5          ;常数,表示进程正在运行
     task_spending            equ 0xaaaa          ;常数,表示进程暂定运行
     task_closed              equ 0x5555          ;常数,表示进程已经停止运行	 
	 
;-------------------------------------------------------------------------------	 
     ;进程控制管理结构。还是使用双向链表便于查找
     struc proc_ctrl  
      .num:        resw    1                      ;进程编号
      .state:      resw    1                      ;当前状态
      .wakeup:     resd    1                      ;进程休眠的截止时间(ticks)
      .pre_task:   resd    1                      ;上一个进程控制结构的地址
      .next_task:  resd    1                      ;下一个进程控制结构的地址      
	  .task_rsvr:  resd    1                      ;保留
	  .task_sel:   resw    1                      ;进程在gdt中的选择子
      .ldt_rsvr:   resd    1                      ;保留
      .ldt_sel:    resw    1                      ;ldt在gdt中的选择子
      .ldt:        resb    16                     ;任务对应的ldt段
      .tss:	       resb    104                    ;任务对应的tss段
      .cmd         resb    8                      ;命令缓冲区(这里主要用于鼠标点击动作)
      .sys_page    resd    1                      ;记录分配的系统页(用于进程就一个权限0的堆栈页)
      .usr_page    resd    8                      ;记录分配的用户页(一个用户进程最多8页)
      .left_x      resw    1                      ;进程窗口的左上角x坐标
      .left_y      resw    1                      ;进程窗口的左上角y坐标
      .len_x       resw    1                      ;进程窗口的长度
      .len_y       resw    1                      ;进程窗口的高度
     endstruc  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值