📄 gfx.s
字号:
movw (%esi), %cx movw %cx, (%edi)nopixel: addl $2, %esi addl $2, %edi popl %ecx decl %ecx jnz innerl2 addl %eax, %edi addl %ebx, %esi decl %edx jnz outerl24: popl %esi popl %edi DelStack ret.globl SC_Trp_11SC_Trp_11: CrtStack pushl %edi pushl %esi //x < lx ? movl clp_lx, %eax cmpl %eax, 16(%ebp) jge 0f movl 16(%ebp), %ebx subl %ebx, %eax subl %eax, 40(%ebp) addl %eax, 32(%ebp) movl clp_lx, %eax movl %eax, 16(%ebp)0: //y < ty ? movl clp_ty, %eax cmp %eax, 20(%ebp) jge 1f movl 20(%ebp), %ebx subl %ebx, %eax subl %eax, 44(%ebp) addl %eax, 36(%ebp) movl clp_ty, %eax movl %eax, 20(%ebp)1: //x > rx movl clp_rx, %eax movl 16(%ebp), %ebx addl 40(%ebp), %ebx subl $1, %ebx cmp %eax, %ebx jle 2f movl clp_rx, %ebx movl 16(%ebp), %eax subl %eax, %ebx addl $1, %ebx movl %ebx, 40(%ebp)2: //y > ty movl clp_by, %eax movl 20(%ebp), %ebx addl 44(%ebp), %ebx subl $1, %ebx cmp %eax, %ebx jle 3f movl clp_by, %ebx movl 20(%ebp), %eax subl %eax, %ebx addl $1, %ebx movl %ebx, 44(%ebp)3: //valid w? movl 40(%ebp), %eax cmpl $0, %eax jle 4f //valid h? movl 44(%ebp), %eax cmpl $0, %eax jle 4f xorl %edi, %edi xorl %esi, %esi xorl %eax, %eax //esi source movl 36(%ebp), %eax //sy mull 28(%ebp) //dw addl 32(%ebp), %eax //sx shll $1, %eax addl 24(%ebp), %eax movl %eax, %esi //source offset in esi //edi destination pushl %ds popl %es movl 20(%ebp), %eax mull 12(%ebp) addl 16(%ebp), %eax shll $1, %eax addl 8(%ebp), %eax movl %eax, %edi //dest offset in edi movl 44(%ebp), %edxouterl: movl 40(%ebp), %ecxinnerl: movw (%esi), %bx cmpw $0, %bx jz 7f movl (%esi), %eax andl rMask, %eax movl (%edi), %ebx andl rMask, %ebx addl %ebx, %eax shrl $1, %eax andl rMask, %eax pushl %eax movl (%esi), %eax andl gMask, %eax movl (%edi), %ebx andl gMask, %ebx addl %ebx, %eax shrl $1, %eax andl gMask, %eax pushl %eax movl (%esi), %eax andl bMask, %eax movl (%edi), %ebx andl bMask, %ebx addl %ebx, %eax shrl $1, %eax andl bMask, %eax popl %ebx orl %ebx, %eax popl %ebx orl %ebx, %eax movw %ax, (%edi)7: addl $2, %esi addl $2, %edi decl %ecx jnz innerl movl 12(%ebp), %ebx subl 40(%ebp), %ebx shll $1, %ebx addl %ebx, %edi movl 28(%ebp), %ebx subl 40(%ebp), %ebx shll $1, %ebx addl %ebx, %esi decl %edx jnz outerl4: popl %esi popl %edi DelStack ret.globl SC_Trp_XSC_Trp_X: CrtStack pushl %edi pushl %esi //x < lx ? movl clp_lx, %eax cmpl %eax, 16(%ebp) jge 0f movl 16(%ebp), %ebx subl %ebx, %eax subl %eax, 40(%ebp) addl %eax, 32(%ebp) movl clp_lx, %eax movl %eax, 16(%ebp)0: //y < ty ? movl clp_ty, %eax cmp %eax, 20(%ebp) jge 1f movl 20(%ebp), %ebx subl %ebx, %eax subl %eax, 44(%ebp) addl %eax, 36(%ebp) movl clp_ty, %eax movl %eax, 20(%ebp)1: //x > rx movl clp_rx, %eax movl 16(%ebp), %ebx addl 40(%ebp), %ebx subl $1, %ebx cmp %eax, %ebx jle 2f movl clp_rx, %ebx movl 16(%ebp), %eax subl %eax, %ebx addl $1, %ebx movl %ebx, 40(%ebp)2: //y > ty movl clp_by, %eax movl 20(%ebp), %ebx addl 44(%ebp), %ebx subl $1, %ebx cmp %eax, %ebx jle 3f movl clp_by, %ebx movl 20(%ebp), %eax subl %eax, %ebx addl $1, %ebx movl %ebx, 44(%ebp)3: //valid w? movl 40(%ebp), %eax cmpl $0, %eax jle 4f //valid h? movl 44(%ebp), %eax cmpl $0, %eax jle 4f xorl %edi, %edi xorl %esi, %esi xorl %eax, %eax //esi source movl 36(%ebp), %eax //sy mull 28(%ebp) //dw addl 32(%ebp), %eax //sx shll $1, %eax addl 24(%ebp), %eax movl %eax, %esi //source offset in esi //edi destination pushl %ds popl %es movl 20(%ebp), %eax mull 12(%ebp) addl 16(%ebp), %eax shll $1, %eax addl 8(%ebp), %eax movl %eax, %edi //dest offset in edi movl 44(%ebp), %edxouterl4: movl 40(%ebp), %ecx pushl %edxinnerl4: pushl %ecx movw (%esi), %bx cmpw $0, %bx jz 7f movl (%esi), %eax andl rMask, %eax movb rlShft, %cl shrl %cl, %eax mull 48(%ebp) shll %cl, %eax pushl %eax //relative red source part movl (%edi), %eax andl rMask, %eax shrl %cl, %eax movl $100, %ebx subl 48(%ebp), %ebx mull %ebx shll %cl, %eax //relative green dest part popl %ebx addl %ebx, %eax movl $100, %ebx divl %ebx andl rMask, %eax pushl %eax movl (%esi), %eax andl gMask, %eax movb glShft, %cl shrl %cl, %eax mull 48(%ebp) shll %cl, %eax pushl %eax //relative red source part movl (%edi), %eax andl gMask, %eax shrl %cl, %eax movl $100, %ebx subl 48(%ebp), %ebx mull %ebx shll %cl, %eax //relative green dest part popl %ebx addl %ebx, %eax movl $100, %ebx divl %ebx andl gMask, %eax pushl %eax movl (%esi), %eax andl bMask, %eax movb blShft, %cl shrl %cl, %eax mull 48(%ebp) shll %cl, %eax pushl %eax //relative blue source part movl (%edi), %eax andl bMask, %eax shrl %cl, %eax movl $100, %ebx subl 48(%ebp), %ebx mull %ebx shll %cl, %eax //relative blue dest part popl %ebx addl %ebx, %eax movl $100, %ebx divl %ebx andl bMask, %eax popl %ebx orl %ebx, %eax popl %ebx orl %ebx, %eax movw %ax, (%edi)7: addl $2, %esi addl $2, %edi popl %ecx decl %ecx jnz innerl4 popl %edx movl 12(%ebp), %ebx subl 40(%ebp), %ebx shll $1, %ebx addl %ebx, %edi movl 28(%ebp), %ebx subl 40(%ebp), %ebx shll $1, %ebx addl %ebx, %esi decl %edx jnz outerl44: popl %esi popl %edi DelStack ret.globl SC_Clr_11SC_Clr_11: CrtStack pushl %edi pushl %esi //x < lx ? movl clp_lx, %eax cmpl %eax, 16(%ebp) jge 0f movl 16(%ebp), %ebx subl %ebx, %eax subl %eax, 40(%ebp) addl %eax, 32(%ebp) movl clp_lx, %eax movl %eax, 16(%ebp)0: //y < ty ? movl clp_ty, %eax cmp %eax, 20(%ebp) jge 1f movl 20(%ebp), %ebx subl %ebx, %eax subl %eax, 44(%ebp) addl %eax, 36(%ebp) movl clp_ty, %eax movl %eax, 20(%ebp)1: //x > rx movl clp_rx, %eax movl 16(%ebp), %ebx addl 40(%ebp), %ebx subl $1, %ebx cmp %eax, %ebx jle 2f movl clp_rx, %ebx movl 16(%ebp), %eax subl %eax, %ebx addl $1, %ebx movl %ebx, 40(%ebp)2: //y > ty movl clp_by, %eax movl 20(%ebp), %ebx addl 44(%ebp), %ebx subl $1, %ebx cmp %eax, %ebx jle 3f movl clp_by, %ebx movl 20(%ebp), %eax subl %eax, %ebx addl $1, %ebx movl %ebx, 44(%ebp)3: //valid w? movl 40(%ebp), %eax cmpl $0, %eax jle 4f //valid h? movl 44(%ebp), %eax cmpl $0, %eax jle 4f xorl %edi, %edi xorl %esi, %esi xorl %eax, %eax //esi source movl 36(%ebp), %eax //sy mull 28(%ebp) //dw addl 32(%ebp), %eax //sx shll $1, %eax addl 24(%ebp), %eax movl %eax, %esi //source offset in esi //edi destination pushl %ds popl %es movl 20(%ebp), %eax mull 12(%ebp) addl 16(%ebp), %eax shll $1, %eax addl 8(%ebp), %eax movl %eax, %edi //dest offset in edi movl 44(%ebp), %edx //heightouterl7: movl 40(%ebp), %ecx //width pushl %edxinnerl7: pushl %ecx movw (%esi), %bx cmpw $0, %bx jz 7f xor %ebx, %ebx movb 46(%ebp), %bl movb rrShft, %cl shrb %cl, %bl movb rlShft, %cl shll %cl, %ebx //relative red sourve value movl (%edi), %eax andl rMask, %eax addl %ebx, %eax shrl $1, %eax andl rMask, %eax pushl %eax xor %ebx, %ebx movb 45(%ebp), %bl movb grShft, %cl shrb %cl, %bl movb glShft, %cl shll %cl, %ebx //relative green sourve value movl (%edi), %eax andl gMask, %eax addl %ebx, %eax shrl $1, %eax andl gMask, %eax pushl %eax xor %ebx, %ebx movb 44(%ebp), %bl movb brShft, %cl shrb %cl, %bl movb blShft, %cl shll %cl, %ebx //relative blue sourve value movl (%edi), %eax andl bMask, %eax addl %ebx, %eax shrl $1, %eax andl bMask, %eax popl %ebx orl %ebx, %eax popl %ebx orl %ebx, %eax movw %ax, (%edi)7: addl $2, %edi addl $2, %esi popl %ecx decl %ecx jnz innerl7 movl 28(%ebp), %eax subl 40(%ebp), %eax shll $1, %eax addl %eax, %esi movl 12(%ebp), %ebx subl 40(%ebp), %ebx shll $1, %ebx addl %ebx, %edi popl %edx decl %edx jnz outerl74: popl %esi popl %edi DelStack ret.globl SC_Clr_XSC_Clr_X: CrtStack pushl %edi pushl %esi //x < lx ? movl clp_lx, %eax cmpl %eax, 16(%ebp) jge 0f movl 16(%ebp), %ebx subl %ebx, %eax subl %eax, 40(%ebp) addl %eax, 32(%ebp) movl clp_lx, %eax movl %eax, 16(%ebp)0: //y < ty ? movl clp_ty, %eax cmp %eax, 20(%ebp) jge 1f movl 20(%ebp), %ebx subl %ebx, %eax subl %eax, 44(%ebp) addl %eax, 36(%ebp) movl clp_ty, %eax movl %eax, 20(%ebp)1: //x > rx movl clp_rx, %eax movl 16(%ebp), %ebx addl 40(%ebp), %ebx subl $1, %ebx cmp %eax, %ebx jle 2f movl clp_rx, %ebx movl 16(%ebp), %eax subl %eax, %ebx addl $1, %ebx movl %ebx, 40(%ebp)2: //y > ty movl clp_by, %eax movl 20(%ebp), %ebx addl 44(%ebp), %ebx subl $1, %ebx cmp %eax, %ebx jle 3f movl clp_by, %ebx movl 20(%ebp), %eax subl %eax, %ebx addl $1, %ebx movl %ebx, 44(%ebp)3: //valid w? movl 40(%ebp), %eax cmpl $0, %eax jle 4f //valid h? movl 44(%ebp), %eax cmpl $0, %eax jle 4f xorl %edi, %edi xorl %esi, %esi xorl %eax, %eax //esi source movl 36(%ebp), %eax //sy mull 28(%ebp) //dw addl 32(%ebp), %eax //sx shll $1, %eax addl 24(%ebp), %eax movl %eax, %esi //source offset in esi //edi destination pushl %ds popl %es movl 20(%ebp), %eax mull 12(%ebp) addl 16(%ebp), %eax shll $1, %eax addl 8(%ebp), %eax movl %eax, %edi //dest offset in edi movl 44(%ebp), %edx //heightouterl6: movl 40(%ebp), %ecx //width pushl %edxinnerl6: pushl %ecx movw (%esi), %bx cmpw $0, %bx jz 7f xor %eax, %eax movb 50(%ebp), %al movb rrShft, %cl shrb %cl, %al mull 52(%ebp) movb rlShft, %cl shll %cl, %eax pushl %eax //relative red source part movl (%edi), %eax andl rMask, %eax shrl %cl, %eax movl $100, %ebx subl 52(%ebp), %ebx mull %ebx shll %cl, %eax //relative red dest part popl %ebx addl %ebx, %eax movl $100, %ebx divl %ebx andl rMask, %eax pushl %eax xor %eax, %eax movb 49(%ebp), %al movb grShft, %cl shrb %cl, %al mull 52(%ebp) movb glShft, %cl shll %cl, %eax pushl %eax //relative green source part movl (%edi), %eax andl gMask, %eax shrl %cl, %eax movl $100, %ebx subl 52(%ebp), %ebx mull %ebx shll %cl, %eax //relative green dest part popl %ebx addl %ebx, %eax movl $100, %ebx divl %ebx andl gMask, %eax pushl %eax xor %eax, %eax movb 48(%ebp), %al movb brShft, %cl shrb %cl, %al mull 52(%ebp) movb blShft, %cl shll %cl, %eax pushl %eax //relative blue source part movl (%edi), %eax andl bMask, %eax shrl %cl, %eax movl $100, %ebx subl 52(%ebp), %ebx mull %ebx shll %cl, %eax //relative blue dest part popl %ebx addl %ebx, %eax movl $100, %ebx divl %ebx andl bMask, %eax popl %ebx orl %ebx, %eax popl %ebx orl %ebx, %eax movw %ax, (%edi)7: addl $2, %edi addl $2, %esi popl %ecx decl %ecx jnz innerl6 movl 28(%ebp), %eax subl 40(%ebp), %eax shll $1, %eax addl %eax, %esi movl 12(%ebp), %ebx subl 40(%ebp), %ebx shll $1, %ebx addl %ebx, %edi popl %edx decl %edx jnz outerl64: popl %esi popl %edi DelStack ret.globl Gfx_SetClipRgnGfx_SetClipRgn: CrtStack movl 8(%ebp), %eax movl %eax, clp_lx //left x movl 12(%ebp), %eax movl %eax, clp_ty //top y movl 8(%ebp), %eax addl 16(%ebp), %eax subl $1, %eax movl %eax, clp_rx //right x movl 12(%ebp), %eax addl 20(%ebp), %eax subl $1, %eax movl %eax, clp_by //bottom y DelStack ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -