📄 screen.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 + -