📄 3-4.asm
字号:
data segment
esc_key equ 1bh
left_key equ 4bh
right_key equ 4dh
contron_key equ 00h
win1_uc equ 10
win1_ur equ 5
win1_lc equ 30
win1_lr equ 15
win2_uc equ 50
win2_ur equ 5
win2_lc equ 70
win2_lr equ 15
win3_uc equ 15
win3_ur equ 18
win3_lc equ 65
win3_lr equ 22
dwx1 db 10
dwx2 db 70
dwx3 db 15
trag db 1
trag1 db 1
data ends
;--------------------------------clear screen-------------------------------------
clear_screen macro uc,ur,lc,lr
mov ah,6
mov al,0
mov bh,50h
mov ch,ur
mov cl,uc
mov dh,lr
mov dl,lc
int 10h
endm
;-------------------------init cursor------------------------------------
initcursor macro lr,uc
mov bh,0
mov ah,2
mov dh,lr
mov dl,uc
int 10h
endm
;------------------------scroll macro---------------------------------
scroll macro uc,ur,lc,lr
mov ah,6
mov al,1
mov ch,ur
mov cl,uc
mov dh,lr
mov dl,lc
mov bh,50h
int 10h
endm
;---------------------------read char-----------------------------
get_char macro
mov ah,7
int 21h
cmp trag1,0
jz contron
cmp al,esc_key
jz exit1
cmp al,contron_key
jz next8
cmp trag,0
jz win1_disp
jmp win2_disp
contron:
or trag1,1
cmp al,left_key
jz left
cmp al,right_key
jz right
left:
and trag,0
jmp next
right:
or trag,1
jmp next
exit1:
jmp near ptr exit
next8:
and trag1,0
jmp near ptr next
endm
;-----------------------------display macro-----------------------------------
display macro uc,ur,lc,lr,dwx,opr,nextt
mov di,ax
cmp dwx,lc
jbe nextt
scroll uc,ur,lc,lr
initcursor lr,uc
mov dwx,uc
nextt:
mov dh,lr
mov dl,dwx
mov bh,0
mov ah,2
int 10h
mov ax,di
mov dl,al
mov ah,2
int 21h
inc dwx
jmp opr
endm
;-------------------------------main program------+-------------------------
code segment
main proc far
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
clear_screen win1_uc,win1_ur,win1_lc,win1_lr
clear_screen win2_uc,win2_ur,win2_lc,win2_lr
clear_screen win3_uc,win3_ur,win3_lc,win3_lr
initcursor win2_lr,win2_uc
next:
get_char
win1_disp:
display win1_uc,win1_ur,win1_lc,win1_lr,dwx1,win3_disp,nextt1
win2_disp:
display win2_uc,win2_ur,win2_lc,win2_lr,dwx2,win3_disp,nextt2
win3_disp:
display win3_uc,win3_ur,win3_lc,win3_lr,dwx3,next,nextt3
exit:
mov ax,4c00h
int 21h
main endp
code ends
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -