📄 实验1.asm
字号:
.model small
.stack
.code
Esc_key equ 1bh
right equ 4bh
left equ 4dh
count db ?
save macro
push ax
push bx
push cx
push dx
endm
restore macro
pop dx
pop cx
pop bx
pop ax
endm
;programme clear_screen
clear_screen proc near
;save registers
save
;clear screen
mov ah,6
mov al,0
mov bh,7
mov bl,0
mov ch,0
mov cl,0
mov dh,24
mov dl,79
int 10h
;locate cursor
mov dx,0
mov ah,2
int 10h
;restore registers
restore
ret
clear_screen endp
win3 proc near
;
mov ah,3
int 10h
save
mov ah,2
mov dh,22
mov dl,count
mov bh,0
int 10h
;out char
mov dl,al
mov ah,2
int 21h
inc count
cmp count,65
jz scroll_up
jnz out_win
scroll_up:
mov ah,6
mov al,1
mov ch,18
mov cl,15
mov dh,22
mov dl,65
mov bh,7
int 10h
mov count,15
out_win:
;
restore
mov ah,2
int 10h
ret
win3 endp
win macro ulr,ulc,rdr,rdc,width,locate,get_char,jmp_win
mov count,15
locate:
mov ah,2
mov dh,rdr
mov dl,ulc
mov bh,0
int 10h
;get char fromkbd
mov cx,width
get_char:
mov ah,7
int 21h
cmp al,Esc_key
jz over
cmp al,right
jz jmp_win
cmp al,left
jz jmp_win
mov dl,al
mov ah,2
int 21h
save
call win3
restore
loop get_char
;scroll up
mov ah,6
mov al,1
mov ch,ulr
mov cl,ulc
mov dh,rdr
mov dl,rdc
mov bh,7
int 10h
jmp locate
endm
main proc near
call clear_screen
win1:
win 5,10,15,30,20,locate1,get_char1,win2
win2:
win 5,50,15,70,20,locate2,get_char2,win1
over:
call clear_screen
mov ah,4ch
int 21h
main endp
end main
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -