系统的简单注解

来源:互联网 发布:嘉兴行知小学羽毛球 编辑:程序博客网 时间:2024/06/06 00:28


该进程在屏幕右下角快速闪烁不同颜色的矩形块。颜色的切换时间为100毫秒。


;===============================================================================
;=== 本程序为用户程序,在屏幕右下角快速闪烁不同颜色的矩形块                                                       ===
;===============================================================================   
;===============================================================================
;===                            该处开始用户代码                                                                                                ===
;===============================================================================
SECTION  core  vstart=0x0
     [bits 32]

     point_caller   dd 0x0                   ;偏移(不用)
                    dw 0x0                   ;选择子
     back_caller    dd 0x0                   ;偏移(不用)
                    dw 0x0                   ;选择子
     rect_caller    dd 0x0                   ;偏移(不用)
                    dw 0x0                   ;选择子
     cmd_caller     dd 0x0                   ;偏移(不用)
                    dw 0x0                   ;选择子
     win_caller     dd 0x0                   ;偏移(不用)
                    dw 0x0                   ;选择子
     res1_caller    dd 0x0                   ;偏移(不用)
                    dw 0x0                   ;选择子
     res2_caller    dd 0x0                   ;偏移(不用)
                    dw 0x0                   ;选择子
     res3_caller    dd 0x0                   ;偏移(不用)
                    dw 0x0                   ;选择子
    
     ;获取进程窗口的基本信息(左上角坐标和窗口长宽度)
     xor eax, eax                            ;eax-高16位为x的宽度,低16位为x的值
     xor ebx, ebx                            ;ebx-高16位为y的高度,低16位为y的值  
     call far [win_caller]      
    
     ;记录窗口坐标和宽高
     mov ecx, ebx
     shr ecx, 16
     mov [_y_len], ecx                        ;记录窗口高度
     and ebx, 0xffff
     mov [_y_base], ebx                       ;左上角y坐标
 
     mov ecx, eax
     shr ecx, 16
     mov [_x_len], ecx                        ;记录窗口宽度
     and eax, 0xffff
     mov [_x_base], eax                       ;左上角x坐标
 
     ;计算当前操作的坐标
     mov eax, [_x_base]
     mov ebx, [_x_len]
     shr ebx, 1
     add eax, ebx
     mov [_x_], eax
     mov eax, [_y_base]
     mov ebx, [_y_len]
     shr ebx, 1
     add eax, ebx 
     mov [_y_], eax

     ;窗的正中画一矩形
     mov eax, 8
     shl eax, 16
     mov ax, [_y_]
     mov ebx, 8
     shl ebx, 16 
     mov bx, [_x_]
     mov cl, 3
     call far [rect_caller]                  
 
_sleep:
     ;矩形消失
     mov eax, 8
     shl eax, 16
     mov ax, [_y_]
     mov ebx, 8
     shl ebx, 16 
     mov bx, [_x_]
     mov cl, [_color]
     call far [rect_caller]
  ;休眠100毫秒
     mov eax, 10
     call far [back_caller]
     mov cl, [_color]
     inc cl
     cmp cl, 15
     jna _again
     mov cl, 0
_again:
     mov [_color], cl
     jmp _sleep 

;-------------------------------------------------------------------------------
     _color  db 1,0,0,0
     _x_  dd 160                           ;x坐标
     _y_     dd 100                        ;y坐标
     _x_base dd 0x0                           ;窗口左上角x的值
     _y_base dd 0x0                           ;窗口左上角y的值 
     _x_len  dd 0x0                           ;窗口宽度
     _y_len  dd 0x0                           ;窗口高度
     _cmd    db 0,0,0,0
     _count  dd 0x0                           ;重绘的次数 
 
;-------------------------------------------------------------------------------
SECTION core_trail
;-------------------------------------------------------------------------------
core_end:

0 0
原创粉丝点击