系统的简单注解
来源:互联网 发布:工程造价软件应用心得 编辑:程序博客网 时间:2024/06/17 12:24
该文件包括了时钟中断的主要功能。
rtm_0x20_interrupt_handle:实时时钟中断处理过程;
install_0x20_interrupt:安装0x20号中断(实时时钟);
sys_clock:计算并显示系统时间(秒);
sys_get_seconds:获取系统已经走过的秒数;
;===============================================================================
;=== 本程序包括了时钟中断的主要功能: ===
;=== 1.时钟中断初始化 ===
;=== 2.时钟功能实现 ===
;===============================================================================
;-------------------------------------------------------------------------------
rtm_0x20_interrupt_handle: ;实时时钟中断处理过程
pushad
mov al,0x60 ;中断结束命令EOI
out 0x20,al ;向8259A主片发送
mov eax, [sys_click]
inc eax ;时钟click增加
mov [sys_click], eax
push eax
call wakeup_task ;尝试唤醒暂停的进程
pop eax
test eax, 0x03 ;每中断4次就切换一次进程(4×10ms=40ms)
jz _time_to_swicth ;到了40ms,进程切换
popad
iretd
_time_to_swicth:
call switch_task2
popad
iretd
;-------------------------------------------------------------------------------
install_0x20_interrupt: ;安装0x20号中断(实时时钟)
;设置计时时钟的中断频率
mov al,34h ;设控制字值
out 43h,al ;写控制字到控制字寄存器
mov ax,1193182/100 ;每秒100次中断(10ms一次)
out 40h,al ;写计数器0的低字节
mov al,ah ;AL=AH
out 40h,al ;写计数器0的高字节
mov eax, rtm_0x20_interrupt_handle ;中断向量
mov ebx, 0x20 ;中断向量号
mov ecx, 0x0 ;ch-0主片,cl-0对应bit0
call install_XXX_interrupt
ret
;-------------------------------------------------------------------------------
sys_clock: ;计算并显示系统时间(秒)
pushad
;计算系统启动后持续的秒数
xor edx, edx
xor eax, eax
mov eax, [sys_click] ;被除数是系统tick数
mov ebx, 100 ;除数是100(系统一秒钟tick 100次)
div ebx ;商在eax中
;显示秒数的百位的值
xor dx, dx
mov bx, 100 ;秒的百位的值
div bx ;商在ax,余数在dx
push edx
mov bl, al
mov eax, 0x00460124
mov cl, 7
call disp_letter_font
;显示秒数的十位的值
pop edx
mov ax, dx
xor dx, dx
mov bx, 10
div bx
push edx
mov bl, al
mov eax, 0x0046012c
mov cl, 7
call disp_letter_font
;显示秒数的个位的值
pop edx
mov bl, dl
cmp bl, 10
jb _adjust
mov bl, 0
_adjust:
mov eax, 0x00460134
mov cl, 7
call disp_letter_font
popad
ret
;-------------------------------------------------------------------------------
sys_get_seconds: ;获取系统已经走过的秒数
;输出:eax-系统已经经过的秒数
push ebx
push edx
xor edx, edx ;edx为被除数的高32位(共64位)
mov eax, [sys_click] ;系统tick值,eax为被除数的低32位
mov ebx, 100 ;系统一秒钟tick 100次
div ebx ;商在eax
pop edx
pop ebx
ret
;--------------------------------全局变量---------------------------------------
align 4
sys_click dd 0 ;时钟click
align 4
- 系统的简单注解
- 系统的简单注解
- 系统的简单注解
- 系统的简单注解
- 系统的简单注解
- 系统的简单注解
- 系统的简单注解
- 系统的简单注解
- 系统的简单注解
- 系统的简单注解
- 系统的简单注解
- 系统的简单注解
- 系统的简单注解
- 系统的简单注解
- 系统的简单注解
- 系统的简单注解
- 系统的简单注解
- 注解的简单示例
- Spring AOP之基本使用
- lwm2m协议
- Android自定义View入门之简单验证码控件
- 设计模式之原型模式
- 深入JVM锁机制
- 系统的简单注解
- java中Collections是由在 collection 上进行操作或返回 collection 的静态方法组成。
- poj-1018-Communication System
- js逻辑运算符——逻辑与&&、逻辑或||
- Swift之字符串(String)
- Spring transaction事务之roll back回滚: rollback-for
- NIHAO第一次写
- DUBBO总结之应用
- 技术学习网站和论坛