⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 screen.asm

📁 学分管理系统的分析
💻 ASM
字号:
include macro.lib
extrn  drawline:far ,rectangle:far,horizontal:far,vertical:far
public clearscreen_du,clearscreen_ud,clearscreen_lr,clearscreen_rl
public clearscreen_in,clearscreen_out,clearscreen_rw,clearscreen_dw
public clearscreen_rdw,clearscreen_mlr,clearscreen_mud
data   segment	para  'data'
x1   dw ?
y1   dw ?
x2   dw ?
y2   dw ?
num  dw 20
hth  dw	?
wth  dw	?
data   ends

code  segment  public  'code'
	assume ds:data, cs:code
.386
;====================================================

;入口参数:ax--y1,bx--x1,cx--y2,dx---x2

clearscreen_ud  proc  far
	push di
	push si
	push ds
	mov  di,  data
	mov  ds,  di
	
	mov  di,  cx
	sub  di,  ax
	inc  di
	
	mov  cx,  ax
	mov  si,  P_COPY
	mov  bp,  0h
		
again:	call drawline
	inc  ax
	inc  cx
	dec  num
	jnz  next
	delay  10
	mov  num , 20
next:   dec  di
	jnz  again
	
	pop  ds
	pop  si
	pop  di
	ret
clearscreen_ud  endp
;====================================================	
;入口参数:ax--y1,bx--x1,cx--y2,dx---x2

clearscreen_du  proc  far
	push di
	push si
	push ds
	mov  di,  data
	mov  ds,  di
	
	mov  di,  cx
	sub  di,  ax
	inc  di
	
	mov  ax,  cx
	mov  si,  P_COPY
	mov  bp,  0h
		
again:	call drawline
	dec  ax
	dec  cx
	dec  num
	jnz  next
	delay  10
	mov  num , 20
next:   dec  di
	jnz  again	
	
	pop  ds
	pop  si
	pop  di
	ret
clearscreen_du  endp
;====================================================	
;入口参数:ax--y1,bx--x1,cx--y2,dx---x2

clearscreen_lr  proc  far
	push di
	push si
	push ds
	mov  di,  data
	mov  ds,  di
	
	mov  di,  dx
	sub  di,  bx
	inc  di
	
	mov  dx,  bx
	mov  si,  P_COPY
	mov  bp,  0h
		
again:	call drawline
	inc  bx
	inc  dx
	dec  num
	jnz  next
	delay  10
	mov  num , 20
next:   dec  di
	jnz  again	
	
	pop  ds
	pop  si
	pop  di
	ret
clearscreen_lr  endp
;====================================================	

;入口参数:ax--y1,bx--x1,cx--y2,dx---x2

clearscreen_rl  proc  far
	push di
	push si
	push ds
	mov  di,  data
	mov  ds,  di
	
	mov  di,  dx
	sub  di,  bx
	inc  di
	
	mov  bx,  dx
	mov  si,  P_COPY
	mov  bp,  0h
		
again:	call drawline
	dec  dx
	dec  bx
	dec  num
	jnz  next
	delay  10
	mov  num , 20
next:   dec  di
	jnz  again	
	
	pop  ds
	pop  si
	pop  di
	ret
clearscreen_rl  endp
;====================================================	
;入口参数:ax--y1,bx--x1,cx--y2,dx---x2

clearscreen_in  proc  far
	push di
	push si
	push ds
	mov  di,  data
	mov  ds,  di
	mov  si,  P_COPY
	mov  bp,  0h
again:	call rectangle
	inc  bx
	inc  ax
	dec  dx
	dec  cx

	dec  num
	jnz  next
	delay 10
	mov  num,20
next:   cmp  ax,cx
	ja   exit
	cmp  bx,dx
	ja   exit
	jmp  again
exit:
	pop  ds
	pop  si
	pop  di
	ret
clearscreen_in  endp
;====================================================	
;入口参数:ax--y1,bx--x1,cx--y2,dx---x2

clearscreen_out  proc  far

	pusha
	push di
	push si
	push ds
	mov  di,  data
	mov  ds,  di
	mov  x1,  bx
	mov  y1,  ax
	mov  x2,  dx
	mov  y2,  cx
	
	sub  cx,  ax       ;高
	sub  dx,  bx       ;宽
	cmp  cx,  dx
	jle  next
	
	mov  bx,  x1       ;高长度大些
	mov  dx,  x2
	add  bx,  dx
	sar  bx,1
	mov  dx,  bx
	mov  di,  dx
	sub  di,  x1
	mov  ax,  y1
	mov  cx,  y2
	add  ax,  di
	sub  cx,  di
	jmp  connection
next:   mov  ax,  y1    ;宽长度大些
	mov  cx,  y2	
	add  ax,  cx
	sar  ax,  1
	mov  cx,  ax
	mov  di,  cx
	sub  di,  y1
	mov  bx,  x1
	mov  dx,  x2
	add  bx,  di
	sub  dx,  di
	
connection:  inc  di
	mov  bp, 0h


again:  call rectangle
        dec  ax
        dec  bx    
        inc  cx
        inc  dx
        dec  num
        jnz  next1
        delay 10
	mov  num,  20
next1:  dec  di
        jnz  again
	
exit:
	pop  ds
	pop  si
	pop  di
	popa
	ret

clearscreen_out	endp
;====================================================	
	
;入口参数:ax--y1,bx--x1,cx--y2,dx---x2

clearscreen_rw  proc  far
	push di
	push si
	push ds
	mov  di,  data
	mov  ds,  di
	mov  x1,  bx
	
	sub  cx,  ax
	inc  cx
	mov  di,  20
	mov  bp,  0h
	mov  si,  P_COPY
lopa:
        call vertical
	add  bx,  20
        cmp  bx,  dx
        jg   next
        jmp  lopa
next:	delay 10
	inc  x1
	mov  bx, x1
	dec  di
	jnz  lopa
	        
        pop  ds	
	pop  si
	pop  di
	ret
clearscreen_rw  endp
;====================================================	
	

;入口参数:ax--y1,bx--x1,cx--y2,dx---x2

clearscreen_dw  proc  far
	push di
	push si
	push ds
	mov  di,  data
	mov  ds,  di
	mov  y1,  ax
	mov  y2,  cx
	
	sub  dx,  bx
	inc  dx
	mov  cx,  dx
	
	mov  di,  20
	mov  bp,  0h
	mov  si,  P_COPY
lopa:
        call horizontal
	add  ax,  20
        cmp  ax,  y2
        jg   next
        jmp  lopa
next:	delay 10
	inc  y1
	mov  ax, y1
	dec  di
	jnz  lopa
	        
        pop  ds	
	pop  si
	pop  di
	ret
clearscreen_dw  endp
;====================================================	
;入口参数:ax--y1,bx--x1,cx--y2,dx---x2

clearscreen_rdw  proc  far
	push di
	push si
	push ds
	mov  di,  data
	mov  ds,  di
	mov  x1,  bx
	mov  y1,  ax
	mov  x2,  dx
	mov  y2,  cx
	
	sub  cx,  ax
	inc  cx
	mov  hth, cx
	sub  dx,  bx
	inc  dx
	mov  wth,   dx
	
	mov  di,  0
	mov  bp,  0h
	mov  si,  P_COPY
lop:	mov  cx,  hth
        mov  ax,  y1
	mov  bx,  x1
	add  bx,  di
lopa:   call vertical
	add  bx,  20
	cmp  bx,  x2
        jg   next0
        jmp  lopa
        
next0:	mov  cx,   wth
        mov  ax, y1
	mov  bx, x1
	add  ax, di
lopb:	call horizontal
	add  ax,  20
	cmp  ax,  y2
	jg  next1
	jmp  lopb
	             
next1:	
	delay 10
	inc  di
	cmp  di, 20
	jb  lop
	        
        pop  ds	
	pop  si
	pop  di
	ret
clearscreen_rdw  endp
;====================================================	
;入口参数:ax--y1,bx--x1,cx--y2,dx---x2
clearscreen_mlr  proc  far
	pusha
	push di
	push ds
	mov  di, data
	mov  ds, di
	
	mov  x1, bx
	mov  x2, dx

	mov  si, P_COPY
	mov  bp, 0h
	mov  di, 0

	sub  cx, ax
	inc  cx

	add  bx, dx
	sar  bx, 1
	mov  dx, bx
	inc  dx
lop:    cmp  bx, x1
	jl   next0	
	call vertical
	dec  bx
next0:  xchg bx,  dx
	cmp  bx,  x2
	jg   exit
	call vertical
	inc  bx
	xchg bx,  dx
	cmp  di, 10
	jne  next1
	delay 10
	mov  di, 0
next1:	
	inc  di
	jmp  lop
exit:   
        pop  ds
        pop  di
        popa
        ret
clearscreen_mlr endp       		

;====================================================	
;入口参数:ax--y1,bx--x1,cx--y2,dx---x2
clearscreen_mud  proc  far
	pusha
	push di
	push ds
	mov  di, data
	mov  ds, di
	
	mov  y1, ax
	mov  y2, cx
	mov  si, P_COPY
	mov  bp, 0h
	mov  di, 0
	
	add  ax, cx
	sar  ax, 1
	sub  dx, bx
	inc  dx
        mov  cx, dx
        
        mov  dx, ax
        inc  dx	
lop:    cmp  ax, y1
	jl   next0	
	call horizontal
	dec  ax
next0:  xchg ax,  dx
	cmp  ax,  y2
	jg   exit
	call horizontal
	inc  ax
	xchg ax,  dx
	cmp  di,  10
	jne  next1
	delay 10
	mov  di, 0
next1:	
	inc  di
	jmp  lop
exit:   
        pop  ds
        pop  di
        popa
        ret

clearscreen_mud endp
	
	

code   ends

       end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -